IVMS-101: What information should I bring?
The payload to be encrypted should look like below, the ivms101 payload is as a child inside the key name “ivms101”: { … }.
{
"ivms101": {
//...
}
}
Where the required information depends on Legal Person or Natural Person to make a transaction, the following structure may help you to fill the info.
{
"ivms101": {
"originator": {
"originatorPersons": [
// LegalPerson or NaturalPerson
],
"accountNumber": ["ACCOUNT NUMBER"]
},
"beneficiary": {
"beneficiaryPersons": [
// LegalPerson or NaturalPerson
],
"accountNumber": ["ACCOUNT NUMBER"]
},
"originatingVASP": {
"legalPerson": {
// LegalPerson }
},
"beneficiaryVASP": {
"legalPerson": {
// LegalPerson }
}
}
// option: transferPath (IntermediaryVasp)
// option: payloadMetadata (TransliterationMethodCode)
}
}
}
The full example could reference below:
{
"ivms101": {
// required
"Originator": {
"originatorPersons": [
{
// required: naturalPerson or legalPerson
"naturalPerson": {
"name": {
// nameIdentifier, localNameIdentifier, phoneticNameIdentifier
"nameIdentifier": [
{
"primaryIdentifier": "Satoshi",
"secondaryIdentifier": "Nakamoto",
"nameIdentifierType": "LEGL" // Usually Fixed as LEGL // for natural person: ALIA, BIRT, MAID, LEGL, MISC
}
]
},
// required
"geographicAddress": [
{
// required:
"addressType": "GEOG", // HOME, BIZZ, GEOG
"townName": "VirtualTown",
"addressLine": ["Line489", "Line762"],
"country": "US", // ISO-3166-1 alpha-2 codes
// optional:
"department": "OfficeOfTheCEO",
"subDepartment": "InternalAudit8562",
"streetName": "SiliconAlley65",
"buildingNumber": "J4H6",
"buildingName": "VirtualTower200",
"floor": "Floor94",
"postBox": "CB842",
"room": "BionicRoom38",
"postCode": "TT7643",
"townLocationName": "E-Sector",
"districtName": "BlockchainDistrict",
"countrySubDivision": "E-Province"
}
],
// required
"nationalIdentification": {
"nationalIdentifier": "024181096", // ^[a-zA-Z0-9' ]{1,35}$
"nationalIdentifierType": "RAID", // ISO20022, ARNU, CCPT, RAID, DRLC, FIIN, TXID, SOCS, IDCD, LEIX, MISC
"registrationAuthority": "RA000589" // ^RA([0-9]{6})$
},
// optional (?)
"customerIdentification": "0xA3a8C1C840A8C2049472065b2664E01E0e8A8b67",
// optional (?)
"dateAndPlaceOfBirth": {
"dateOfBirth": "1986-11-21", // ISO 8601, YYYY-MM-DD
"placeOfBirth": "New York City" // ^[a-zA-Z0-9' ]{1,70}$
},
// required
"countryOfResidence": "US", // ISO-3166-1 alpha-2 codes
// optional (?)
"nationality": "US" // ISO-3166-1 alpha-2 codes
}
}
],
// required - user wallet address
"accountNumber": [
"1HB5XMLmzFVj8ALj6mfBsbifRoD4miY36v" // Max 100 text, ^[a-zA-Z0-9' ]{1,100}$
]
},
// required
"Beneficiary": {
"beneficiaryPersons": [
{
// required: naturalPerson or legalPerson
// NOTE: if you send to legalPerson, please fill [{naturalPerson:{}},{legalPerson:{}}] both, the natural person
"legalPerson": {
// required
"name": {
// nameIdentifier, localNameIdentifier, phoneticNameIdentifier
"nameIdentifier": [
{
"legalPersonName": "Paycase Inc",
"legalPersonNameIdentifierType": "LEGL" // Usually Fixed as LEGL // for legal person: LEGL, SHRT, TRAD
}
]
},
// required
"geographicAddress": [
// SAME AS OTHER geographicAddress
],
// required
"nationalIdentification": {
"nationalIdentifier": "335800HXPOIUDJ9T5R34", // ^[a-zA-Z0-9' ]{1,35}$
"nationalIdentifierType": "LEIX"// ISO20022, ARNU, CCPT, RAID, DRLC, FIIN, TXID, SOCS, IDCD, LEIX, MISC
},
// optional (?)
"customerIdentification": "0x3E9181d09E56AdEF3bbc8BAb664Ce6B268Bf6e62",
// required
"countryOfRegistration": "CA" // ISO-3166-1 alpha-2 codes
}
}
],
// required - user wallet address
"accountNumber": [
"1BVMFfPXJy2TY1x6wm8gow3N5Amw4Etm5h" // Max 100 text, ^[a-zA-Z0-9' ]{1,100}$
]
},
// required
"OriginatingVASP": {
"legalPerson": {
"name": {
"nameIdentifier": [
{
"legalPersonName": "VASP A",
"legalPersonNameIdentifierType": "LEGL" // Usually Fixed as LEGL // for legal person: LEGL, SHRT, TRAD
}
]
},
// required
"geographicAddress": [
// SAME AS OTHER geographicAddress
],
// required
"nationalIdentification": {
"nationalIdentifier": "335800HXPOIUDJ9T5R34", // ^[a-zA-Z0-9' ]{1,35}$
"nationalIdentifierType": "LEIX"// ISO20022, ARNU, CCPT, RAID, DRLC, FIIN, TXID, SOCS, IDCD, LEIX, MISC,
"countryOfIssue":"US", // two alphabet country code
"registrationAuthority": "GLEIF Code (If exists)"
}
// vasp as legal person does not have customerIdentification
}
},
// required
"BeneficiaryVASP": {
"legalPerson": {
"name": {
"nameIdentifier": [
{
"legalPersonName": "VASP B",
"legalPersonNameIdentifierType": "LEGL" // Usually Fixed as LEGL // for legal person: LEGL, SHRT, TRAD
}
]
},
"geographicAddress": [
// SAME AS OTHER geographicAddress
],
// required
"nationalIdentification": {
"nationalIdentifier": "335800HXPOIUDJ9T5R34", // ^[a-zA-Z0-9' ]{1,35}$
"nationalIdentifierType": "LEIX"// ISO20022, ARNU, CCPT, RAID, DRLC, FIIN, TXID, SOCS, IDCD, LEIX, MISC,
"countryOfIssue":"US", // two alphabet country code
"registrationAuthority": "GLEIF Code (If exists)"
}
// vasp as legal person does not have customerIdentification
}
}
}
}
- The
nameIdentifierType
is commonly set to 'LEGL'. primaryIdentifier
is lastName,secondaryIdentifier
is firstName.- For
primaryIdentifier
,secondaryIdentifier
. If the name cannot be separated, please fill firstName and lastName together (1. firstName 2. lastName). - firstName: givenName, lastName: familyName.
- For the current version of IVMS specification, only the root level has first capital naming (e.g: Beneficiary, BeneficiaryVASP, Originator, OriginatingVASP).
In addition:
nameIdentifierType
(naturalPersonNameType
)
- ALIA (Alias name): A name other than the legal name by which a natural person is also known.
- BIRT (Name at birth): The name given to a natural person at birth.
- MAID (Maiden name): The original name of a natural person who has changed their name after marriage.
- LEGL (Legal name): The name that identifies a natural person for legal, official or administrative purposes.
- MISC (Unspecified): A name by which a natural person may be known but which cannot otherwise be categorized or the category of which the sender is unable to determine.
legalPersonNameIdentifierType
(legalPersonNameType
)
- LEGL (Legal name): Official name under which an organisation is registered.
- SHRT (Short name): Specifies the short name of the organisation.
- TRAD (Trading name): Name used by a business for commercial purposes, although its registered legal name, used for contracts and other formal situations, may be another.
nationalIdentifierType
- ARNU: Alien registration number (a number issued by the government to foreigners to identify them)
- CCPT: passport number
- RAID: (body corporate only) Business registration number provided by the authority
- DRLC: Driver's License Number
- FIIN: Foreign Investor Number (number assigned to foreign investors)
- TXID: Number given by the tax authority
- SOCS: Social Security Number or National Identification Number
- IDCD: Identity card number assigned by a state agency
- LEIX: (Legal entities only) Global legal entity identification number, LEI code assigned in accordance with the ISO 17442 standard
- MISC: ID card number from other countries
Others
Other fields for more over,these are not necessary for the payloads:
localNameIdentifier
: for non-English name of identity person, full name separated into primary and secondary identifier using local characters.{
"primaryIdentifier": "김",
"secondaryIdentifier": "김지수",
"nameIdentifierType": "LEGL" // IVMS101: ALIA, BIRT, MAID, LEGL, MISC
}phoneticNameIdentifier
: Alternate representation of a name that corresponds to the manner the name is pronounced.{
"primaryIdentifier": "Kim",
"secondaryIdentifier": "Jisoo",
"nameIdentifierType": "LEGL" // IVMS101: ALIA, BIRT, MAID, LEGL, MISC
}transferPath
(IntermediaryVasp): The transfer path refers to the intermediary VASP(s) participating in a serial chain that receive(s) and retransmit(s) a VA transfer on behalf of the originating VASP and the beneficiary VASP, or another intermediary VASP, together with their corresponding sequence number.{
"transferPath": [
// IntermediaryVasp
{
"intermediaryVasp": {
// legalPerson of vasp },
"sequence": 0 // count from 0 to 9007199254740991L
}
}
]
}payloadMetadata
(TransliterationMethodCode): Data describing the contents of the payload. TransliterationMethodCode is the method used to map from a national system of writing to Latin script.{
"payloadMetadata": [
"kore" // ISO 15924, arab, aran, armn, cyrl, deva, geor, grek, hani, hebr, kana, kore, thai, othr
]
}
For ISO 15924, the available enum is: arab, aran, armn, cyrl, deva, geor, grek, hani, hebr, kana, kore, thai, othr.
- arab, Arabic (Arabic language) ISO 233-2:1993
- aran, Arabic (Persian language) ISO 233-3:1999
- armn, Armenian ISO 9985:1996
- cyrl, Cyrillic ISO 9:1995
- deva, Devanagari & related Indic ISO 15919:2001
- geor, Georgian ISO 9984:1996
- grek, Greek ISO 843:1997
- hani, Han (Hanzi, Kanji, Hanja) ISO 7098:2015
- hebr, Hebrew ISO 259-2:1994
- kana, Kana ISO 3602:1989
- kore, Korean Revised Romanization of Korean
- thai, Thai ISO 11940-2:2007
- othr, Script other than those listed above Unspecified
For example: 한국어 (hangug-eo), the method is "kore".