# 04-IVMS101-part2



04-IVMS101-part2 [#04-ivms101-part2]

3\. IVMS101 Required Fields [#3-ivms101-required-fields]

<Mermaid
  chart="graph LR
    %% Root Node
    root(( ))

    %% Originator Branch
    root --- Originator[&#x22;Originator&#x22;]
    Originator --- originatorPersons[&#x22;originatorPersons&#x22;]
    originatorPersons --- OP_NP[&#x22;naturalPerson&#x22;]
    
    OP_NP --- OP_CI[&#x22;customerIdentification: 'customernumber in Max 50 Text'&#x22;]
    OP_NP --- OP_COR[&#x22;countryOfResidence: 'US'&#x22;]
    
    OP_NP --- OP_NAME[&#x22;name&#x22;]
    OP_NAME --- OP_NI[&#x22;nameIdentifier&#x22;]
    OP_NI --- OP_NIV[&#x22;primaryIdentifier: 'Barnes'<br/>secondaryIdentifier: 'Robert'<br/>nameIdentifierType: 'LEGL'&#x22;]
    OP_NAME --- OP_LNI[&#x22;localNameIdentifier&#x22;]
    OP_LNI --- OP_LNIV[&#x22;primaryIdentifier: '바네스 번즈'<br/>secondaryIdentifier: ''<br/>nameIdentifierType: 'LEGL'&#x22;]
    
    OP_NP --- OP_DAPB[&#x22;dateAndPlaceOfBirth&#x22;]
    OP_DAPB --- OP_DAPBV[&#x22;dateOfBirth: '1990-01-01'<br/>placeOfBirth: 'LA'&#x22;]
    
    Originator --- OP_AN[&#x22;accountNumber&#x22;]
    OP_AN --- OP_ANV[&#x22;rj8nOkwt1ypcfkyZrtorzZw8hYabNMYKz:tag or memo&#x22;]

    %% Beneficiary Branch
    root --- Beneficiary[&#x22;Beneficiary&#x22;]
    Beneficiary --- beneficiaryPersons[&#x22;beneficiaryPersons&#x22;]
    beneficiaryPersons --- BP_NP[&#x22;naturalPerson&#x22;]
    
    BP_NP --- BP_CI[&#x22;customerIdentification: 'customernumber in Max 50 Text'&#x22;]
    BP_NP --- BP_COR[&#x22;countryOfResidence: 'US'&#x22;]
    
    BP_NP --- BP_NAME[&#x22;name&#x22;]
    BP_NAME --- BP_NI[&#x22;nameIdentifier&#x22;]
    BP_NI --- BP_NIV[&#x22;primaryIdentifier: 'Smith'<br/>secondaryIdentifier: 'Alice'<br/>nameIdentifierType: 'LEGL'&#x22;]
    BP_NAME --- BP_LNI[&#x22;localNameIdentifier&#x22;]
    BP_LNI --- BP_LNIV[&#x22;primaryIdentifier: '엘리스 스미스'<br/>secondaryIdentifier: ''<br/>nameIdentifierType: 'LEGL'&#x22;]
    
    BP_NP --- BP_DAPB[&#x22;dateAndPlaceOfBirth&#x22;]
    BP_DAPB --- BP_DAPBV[&#x22;dateOfBirth: '1990-01-01'<br/>placeOfBirth: 'LA'&#x22;]
    
    Beneficiary --- BP_AN[&#x22;accountNumber&#x22;]
    BP_AN --- BP_ANV[&#x22;HPxPau6whpf18R2V4iZ7NQ8xXnscuYYCVh6:tag or memo&#x22;]

    %% OriginatingVASP Branch
    root --- OriginatingVASP[&#x22;OriginatingVASP&#x22;]
    OriginatingVASP --- originatingVASP_inner[&#x22;originatingVASP&#x22;]
    originatingVASP_inner --- OV_LP[&#x22;legalPerson&#x22;]
    
    OV_LP --- OV_COR[&#x22;countryOfRegistration: 'KR'&#x22;]
    OV_LP --- OV_NAME[&#x22;name&#x22;]
    OV_NAME --- OV_NI[&#x22;nameIdentifier&#x22;]
    OV_NI --- OV_NIV[&#x22;legalPersonName: 'Gorbit Inc.'<br/>legalPersonNameIdentifierType: 'LEGL'&#x22;]
    
    OV_LP --- OV_GA[&#x22;geographicAddress&#x22;]
    OV_GA --- OV_GAV[&#x22;addressType: 'GEOG'<br/>streetName: 'Example Street'<br/>buildingNumber: '123'<br/>buildingName: 'Example Building'<br/>postcode: '00000'<br/>townName: 'Seoul'<br/>countrySubDivision: 'N/A'<br/>country: 'KR'&#x22;]
    OV_GAV --- OV_AL[&#x22;addressLine&#x22;]
    OV_AL --- OV_AL1[&#x22;104 Teheran-ro 1-gil, Gangnam-gu&#x22;]
    OV_AL --- OV_AL2[&#x22;10th floor&#x22;]
    
    OV_LP --- OV_NI_ID[&#x22;nationalIdentification&#x22;]
    OV_NI_ID --- OV_NI_V[&#x22;nationalIdentifier: 'EXAMPLE-TAX-ID'<br/>nationalIdentifierType: 'RAID'<br/>registrationAuthority: 'RA000657'&#x22;]

    %% BeneficiaryVASP Branch
    root --- BeneficiaryVASP[&#x22;BeneficiaryVASP&#x22;]
    BeneficiaryVASP --- beneficiaryVASP_inner[&#x22;beneficiaryVASP&#x22;]
    beneficiaryVASP_inner --- BV_LP[&#x22;legalPerson&#x22;]
    
    BV_LP --- BV_COR[&#x22;countryOfRegistration: 'KR'&#x22;]
    BV_LP --- BV_NAME[&#x22;name&#x22;]
    BV_NAME --- BV_NI[&#x22;nameIdentifier&#x22;]
    BV_NI --- BV_NIV[&#x22;legalPersonName: 'Coinone Inc.'<br/>legalPersonNameIdentifierType: 'LEGL'&#x22;]
    
    BV_LP --- BV_GA[&#x22;geographicAddress&#x22;]
    BV_GA --- BV_GAV[&#x22;addressType: 'GEOG'<br/>streetName: 'Example Street'<br/>buildingNumber: '456'<br/>buildingName: 'Example Building'<br/>postcode: '00000'<br/>townName: 'Seoul'<br/>countrySubDivision: 'N/A'<br/>country: 'KR'&#x22;]
    BV_GAV --- BV_AL[&#x22;addressLine&#x22;]
    BV_AL --- BV_AL1[&#x22;104 Teheran-ro 1-gil, Gangnam-gu&#x22;]
    BV_AL --- BV_AL2[&#x22;10th floor&#x22;]
    
    BV_LP --- BV_NI_ID[&#x22;nationalIdentification&#x22;]
    BV_NI_ID --- BV_NI_V[&#x22;nationalIdentifier: '0104824434'<br/>nationalIdentifierType: 'RAID'<br/>registrationAuthority: 'RA000657'&#x22;]"
/>

IVMS101 features a complex structure, as illustrated above. The provided diagram is merely one example; scenarios vary depending on the classification as 'naturalPerson'/'legalPerson' and the use of 'localNameIdentifier'.

As required fields differ across sending and receiving cases, understanding each scenario thoroughly and entering the necessary details is required.

Although the structure appears complex, effectively handling the four essential elements—'Originator', 'Beneficiary', 'OriginatingVASP', and 'BeneficiaryVASP'—ensures a smooth process. The originating VASP shall incorporate 'Originator', 'Beneficiary', and 'OriginatingVASP' information into the 'payload' as per the IVMS101 standard and dispatch the request. The beneficiary VASP then finalizes the process by adding 'BeneficiaryVASP' details to the received data and issuing a response.

We will now review the key IVMS101 objects for common cases.

3-1. As an Originator [#3-1-as-an-originator]

3-1-1. 'Originator': 'naturalPerson' [#3-1-1-originator-naturalperson]

<Mermaid
  chart="graph LR
    %% Root Node
    root(( ))

    %% Main Branches
    root --> Originator[&#x22;Originator&#x22;]
    root --> Beneficiary[&#x22;Beneficiary&#x22;]
    root --> OriginatingVASP[&#x22;OriginatingVASP&#x22;]

    %% Originator Path
    Originator --> originatorPersons[&#x22;originatorPersons [3]&#x22;]
    Originator --> accountNumber[&#x22;accountNumber [1]&#x22;]

    originatorPersons --> naturalPerson[&#x22;naturalPerson {3}&#x22;]
    accountNumber --> accountValue[&#x22;rjChk8e71gxVhyJSr1srzZxWhVisWMMYKz:tag or memo&#x22;]

    %% Natural Person Details
    naturalPerson --> idInfo[&#x22;customerIdentification: 'customernumber in Max 50 Text'<br/>countryOfResidence: 'US'&#x22;]
    naturalPerson --> name[&#x22;name {1}&#x22;]
    naturalPerson --> dateAndPlaceOfBirth[&#x22;dateAndPlaceOfBirth {1}&#x22;]

    %% Name Details
    name --> nameIdentifier[&#x22;nameIdentifier [1]&#x22;]
    name --> localNameIdentifier[&#x22;localNameIdentifier [1]&#x22;]

    nameIdentifier --> niValue[&#x22;primaryIdentifier: ''<br/>secondaryIdentifier: ''<br/>nameIdentifierType: ''&#x22;]
    localNameIdentifier --> lniValue[&#x22;primaryIdentifier: '로버트 반스'<br/>secondaryIdentifier: ''<br/>nameIdentifierType: 'LEGL'&#x22;]

    %% Birth Details
    dateAndPlaceOfBirth --> dobValue[&#x22;dateOfBirth: '1990-01-01'<br/>placeOfBirth: 'LA'&#x22;]

    %% Beneficiary/VASP Details (To be provided)
    Beneficiary --> B_detail[&#x22;detail: 'To be provided'&#x22;]
    OriginatingVASP --> V_detail[&#x22;detail: 'To be provided'&#x22;]

    %% Styling for &#x22;Required&#x22; Fields (Red Border)
    classDef required fill:#fff,stroke:#ff0000,stroke-width:2px;
    class Originator,Beneficiary,OriginatingVASP required;
    class originatorPersons,accountNumber,accountValue required;
    class naturalPerson,name,dateAndPlaceOfBirth required;
    class nameIdentifier,niValue required;
    class dobValue required;

    %% Styling for &#x22;To be provided&#x22; and local info
    classDef optional fill:#f9f9f9,stroke:#999,stroke-width:1px;
    class idInfo,localNameIdentifier,lniValue,B_detail,V_detail optional;"
/>

* When the originator is an individual, under the 'name' object, 'nameIdentifier' is required, whereas 'localNameIdentifier' is optional.
* Since **the 'nameIdentifier' is required, enter blank** if there is no matching value.
* But when communicating **between Korean VASPs**, it is agreed that the 'nameIdentifier' will contain the Korean name and the 'localNameIdentifier' will contain the English name.

3-1-2. 'Originator': 'legalPerson' [#3-1-2-originator-legalperson]

<Mermaid
  chart="graph LR
    %% Root Node
    root(( ))

    %% Primary Branches
    root --- Originator[&#x22;Originator&#x22;]
    root --- Beneficiary[&#x22;Beneficiary&#x22;]
    root --- OriginatingVASP[&#x22;OriginatingVASP&#x22;]

    %% Originator Path
    Originator --- originatorPersons[&#x22;originatorPersons [2]&#x22;]
    Originator --- accountNumber[&#x22;accountNumber [1]&#x22;]

    %% originatorPersons Branches
    originatorPersons --- legalPerson[&#x22;legalPerson {1}<br/>(Corporate Info)&#x22;]
    originatorPersons --- CEO1[&#x22;naturalPerson {1}<br/>(CEO1 Info)&#x22;]
    originatorPersons --- CEO2[&#x22;naturalPerson {1}<br/>(CEO2 Info (Optional))&#x22;]

    %% Corporate Info Details
    legalPerson --- LP_ID[&#x22;customerIdentification: 'customernumber in Max 50 Text'<br/>countryOfRegistration: 'KR'&#x22;]
    legalPerson --- LP_name[&#x22;name {1}&#x22;]
    legalPerson --- LP_natID[&#x22;nationalIdentification {1}&#x22;]

    LP_name --- LP_nameID[&#x22;nameIdentifier {1}&#x22;]
    LP_nameID --- LP_nameVal[&#x22;legalPersonName: 'Coinone Inc.'<br/>legalPersonNameIdentifierType: 'LEGL'&#x22;]

    %% CEO1 Info Details
    CEO1 --- CEO1_name[&#x22;name {2}&#x22;]
    CEO1_name --- CEO1_nameID[&#x22;nameIdentifier [1]&#x22;]
    CEO1_name --- CEO1_localName[&#x22;localNameIdentifier [1]&#x22;]

    CEO1_nameID --- CEO1_val[&#x22;primaryIdentifier: ''<br/>secondaryIdentifier: ''<br/>nameIdentifierType: ''<br/>(Enter blank if no value)&#x22;]

    %% Account Details
    accountNumber --- accountVal[&#x22;rjChk8e71gxVhyJSr1srzZxWhVisWMMYKz:tag or memo&#x22;]

    %% Beneficiary & VASP Details
    Beneficiary --- B_detail[&#x22;detail: 'To be provided'&#x22;]
    OriginatingVASP --- V_detail[&#x22;detail: 'To be provided'&#x22;]

    %% Styling for &#x22;Required&#x22; Fields (Red Border)
    classDef required fill:#fff,stroke:#ff0000,stroke-width:2px;
    class Originator,Beneficiary,OriginatingVASP required;
    class originatorPersons,accountNumber,accountVal required;
    class legalPerson,CEO1 required;
    class LP_name,LP_nameID,LP_nameVal required;
    class CEO1_name,CEO1_nameID,CEO1_val required;

    %% Styling for Optional/Placeholders
    classDef optional fill:#f9f9f9,stroke:#999,stroke-width:1px;
    class CEO2,LP_ID,LP_natID,CEO1_localName,B_detail,V_detail optional;"
/>

* When the originator is a corporate entity,  under the 'originatorPersons' object, **both a 'legalPerson' and at least one 'naturalPerson' are required**.
* The 'legalPerson' object contains corporate details, while 'naturalPerson' includes the corporate representative(CEO)'s information.
* Under the 'name' object, **'nameIdentifier' is required**, whereas 'localNameIdentifier' is optional.
* Since **the 'nameIdentifier' is required, enter blank** if there is no matching value.
* If there are multiple corporate representatives, add as many 'naturalPerson' objects as needed to the 'beneficiaryPersons' array.
* The 'nameIdentifier' contains the English name, while the 'localNameIdentifier' holds the Korean name (or other local language names).
* But when communicating **between Korean VASPs**, it is agreed that the 'nameIdentifier' will contain the Korean name and the 'localNameIdentifier' will contain the English name.

3-1-3. 'Beneficiary': 'naturalPerson' [#3-1-3-beneficiary-naturalperson]

<Mermaid
  chart="graph LR
    %% Root Node
    root(( ))

    %% Primary Branches
    root --- Originator[&#x22;Originator&#x22;]
    root --- Beneficiary[&#x22;Beneficiary {2}&#x22;]
    root --- OriginatingVASP[&#x22;OriginatingVASP&#x22;]

    %% Beneficiary Path
    Beneficiary --- beneficiaryPersons[&#x22;beneficiaryPersons [1]&#x22;]
    Beneficiary --- accountNumber[&#x22;accountNumber [1]&#x22;]

    %% Persons and Account Details
    beneficiaryPersons --- naturalPerson[&#x22;naturalPerson {3}&#x22;]
    accountNumber --- accountVal[&#x22;rHcFoo6a9qT5NHiVn1THQRhsEGcxtYCV4d:tag or memo&#x22;]

    %% Natural Person Details
    naturalPerson --- idInfo[&#x22;customerIdentification: 'customernumber in Max 50 Text'<br/>countryOfResidence: 'US'&#x22;]
    naturalPerson --- name[&#x22;name {2}&#x22;]
    naturalPerson --- dateAndPlaceOfBirth[&#x22;dateAndPlaceOfBirth {1}&#x22;]

    %% Name Details
    name --- nameIdentifier[&#x22;nameIdentifier [1]&#x22;]
    name --- localNameIdentifier[&#x22;localNameIdentifier [1]&#x22;]

    %% Values
    nameIdentifier --- niVal[&#x22;primaryIdentifier: ''<br/>secondaryIdentifier: ''<br/>nameIdentifierType: ''<br/>(Enter blank if no value)&#x22;]
    localNameIdentifier --- lniVal[&#x22;primaryIdentifier: '엘리스 스미스'<br/>secondaryIdentifier: ''<br/>nameIdentifierType: 'LEGL'&#x22;]
    dateAndPlaceOfBirth --- dobVal[&#x22;dateOfBirth: '1990-01-01'<br/>placeOfBirth: 'LA'&#x22;]

    %% Placeholder details
    Originator --- O_detail[&#x22;detail: 'To be provided'&#x22;]
    OriginatingVASP --- V_detail[&#x22;detail: 'To be provided'&#x22;]

    %% Styling for &#x22;Required&#x22; Fields (Red Border)
    classDef required fill:#fff,stroke:#ff0000,stroke-width:2px;
    class Originator,Beneficiary,OriginatingVASP required;
    class beneficiaryPersons,accountNumber,accountVal required;
    class naturalPerson,name,nameIdentifier,niVal required;

    %% Styling for Optional/Secondary Fields
    classDef optional fill:#f9f9f9,stroke:#999,stroke-width:1px;
    class idInfo,dateAndPlaceOfBirth,localNameIdentifier,lniVal,dobVal,O_detail,V_detail optional;"
/>

* When the beneficiary is an individual, under the 'name' object, **'nameIdentifier' is required**,  whereas 'localNameIdentifier' is optional.
* Since **the 'nameIdentifier' is required, enter blank** if there is no matching value.
* The 'nameIdentifier' contains the English name, while the 'localNameIdentifier' holds the Korean name (or other local language names).
* But when communicating **between Korean VASPs**, it is agreed that the 'nameIdentifier' will contain the Korean name and the 'localNameIdentifier' will contain the English name.

3-1-4. 'Beneficiary': 'legalPerson' [#3-1-4-beneficiary-legalperson]

<Mermaid
  chart="graph LR
    %% Root Node
    root(( ))

    %% Primary Branches
    root --- Originator[&#x22;Originator&#x22;]
    root --- Beneficiary[&#x22;Beneficiary {2}&#x22;]
    root --- OriginatingVASP[&#x22;OriginatingVASP&#x22;]

    %% Beneficiary Path
    Beneficiary --- beneficiaryPersons[&#x22;beneficiaryPersons [2]&#x22;]
    Beneficiary --- accountNumber[&#x22;accountNumber [1]&#x22;]

    %% beneficiaryPersons Branches
    beneficiaryPersons --- legalPerson[&#x22;legalPerson {1}<br/>(Corporate Info)&#x22;]
    beneficiaryPersons --- CEO1[&#x22;naturalPerson {1}<br/>(CEO1 Info)&#x22;]
    beneficiaryPersons --- CEO2[&#x22;naturalPerson {1}<br/>(CEO2 Info (Optional))&#x22;]

    %% Corporate Info Details
    legalPerson --- LP_ID[&#x22;customerIdentification: 'customernumber in Max 50 Text'<br/>countryOfRegistration: 'KR'&#x22;]
    legalPerson --- LP_name[&#x22;name {1}&#x22;]
    legalPerson --- LP_natID[&#x22;nationalIdentification {1}&#x22;]

    LP_name --- LP_nameID[&#x22;nameIdentifier {1}&#x22;]
    LP_nameID --- LP_nameVal[&#x22;legalPersonName: 'Korbit Inc.'<br/>legalPersonNameIdentifierType: 'LEGL'&#x22;]

    %% CEO1 Info Details
    CEO1 --- CEO1_name[&#x22;name {2}&#x22;]
    CEO1_name --- CEO1_nameID[&#x22;nameIdentifier [1]&#x22;]
    CEO1_name --- CEO1_localName[&#x22;localNameIdentifier [1]&#x22;]

    CEO1_nameID --- CEO1_val[&#x22;primaryIdentifier: ''<br/>secondaryIdentifier: ''<br/>nameIdentifierType: ''<br/>(Enter blank if no value)&#x22;]

    %% Account Details
    accountNumber --- accountVal[&#x22;HPxPau6whpf18R2V4iZ7NQ8xXnscuYYCVh6:tag or memo&#x22;]

    %% Placeholder details
    Originator --- O_detail[&#x22;detail: 'To be provided'&#x22;]
    OriginatingVASP --- V_detail[&#x22;detail: 'To be provided'&#x22;]

    %% Styling for &#x22;Required&#x22; Fields (Red Border)
    classDef required fill:#fff,stroke:#ff0000,stroke-width:2px;
    class Originator,Beneficiary,OriginatingVASP required;
    class beneficiaryPersons,accountNumber,accountVal required;
    class legalPerson,CEO1 required;
    class LP_name,LP_nameID,LP_nameVal required;
    class CEO1_name,CEO1_nameID,CEO1_val required;

    %% Styling for Optional/Secondary Fields
    classDef optional fill:#f9f9f9,stroke:#999,stroke-width:1px;
    class CEO2,LP_ID,LP_natID,CEO1_localName,O_detail,V_detail optional;"
/>

* Under the 'beneficiaryPersons' object, both a 'legalPerson' and at least one 'naturalPerson' are required.
* The 'legalPerson' object contains corporate details, while 'naturalPerson' includes the corporate representative(CEO)'s information.
* Under the 'name' object, **'nameIdentifier' is required**,  whereas 'localNameIdentifier' is optional.
* Since **the 'nameIdentifier' is required, enter blank** if there is no matching value.
* If there are multiple corporate representatives, add as many 'naturalPerson' objects as needed to the 'beneficiaryPersons' array.
* The 'nameIdentifier' contains the English name, while the 'localNameIdentifier' holds the Korean name (or other local language names).
* * But when communicating **between Korean VASPs**, it is agreed that the 'nameIdentifier' will contain the Korean name and the 'localNameIdentifier' will contain the English name.

3-1-5. 'OriginatingVASP' [#3-1-5-originatingvasp]

<Mermaid
  chart="graph LR
    %% Root Node
    root(( ))

    %% Primary Branches
    root --- Originator[&#x22;Originator {2}&#x22;]
    root --- Beneficiary[&#x22;Beneficiary&#x22;]
    root --- OriginatingVASP[&#x22;OriginatingVASP {1}&#x22;]

    %% Detail placeholders
    Originator --- O_detail[&#x22;detail: 'To be provided'&#x22;]
    Beneficiary --- B_detail[&#x22;detail: 'To be provided'&#x22;]

    %% OriginatingVASP Path
    OriginatingVASP --- originatingVASP_inner[&#x22;originatingVASP {1}&#x22;]
    originatingVASP_inner --- legalPerson[&#x22;legalPerson {4}&#x22;]

    %% legalPerson Branches
    legalPerson --- countryReg[&#x22;countryOfRegistration: 'KR'&#x22;]
    legalPerson --- name[&#x22;name {1}&#x22;]
    legalPerson --- geographicAddress[&#x22;geographicAddress [1]&#x22;]
    legalPerson --- nationalIdentification[&#x22;nationalIdentification {1}&#x22;]

    %% Name Details
    name --- nameIdentifier[&#x22;nameIdentifier [1]&#x22;]
    nameIdentifier --- nameVal[&#x22;legalPersonName: 'Korbit Inc.'<br/>legalPersonNameIdentifierType: 'LEGL'&#x22;]

    %% Geographic Address Details
    geographicAddress --- geoVal[&#x22;addressType: 'GEOG'<br/>streetName: 'Example Street'<br/>buildingNumber: '123'<br/>buildingName: 'Example Building'<br/>postcode: '00000'<br/>townName: 'Seoul'<br/>countrySubDivision: 'N/A'<br/>country: 'KR'&#x22;]
    geoVal --- addressLine[&#x22;addressLine [2]&#x22;]
    addressLine --- al1[&#x22;104 Teheran-ro 1-gil, Gangnam-gu&#x22;]
    addressLine --- al2[&#x22;10th floor&#x22;]

    %% National Identification Details
    nationalIdentification --- natVal[&#x22;nationalIdentifier: 'EXAMPLE-TAX-ID'<br/>nationalIdentifierType: 'RAID'<br/>registrationAuthority: 'RA000657'&#x22;]

    %% Conditional Requirement Logic
    Note[&#x22;★One of two required&#x22;]
    Note -.-> geographicAddress
    Note -.-> nationalIdentification

    %% Styling for &#x22;Required&#x22; Fields (Red Border)
    classDef required fill:#fff,stroke:#ff0000,stroke-width:2px;
    class Originator,OriginatingVASP,originatingVASP_inner,legalPerson required;
    class countryReg,name,nameIdentifier,nameVal required;
    class geographicAddress,nationalIdentification,natVal required;

    %% Styling for &#x22;To be provided&#x22;
    classDef optional fill:#f9f9f9,stroke:#999,stroke-width:1px;
    class O_detail,B_detail,addressLine,al1,al2 optional;"
/>

* The 'OriginatingVASP' object contains information about the sending VASP.
* Under 'legalPerson', both 'name' and 'countryOfRegistration' are required, and either 'geographicAddress' or 'nationalIdentification' should also be entered.
* When using 'nationalIdentification', it's recommended to include 'registrationAuthority', the details of the issuing body. Download the 'GLEIF Registration Authorities List' from the bottom of the [GLEIF website](https://www.gleif.org/en/about-lei/code-lists/gleif-registration-authorities-list), locate the Authority Code that corresponds with your country and registration type.

3-1-6. 'BeneficiaryVASP' [#3-1-6-beneficiaryvasp]

<Mermaid
  chart="graph LR
    %% Root Node
    root(( ))

    %% Primary Branches
    root --- Originator[&#x22;Originator {2}&#x22;]
    root --- Beneficiary[&#x22;Beneficiary&#x22;]
    root --- OriginatingVASP[&#x22;OriginatingVASP&#x22;]
    root --- BeneficiaryVASP[&#x22;BeneficiaryVASP {1}&#x22;]

    %% Detail placeholders
    Originator --- O_detail[&#x22;detail: 'To be provided'&#x22;]
    Beneficiary --- B_detail[&#x22;detail: 'To be provided'&#x22;]
    OriginatingVASP --- V_detail[&#x22;detail: 'To be provided'&#x22;]

    %% BeneficiaryVASP Path
    BeneficiaryVASP --- beneficiaryVASP_inner[&#x22;beneficiaryVASP {1}&#x22;]
    beneficiaryVASP_inner --- legalPerson[&#x22;legalPerson {4}&#x22;]

    %% legalPerson Branches
    legalPerson --- countryReg[&#x22;countryOfRegistration: 'KR'&#x22;]
    legalPerson --- name[&#x22;name {1}&#x22;]
    legalPerson --- geographicAddress[&#x22;geographicAddress [1]&#x22;]
    legalPerson --- nationalIdentification[&#x22;nationalIdentification {1}&#x22;]

    %% Name Details
    name --- nameIdentifier[&#x22;nameIdentifier [1]&#x22;]
    nameIdentifier --- nameVal[&#x22;legalPersonName: 'Coinone Inc.'<br/>legalPersonNameIdentifierType: 'LEGL'&#x22;]

    %% Geographic Address Details
    geographicAddress --- geoVal[&#x22;addressType: 'GEOG'<br/>streetName: 'Example Street'<br/>buildingNumber: '456'<br/>buildingName: 'Example Building'<br/>postcode: '00000'<br/>townName: 'Seoul'<br/>countrySubDivision: 'N/A'<br/>country: 'KR'&#x22;]
    geoVal --- addressLine[&#x22;addressLine [2]&#x22;]
    addressLine --- al1[&#x22;104 Teheran-ro 1-gil, Gangnam-gu&#x22;]
    addressLine --- al2[&#x22;10th floor&#x22;]

    %% National Identification Details
    nationalIdentification --- natVal[&#x22;nationalIdentifier: '6948624434'<br/>nationalIdentifierType: 'RAID'<br/>registrationAuthority: 'RA000657'&#x22;]

    %% Conditional Requirement Logic
    Note[&#x22;★One of two required&#x22;]
    Note -.-> geographicAddress
    Note -.-> nationalIdentification

    %% Styling for &#x22;Required&#x22; Fields (Red Border)
    classDef required fill:#fff,stroke:#ff0000,stroke-width:2px;
    class Originator,Beneficiary,OriginatingVASP,BeneficiaryVASP required;
    class beneficiaryVASP_inner,legalPerson required;
    class countryReg,name,nameIdentifier,nameVal required;
    class geographicAddress,nationalIdentification,natVal required;

    %% Styling for Optional/Placeholder
    classDef optional fill:#f9f9f9,stroke:#999,stroke-width:1px;
    class O_detail,B_detail,V_detail,addressLine,al1,al2 optional;"
/>

* The receiving VASP adds their 'BeneficiaryVASP' information to the 'Originator', 'Beneficiary', and 'OriginatingVASP' information contained in the 'Asset Transfer Authorization Request' and sends it back to the originating VASP.
* Under 'legalPerson', both 'name' and 'countryOfRegistration' are required, and either 'geographicAddress' or 'nationalIdentification' should also be entered.
* When using 'nationalIdentification', it's recommended to include 'registrationAuthority', the details of the issuing body. Download the 'GLEIF Registration Authorities List' from the bottom of the [GLEIF website](https://www.gleif.org/en/about-lei/code-lists/gleif-registration-authorities-list), locate the Authority Code that corresponds with your country and registration type..
