Skip to main content
Search

13-TX Verification Success (With Memo/Tag)

  • Post-Transaction Approval - Transaction Verification Success on a memo-required network.
  • GTR will send a callback request (callbackType=9) with a transaction ID, an address, and a non-empty tag (memo) to verify a specific transaction on a memo-required network.
  • Your server should confirm transaction ownership by matching txId, address, and tag, and return a successful verification response.
  • This test targets networks whose deposits are only uniquely identified when both address and memo/tag are combined — for example HBAR, XLM, or XRP.

GTR Request (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
  • 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": "[TEST_ADDRESS]",
"tag": "[ADDRESS_TAG_MUST_BE_NON_EMPTY]",
"txId": "[TX_ID]",
"network": "[MEMO_REQUIRED_NETWORK_SYMBOL]",
"initiatorVasp": "[TESTER_VASP_CODE]"
}
}
curl -v --location --request POST 'https://[YOUR_CALLBACK_URL]' \
-k \
--header 'Content-Type: application/json' \
--data-raw '{
"requestId": "test-abc123def456",
"invokeVaspCode": "[YOUR_VASP_CODE]",
"originatorVasp": "[TESTER_VASP_CODE]",
"beneficiaryVasp": "[YOUR_VASP_CODE]",
"callbackType": 9,
"callbackData": {
"requestId": "test-abc123def456",
"ticker": "--YOU SHOULD NOT REFER TO THIS TICKER--",
"address": "[TEST_ADDRESS]",
"tag": "[ADDRESS_TAG_MUST_BE_NON_EMPTY]",
"txId": "[TX_ID]",
"network": "[MEMO_REQUIRED_NETWORK_SYMBOL]",
"initiatorVasp": "[TESTER_VASP_CODE]"
}
}'

Hint:

  • callbackType: 9 indicates transaction verification for Post-Transaction
  • tag MUST NOT be null or empty in this test case — it carries the memo/destination-tag/note that uniquely identifies the receiving account on the target network
  • Pick a network that requires a memo/tag on deposits — e.g. HBAR (memo), XLM (memo), XRP (destination tag)
  • Do NOT use the ticker field to search for users
  • Verification must match txId, address, AND tag — accepting a match without the tag on a memo-required network can attribute a transaction to the wrong user
  • Your server should respond within 30 seconds

Materials:


Expected Response (VASP → GTR)

When the transaction (matched on txId + address + tag) is found in your system, you should return:

  • HTTP Status Code: 200
  • verifyStatus: 100000 (success)
{
"verifyStatus": 100000,
"verifyMessage": "Transaction verification passed"
}

Test Validation

Success Criteria:

  • ✅ Your callback server responds within 30 seconds
  • ✅ HTTP status code 200 returned
  • verifyStatus: 100000 indicates successful verification
  • ✅ Lookup uses txId, address, and tag and confirms ownership
  • ✅ Test data uses a memo-required network (HBAR / XLM / XRP / etc.) with a non-empty tag

Common Issues:

  • ⚠️ Ignoring tag: On memo-required networks, matching without the tag can attribute the transaction to the wrong user on a shared deposit address
  • ⚠️ Null / empty tag: This test intentionally exercises a non-empty tag — treating it as absent is a bug
  • ⚠️ Wrong Status Code: Return HTTP 200 even for failed verification (use verifyStatus instead)
  • ⚠️ Ticker Reference: Do NOT use the ticker field to search for users
  • ⚠️ Missing TXID: Both transaction ID and address (plus tag on memo networks) must be validated