Skip to main content
Search

08-PII Verify Failed (Natural Person / Pre-Transaction)

  • Pre-Transaction Approval - PII Verification failure for Natural Person beneficiary.
  • This test case submits a correct wallet address but with incorrect natural person PII data to targetVaspCode: gdummy.
  • In the received verification result, at least one item in verifyFields will have status 2 (mismatch).

Expected Request (VASP → GTR)

  • Method: POST
  • Base URL: https://uat-platform.globaltravelrule.com
  • Endpoint: /api/verify/v2/one_step
  • Authentication:
    • mTLS (Mutual Transport Layer Security) when sending the API
    • JWT Bearer Token or App Token authentication via Authorization header
  • Header:
    • Content-Type: application/json
    • Authorization: Bearer [JWT_TOKEN] or X-Authorization: [APP_TOKEN]
  • Body:
{
"requestId": "[YOUR_REQUEST_ID]",
"network": "[NETWORK_NAME]",
"address": "[BENEFICIARY_ADDRESS]",
"tag": "[TAG]",
"txId": null,
"verifyDirection": 2,
"targetVaspCode": "gdummy",
"ticker": "[TICKER_NAME]",
"amount": "[CRYPTO_TRANSFER_AMOUNT]",
"fiatName": "USD",
"fiatPrice": "[FIAT_RATIO_PRICE]",
"sourceVaspCode": "",
"expectVerifyFields": [
"110026",
"110025",
"110045"
],
"piiSecuredInfo": {
"initiatorKeyInfo": {
"publicKey": "[YOUR_PUBLIC_KEY]"
},
"piiSecretFormatType": "FULL_JSON_OBJECT_ENCRYPT",
"piiSpecVersion": "ivms101-2020",
"receiverKeyInfo": {
"publicKey": "[THEIR_PUBLIC_KEY]"
},
"secretAlgorithm": "ed25519_curve25519",
"securedPayload": "[PII_ENCRYPTED_PAYLOAD_WITH_INCORRECT_DATA]"
}
}
set -e

export CURL_SSL_BACKEND="openssl"
randomRequestId="test-"$(openssl rand -base64 48 | tr -dc 'a-zA-Z0-9' | head -c "12")"-"$(date '+%Y%m%d%H%M%S')

curl -v --silent --location --request POST 'https://uat-platform.globaltravelrule.com/api/verify/v2/one_step' \
-k --cert ./certificate.pem --key ./privateKey.pem \
--header 'Content-Type: application/json' \
# Please use one of Authorization or X-Authorization
--header 'Authorization: Bearer [JWT_TOKEN]' \
--header 'X-Authorization: [APP_TOKEN]' \
--data-raw "{
\"requestId\": \"$randomRequestId\",
\"network\": \"[NETWORK_NAME]\",
\"address\": \"[BENEFICIARY_ADDRESS]\",
\"tag\": \"[TAG]\",
\"txId\": null,
\"verifyDirection\": 2,
\"targetVaspCode\": \"gdummy\",
\"ticker\": \"[TICKER_NAME]\",
\"amount\": \"[CRYPTO_TRANSFER_AMOUNT]\",
\"fiatName\": \"USD\",
\"fiatPrice\": \"[FIAT_RATIO_PRICE]\",
\"sourceVaspCode\": \"\",
\"expectVerifyFields\": [
\"110026\",
\"110025\",
\"110045\"
],
\"piiSecuredInfo\": {
\"initiatorKeyInfo\": {
\"publicKey\": \"[YOUR_PUBLIC_KEY]\"
},
\"piiSecretFormatType\": \"FULL_JSON_OBJECT_ENCRYPT\",
\"piiSpecVersion\": \"ivms101-2020\",
\"receiverKeyInfo\": {
\"publicKey\": \"[THEIR_PUBLIC_KEY]\"
},
\"secretAlgorithm\": \"ed25519_curve25519\",
\"securedPayload\": \"[PII_ENCRYPTED_PAYLOAD_WITH_INCORRECT_DATA]\"
}
}"

Hint:

  • targetVaspCode is fixed as gdummy for testing verification results
  • verifyDirection is set to 2 for Pre-Transaction Approval
  • txId is null for Pre-Transaction scenario
  • expectVerifyFields must include correct Natural Person verification field codes
  • 110026: Beneficiary Natural Person Name
  • 110025: Beneficiary Natural Person Date of Birth
  • 110045: Beneficiary Natural Person National ID
  • Submit intentionally incorrect PII data to trigger verification failures

Materials:


Expected Response (GTR → VASP)

When the PII verification fails, the system returns:

  • HTTP Status Code: 200
  • verifyStatus: 100000(success) or 200003(pii verification failed)
  • At least one item in verifyFields has status 2 (mismatch).
  • In this example, even if verifyStatus is 100000, you can see that fields 110025 and 110045 have status 2 (mismatch), indicating PII verification failures.
  • ⚠️Important: verifyStatus may be either 100000(success) or 200003(pii verification failed). Do NOT rely solely on verifyStatus for decision-making. Make sure to check each verifyFields results and make your decisions based on your business/compliance requirements.
{
"data": {
"targetVaspCode": "gdummy",
"requestId": "[YOUR_REQUEST_ID]",
"verifyFields": [
{
"message": "matched",
"status": 1,
"type": "110026"
},
{
"message": "date of birth mismatch",
"status": 2,
"type": "110025"
},
{
"message": "national id mismatch",
"status": 2,
"type": "110045"
}
],
"piiSecuredInfo": {
"initiatorKeyInfo": {
"publicKey": "[YOUR_PUBLIC_KEY]"
},
"piiSecretFormatType": "FULL_JSON_OBJECT_ENCRYPT",
"piiSpecVersion": "ivms101-2020",
"receiverKeyInfo": {
"publicKey": "[THEIR_PUBLIC_KEY]"
},
"secretAlgorithm": "ed25519_curve25519",
"securedPayload": "[PII_FROM_BENEFICIARY]"
}
},
"verifyMessage": "Verification Success" or "PII Verify Failed",
"verifyStatus": 100000 or 200003,
"verifyStage": "PII_VERIFICATION"
}