Skip to main content
Search

Wallet Verify Callback 1: Wallet Verify Result

Where should I integrate

Expiration reference

The create-verify API returns two expiration timestamps:

  • qrcodeExpiredAt: the current QR code session expiration time. When this one expires, the same requestId may still be used to re-issue another QR code if verifyExpiredAt is not reached yet.
  • verifyExpiredAt: the hard expiration time for the wallet verification request. After this timestamp, the same requestId is no longer valid for issuing a new QR code. A new request must be initiated with a new requestId.

About address screening result

For Wallet Verify callback, screeningResult is only included in the success callback.

  • If wallet verification succeeds, GTR may include screeningResult in the callback payload.
  • If wallet verification fails or expires, GTR will not include screeningResult.

Case 1: Success

If Unhosted Wallet Owner successfully completed message signing, you can expect to receive below callback from GTR with callbackType:18 and verifyStatus:100000.

Once you receive this callback from GTR, you can continue the transfer.

If address screening is available, it will be included in this success callback only.

{
"requestId": "[REQUEST-ID]",
"invokeVaspCode": "YOUR_VASP_CODE",
"originatorVasp": "ORIGINATOR_VASP_CODE",
"beneficiaryVasp": "BENEFICIARY_VASP_CODE",
"callbackType": 18,
"callbackData": {
"notifyResult": {
"verifyMessage": "Verify Success",
"verifyStage": "WALLET_OWNER_VERIFICATION",
"verifyStatus": 100000
},
"screeningResult": {
"screeningStatus": "COMPLETED",
"message": "screening result present",
"vaspEntityName": "Axchange UK",
"vaspEntityId": "axchange-uk",
"vaspCode": "axchangeukadjk",
"riskTags": [
"Exchange & Trading Platforms",
"Centralized Exchange",
"Unknown Wallet"
],
"riskScore": 4.0
}
}
}

Case 2: Fail

If Unhosted Wallet Owner never scanned the QR Code with the right wallet or never completed message signing, you can expect to receive below callback from GTR with callbackType:18 and verifyStatus:100001.

Once you receive this callback from GTR, you should stop the process or ask your user to retry.

In this fail callback, screeningResult will not be included.

{
"requestId": "[REQUEST-ID]",
"invokeVaspCode": "YOUR_VASP_CODE",
"originatorVasp": "ORIGINATOR_VASP_CODE",
"beneficiaryVasp": "BENEFICIARY_VASP_CODE",
"callbackType": 18,
"callbackData": {
"notifyResult": {
"verifyMessage": "Verify Failed",
"verifyStage": "WALLET_OWNER_VERIFICATION",
"verifyStatus": 100001
}
}
}

Case 3: Expired

If Unhosted Wallet Owner never performed any operations, this request will be auto expired. After GTR mark this request as expired, you can expect to receive below callback from GTR with callbackType:18 and verifyStatus:100031.

Once you receive this callback from GTR, you should cancel the process from your end.

In this expired callback, screeningResult will not be included.

{
"requestId": "[REQUEST-ID]",
"invokeVaspCode": "YOUR_VASP_CODE",
"originatorVasp": "ORIGINATOR_VASP_CODE",
"beneficiaryVasp": "BENEFICIARY_VASP_CODE",
"callbackType": 18,
"callbackData": {
"notifyResult": {
"verifyMessage": "Verification Timeout",
"verifyStage": "WALLET_OWNER_VERIFICATION",
"verifyStatus": 100031
}
}
}