Skip to main content
Search

07-PII Verify Success (Legal Person / Post-Transaction)

  • Post-Transaction Approval - PII Verification for Legal Person originator (KYB).
  • GTR will send two consecutive callback requests: TX verification (callbackType=9) and PII verification with encrypted KYB payload (callbackType=4).
  • verificationDirection: 1 indicates Post-Transaction scenario where the originator data is verified.
  • Your server should decrypt the PII payload, verify the Legal Person fields, and return a successful verification. At minimum, the originator legal person name field (101001) must be reported in verifyFields with status 1 (matched).
  • When responding, the returned IVMS payload should carry three sectionsOriginator, Beneficiary, and BeneficiaryVASP (the counterparty's VASP block). Keep the incoming Originator, Beneficiary, and BeneficiaryVASP blocks as received.

GTR Request Sequence (GTR → VASP)

  • Method: POST
  • Your Callback Endpoint: https://[YOUR_CALLBACK_URL]
  • Authentication:
    • mTLS (Mutual Transport Layer Security) - GTR will authenticate using client certificates
  • Header:
    • Content-Type: application/json

Stage 1: TX Verification

  • Body:
{
"requestId": "test-[RANDOM_ID]",
"invokeVaspCode": "[YOUR_VASP_CODE]",
"originatorVasp": "[TESTER_VASP_CODE]",
"beneficiaryVasp": "[YOUR_VASP_CODE]",
"callbackType": 9,
"callbackData": {
"requestId": "test-[RANDOM_ID]",
"ticker": "--YOU SHOULD NOT REFER TO THIS TICKER--",
"address": "[TESTER_KYC_ADDRESS]",
"tag": "[TESTER_KYC_ADDRESS_TAG]",
"txId": "[TESTER_KYC_TX_ID]",
"network": "[TESTER_KYC_NETWORK_SYMBOL]",
"initiatorVasp": "[TESTER_VASP_CODE]"
}
}

Stage 2: PII Verification with Encrypted KYB Payload

  • Body:
{
"requestId": "test-[RANDOM_ID]",
"invokeVaspCode": "[YOUR_VASP_CODE]",
"originatorVasp": "[TESTER_VASP_CODE]",
"beneficiaryVasp": "[YOUR_VASP_CODE]",
"callbackType": 4,
"callbackData": {
"requestId": "test-[RANDOM_ID]",
"amount": "1000",
"fiatPrice": "6.66",
"fiatName": "USDT",
"txId": "[TESTER_KYC_TX_ID]",
"network": "[TESTER_KYC_NETWORK_SYMBOL]",
"ticker": "--YOU SHOULD NOT REFER TO THIS TICKER--",
"tag": "[TESTER_KYC_ADDRESS_TAG]",
"address": "[TESTER_KYC_ADDRESS]",
"secretType": 1,
"originatorVasp": "[TESTER_VASP_CODE]",
"beneficiaryVasp": "[YOUR_VASP_CODE]",
"initiatorVasp": "[TESTER_VASP_CODE]",
"receiverVasp": "[YOUR_VASP_CODE]",
"verificationDirection": 1,
"piiSecuredInfo": {
"initiatorKeyInfo": {
"publicKey": "[INITIATOR_PUBLIC_KEY]"
},
"receiverKeyInfo": {
"publicKey": "[YOUR_PUBLIC_KEY]"
},
"piiSecretFormatType": "FULL_JSON_OBJECT_ENCRYPT",
"piiSpecVersion": "ivms101-2020",
"secretAlgorithm": "ed25519_curve25519",
"securedPayload": "[ENCRYPTED_KYB_PAYLOAD]"
}
}
}
  • callbackType: 9 → TX Verification, callbackType: 4 → PII Verification
  • verificationDirection: 1 indicates Post-Transaction scenario (originator data verification)
  • Post-Transaction uses field codes in the 101xxx series (originator Legal Person)
  • Do NOT use the ticker field to search for users
  • PII payload requires decryption using your private key with Curve25519
  • The TXID should already exist in your system for verification
  • The same requestId is used across both stages
  • Your server should respond within 30 seconds for each callback

Materials:


Expected Response Sequence (VASP → GTR)

Your server should respond within 30 seconds for each callback. All responses should return HTTP Status Code 200.

Stage 1 Response: TX Verification Success

When the TXID is found in your system, you should return:

  • verifyStatus: 100000 (success)
{
"verifyStatus": 100000,
"verifyMessage": "Transaction verification passed"
}

Stage 2 Response: PII Verification Success

When the Legal Person KYB is successfully verified, you should return:

  • verifyStatus: 100000 (success) — verifyStatus and verifyMessage are top-level fields, verifyFields is nested inside data.
  • verifyFields should include at least the originator legal person name field (101001) with status 1 (matched). Additional fields such as countryOfRegistration (101022) or geographicAddress (101003) are accepted but not required.
{
"verifyStatus": 100000,
"verifyMessage": "Post-Transaction Legal Person KYB verification passed",
"data": {
"verifyFields": [
{
"type": "101001",
"status": 1,
"message": "originator legalPersonName matched"
},
{
"type": "101022",
"status": 1,
"message": "originator countryOfRegistration matched"
},
{
"type": "101003",
"status": 1,
"message": "originator geographicAddress matched"
}
]
}
}

Note: The data field is required (must be present and non-null). GTR will also accept verifyStatus values 100002 (pending/async) or 200003 (PII verify fail).

Test Validation

Success Criteria:

  • ✅ Both callback stages handled successfully
  • ✅ Each callback responds within 30 seconds
  • ✅ HTTP status code 200 returned for all stages
  • ✅ TX verification returns verifyStatus: 100000
  • ✅ PII decryption and Legal Person KYB validation successful
  • ✅ Post-Transaction KYB field validation returns matched result — at minimum the originator legal person name field (101001) with status: 1

Common Issues:

  • ⚠️ PII Decryption: Must properly decrypt the securedPayload using Curve25519 with your private key
  • ⚠️ Field Code Series: Post-Transaction uses 101xxx series (originator Legal Person), not 111xxx (beneficiary)
  • ⚠️ TXID Must Exist: The TXID should already exist in your system before TX verification
  • ⚠️ Ticker Reference: Do NOT use the ticker field to search for users
  • ⚠️ Three IVMS Sections Required in Response: The response payload should carry Originator, Beneficiary, and BeneficiaryVASP (the counterparty's VASP block) — keep them as received. Even though the field-level verification target is only the Originator (Legal Person), the Beneficiary person block must still ship out end-to-end so both regulators can trace the full counterparty picture.

Appendix A: IVMS 101 KYB Data

The following JSON structure will be encrypted and sent as securedPayload:

{
"ivms101": {
"OriginatingVASP": {
"originatingVASP": {
"legalPerson": {
"name": {
"nameIdentifier": [
{
"legalPersonName": "Originator VASP Company Name - VVVV Inc.",
"legalPersonNameIdentifierType": "LEGL"
}
]
},
"nationalIdentification": {
"nationalIdentifierType": "RAID",
"registrationAuthority": "RA000388 (i.e: 香港公司註冊處核發 Hong Kong Company Registry Approved, For more please check: https://www.gleif.org/en/about-lei/code-lists/gleif-registration-authorities-list)",
"countryOfIssue": "HK",
"nationalIdentifier": "69104532 (i.e: Your Company ID from authroity)"
},
"geographicAddress": [
{
"country": "HK",
"townName": "Hong Kong",
"addressType": "GEOG",
"addressLine": [
"Please fill your address here"
]
}
],
"countryOfRegistration": "HK"
}
}
},
"Originator": {
"accountNumber": [
""
],
"originatorPersons": [
{
"legalPerson": {
"name": {
"nameIdentifier": [
{
"legalPersonName": "Simulation Business Company Inc.",
"legalPersonNameIdentifierType": "LEGL"
}
]
},
"countryOfRegistration": "",
"nationalIdentification": {
"nationalIdentifier": "",
"nationalIdentifierType": "",
"countryOfIssue": "",
"registrationAuthority": ""
},
"geographicAddress": [
{
"addressType": "",
"postCode": "",
"townName": "",
"addressLine": [
""
],
"country": ""
}
]
}
},
{
"naturalPerson": {
"dateAndPlaceOfBirth": {
"placeOfBirth": "US",
"dateOfBirth": "1986-11-21"
},
"name": {
"localNameIdentifier": [
{
"nameIdentifierType": "LEGL",
"primaryIdentifier": "Satoshi",
"secondaryIdentifier": "Nakamoto"
}
],
"nameIdentifier": [
{
"nameIdentifierType": "LEGL",
"primaryIdentifier": "Satoshi",
"secondaryIdentifier": "Nakamoto"
}
]
}
}
}
]
},
"Beneficiary": {
"beneficiaryPersons": [
{
"naturalPerson": {
"dateAndPlaceOfBirth": {
"placeOfBirth": "US",
"dateOfBirth": "1986-11-21"
},
"name": {
"localNameIdentifier": [
{
"nameIdentifierType": "LEGL",
"primaryIdentifier": "Satoshi",
"secondaryIdentifier": "Nakamoto"
}
],
"nameIdentifier": [
{
"nameIdentifierType": "LEGL",
"primaryIdentifier": "Satoshi",
"secondaryIdentifier": "Nakamoto"
}
]
}
}
}
],
"accountNumber": [
"0xb7f9a622c34652cd8f54de97a15281b98a8114ac"
]
},
"BeneficiaryVASP": {
"beneficiaryVASP": {
"legalPerson": {
"name": {
"nameIdentifier": [
{
"legalPersonName": "Originator VASP Company Name - VVVV Inc.",
"legalPersonNameIdentifierType": "LEGL"
}
]
},
"nationalIdentification": {
"nationalIdentifierType": "RAID",
"registrationAuthority": "RA000388 (i.e: 香港公司註冊處核發 Hong Kong Company Registry Approved, For more please check: https://www.gleif.org/en/about-lei/code-lists/gleif-registration-authorities-list)",
"countryOfIssue": "HK",
"nationalIdentifier": "69104532 (i.e: Your Company ID from authroity)"
},
"geographicAddress": [
{
"country": "HK",
"townName": "Hong Kong",
"addressType": "GEOG",
"addressLine": [
"Please fill your address here"
]
}
],
"countryOfRegistration": "HK"
}
}
}
}
}