IVMS101 Names
Explains how to enter and verify names
Notes
❗️CODE uses the IVMS 101 standard for exchanging personal information related to virtual asset transactions.
❗️For the JSON schema and examples, please refer to this link.
❗️For both 'naturalPerson' and 'legalPerson', a legal name must be used.
❗️For 'naturalPerson', it is essential to separate the first name and last name.
❗️Field names should be written in camelCase, starting with a lowercase letter. However, the objects 'Originator', 'Beneficiary', 'OriginatorVASP', and 'BeneficiaryVASP' should be written in PascalCase.
❗️The 'primaryIdentifier' field and value must always be present, while the 'secondaryIdentifier' field must always be present but its value can be blank.
❗️All values are case-insensitive unless otherwise specified.
❗️When validating names, spaces should be removed before validation.
❗️All field values must always be represented as UTF-8 encoded strings (including boolean, integer, float, etc.).
❗️Unless otherwise permitted, English notation is required for all field values.
❗️If you need to convert Korean names to English notation, please refer to the Korean Romanization guidelines.
Separating the First Name & Last Name
Since the components and order of names vary by country, VASPs (Virtual Asset Service Providers) often have different verification policies. Therefore, separating the surname and given name allows for flexibility in combining them in different orders, which can improve verification accuracy. If the surname and given name are treated as a single field, it becomes difficult to verify the name in cases where the order differs, as in the example above.
Therefore, if you are using an external KYC solution, it is recommended to verify how the user's name data is being handled, ensure that the surname and given name are separated, and, if applicable, also store the user's Local name.
Name Notation as an Originating VASP
Natural Person
1. Language Rule
- Enter 'nameIdentifier' in English.
- If the beneficiary's name is in Korean(other than English) enter the name in the 'localNameIdentifier' element. However, even in this case, it is recommended to provide a 'nameIdentifier' with a legal English name.
- If there is no English name, enter "" for 'nameIdentifier' as below.
{ "name":{ "nameIdentifier":[ { "primaryIdentifier":"", "secondaryIdentifier":"", "nameIdentifierType":"LEGL" } ], "localNameIdentifier":[ { "primaryIdentifier":"로버트 반스", "secondaryIdentifier":"", "nameIdentifierType":"LEGL" } ] } }
2. If first name and last name can be separated
- Enter the last name in 'primaryIdentifier'.
- Enter the first name in 'secondaryIdentifier'.
3. If first name and last name cannot be separated
- Enter the full name in 'primaryIdentifier' based on VASP DB. For English, enter the name in the order of first name and last name. For Korean, enter the name in the order of last name and first name. If you cannot identify first name and last name, then enter the same value as the value in the DB.
- Do not enter anything in 'secondaryIdentifier'.
Legal Person
For legal entities, it is necessary to provide both the entity's name and the name of its representative(The CEO). This requirement applies to both the sending and receiving of virtual assets.
The IVMS101 standard does not include a dedicated element for the representative's information within the 'legalPerson'. Therefore, the representative's information should be recorded as follows:
- The 'originatorPersons' or 'beneficiaryPersons' fields are arrays of the Person type. The first element of the array must always contain the information of the legal person.
- From the second element onwards, enter the personal information of the representative ('naturalPerson').
- Even if there are multiple representatives, only the information of one representative should be entered.
Verifying Names as an Beneficiary VASP
Comparing Natural Person Names
When verifying an individual's name, both the 'nameIdentifier' and 'localNameIdentifier' objects must be validated. First, compare the 'nameIdentifier'. If it does not match, then compare the 'localNameIdentifier'.
※Note: The 'localNameIdentifier' may contain user information, so there could be cases where the 'nameIdentifier' is blank.
The verifying VASP queries the user information in its database based on the wallet address provided in the request and compares it with the name of the actual owner of that address.
For accurate comparison, combining the 'primaryIdentifier' and 'secondaryIdentifier' (first name and last name) and comparing all possible combinations are recommended. In some cases, the counterpart VASP may not separate the name into first name and last name, and might send the entire name in the 'primaryIdentifier'. In this scenario, since the counterpart's data will not change regardless of the order, 'we' should separate the user's name into first name and last name and compare it in different orders. This comparison should be performed as a single UTF-8 string, ignoring spaces (' ') and case differences.
※If the names are not separated, assume the order is surname first and given name second for Korean names, and given name first and surname second for English names.
Comparing Legal Person Names
The originating VASP sends both the legal entity's name and the name of one representative. Therefore, the beneficiary VASP must compare both the legal entity's name and the individual's name, ensuring that both match.
The legal entity's name should be entered as it appears in official registration. Using a service name or any other name might result in verification(A legal name mismatch stored in beneficiary's database can lead to rejection). In case of failure, adding a process to remove specific strings like "Inc." or "Ltd." and retry verification is recommended.
Process of comparing the representative's name is just the same as comparing natural person's name.
Updated about 2 months ago