Skip to main content
Search

PII Verification Callback

Version: 3.0.0

Method

POST

Url

https://{YOUR_SERVICE_URL}/(pii verify: 4)

This callback API endpoint is for PII verification. Initiator will send you encrypted PII via GTR and you will need to decrypt the payload with your own private key and verify the received PII with your KYC/KYB datasource from multiple perspectives.

Authentication

No authentication

Path Parameters

No path parameters

Query Parameters

No query parameters

Request Body (Optional)

PropertyTypeRequiredDescription
address
StringNo
addressType
IntegerNo
amount
StringNo
beneficiaryPublicKey
StringNo
beneficiaryVasp
StringNo
beneficiaryVaspName
StringNo
emptyPiiSchema
StringNo
encryptedPayload
StringNo
fiatName
StringNo
fiatPrice
StringNo
hashSalt
StringNo
initiatorExpectVerifyFields
Array<String>No
initiatorPublicKey
StringNo
initiatorVasp
StringNo
network
StringNo
originatorExpectVerifyFields
Array<String>No
originatorPublicKey
StringNo
originatorVasp
StringNo
originatorVaspName
StringNo
piiSecuredInfo
ObjectNo
PropertyTypeDescription
encryptionParams
Object
The parameters for shared encryption/decryption info, it depends to the algorithm type, if no necessary, please leave it blank or empty
PropertyTypeDescription
ecies
Object
required if you're using ecies algorithm (ecies_secp384r1_tubitak) should refer to this structure
PropertyTypeDescription
ephemeralPublicKey
String
initiatorKeyInfo
Object
initiatorKeyInfo is the direction of Travel Rule Initiator, if you're the initiator, this key should be yours, if you're the receiver (callback server), this is the counter-party VASP's public key that can use to decrypt the PII and encrypt the PII back.
PropertyTypeDescription
publicKey
String
publicKey is the key-parameters for encryption according to the selected algorithm. If the key already be base64 like (Curve25519) 0szeNNub/IGoe623JCGD4B4bH8I94FozOeZjv1dKlXQ=, then no need to do anything, the PEM format like (RSA) -----BEGIN CERTIFICATE-----, no need to remove it, keep it and bring out instead.
piiSecretFormatType
String
PiiSecretFormatType
piiSpecVersion
String
PIISpecVersionType
receiverKeyInfo
Object
receiverKeyInfo is the direction of Travel Rule Receiver, if you're the initiator, this key must set to the counter-party (targetVasp) VASP's publicKey, if you're the receiver (callback server), this key should be your public key.
PropertyTypeDescription
publicKey
String
publicKey is the key-parameters for encryption according to the selected algorithm. If the key already be base64 like (Curve25519) 0szeNNub/IGoe623JCGD4B4bH8I94FozOeZjv1dKlXQ=, then no need to do anything, the PEM format like (RSA) -----BEGIN CERTIFICATE-----, no need to remove it, keep it and bring out instead.
secretAlgorithm
String
AlgorithmType
securedPayload
String
encrypted payload for PII
receiverPublicKey
StringNo
receiverVasp
StringNo
requestId
StringNo
secretType
IntegerNo
tag
StringNo
ticker
StringNo
travelruleId
StringNo
txId
StringNo
verificationDirection
IntegerNo
verifyMessage
StringNo
verifyStatus
IntegerNo

Responses

Status 200

OK

JSON Content

PropertyTypeDescription
data
Object
PropertyTypeDescription
encryptedPayload
String
initiatorPublicKey
String
piiSecuredInfo
Object
PropertyTypeDescription
encryptionParams
Object
The parameters for shared encryption/decryption info, it depends to the algorithm type, if no necessary, please leave it blank or empty
PropertyTypeDescription
ecies
Object
required if you're using ecies algorithm (ecies_secp384r1_tubitak) should refer to this structure
PropertyTypeDescription
ephemeralPublicKey
String
initiatorKeyInfo
Object
initiatorKeyInfo is the direction of Travel Rule Initiator, if you're the initiator, this key should be yours, if you're the receiver (callback server), this is the counter-party VASP's public key that can use to decrypt the PII and encrypt the PII back.
PropertyTypeDescription
publicKey
String
publicKey is the key-parameters for encryption according to the selected algorithm. If the key already be base64 like (Curve25519) 0szeNNub/IGoe623JCGD4B4bH8I94FozOeZjv1dKlXQ=, then no need to do anything, the PEM format like (RSA) -----BEGIN CERTIFICATE-----, no need to remove it, keep it and bring out instead.
piiSecretFormatType
String
PiiSecretFormatType
piiSpecVersion
String
PIISpecVersionType
receiverKeyInfo
Object
receiverKeyInfo is the direction of Travel Rule Receiver, if you're the initiator, this key must set to the counter-party (targetVasp) VASP's publicKey, if you're the receiver (callback server), this key should be your public key.
PropertyTypeDescription
publicKey
String
publicKey is the key-parameters for encryption according to the selected algorithm. If the key already be base64 like (Curve25519) 0szeNNub/IGoe623JCGD4B4bH8I94FozOeZjv1dKlXQ=, then no need to do anything, the PEM format like (RSA) -----BEGIN CERTIFICATE-----, no need to remove it, keep it and bring out instead.
secretAlgorithm
String
AlgorithmType
securedPayload
String
encrypted payload for PII
preflightCheckMessage
String
preflightCheckStatus
String
receiverPublicKey
String
requestId
String
verifyFields
Array<Object>
PropertyTypeDescription
[*].message
String
message of match
[*].status
Integer
VerifyFieldStatus
[*].type
String
IvmsFieldEnum
verifyMessage
String
verifyStatus
Integer

Status HTTP Status: 200, VerifyStatus: 100000

JSON Content

PropertyTypeDescription
data
Object
PropertyTypeDescription
No properties
verifyMessage
String
verifyStatus
Integer
  • If your VASP is in the deposit side(it is an inbound transaction to you), the verificationDirection will be 2:

    • you need to check beneficiary_address + tag in the request to identify your customer.
  • If your VASP is in the withdrawal side(it is an outbound transaction to you), the verificationDirection will be 1:

    • you need to match the Originator info in the PII payload you received with your owned KYC data.

Before you respond:

  • You are required fill in your VASP info into PII's BeneficiaryVASP(If you're in the deposit side) or OriginatingVASP(If you're in the withdrawal side)
  • You are required to fill in verifyFields to let the Travel Rule initiator knows the matching/mismatching status of each specific PII fields.
  • You can also include prefightCheck status to let initiator know whether you will accept this transaction or not (Only suitable when your VASP is the Beneficiary VASP in a pre-transaction situation).

Response Example 1: Success

HTTP Status: 200, VerifyStatus: 100000

{"verifyStatus": 100000,"verifyMessage": "Verify Success"}

This response indicates that the PII verification was successful.

Response Example 2: Decryption Fail

HTTP Status: 200, VerifyStatus: 200002

{"verifyStatus": 200002,"verifyMessage": "Decrypt failed"}

This response indicates that the PII decryption failed using your private key.

Response Example 3: PII Verification Fail

HTTP Status: 200, VerifyStatus: 200003

{"verifyStatus": 200003,"verifyMessage": "PII Verification Failed"}