| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
Overview
Use this method to search for an existing Travel Rule transaction that corresponds to a settled blockchain deposit.
It is read-only and has no side effects — it only looks up a transaction, it never creates or modifies one.
Required permissions
To use this method:
- Your app token must have the View TM transactions permission.
- Travel Rule must be enabled for your account.
Both conditions are required — missing either one returns a 403 Forbidden.
Use case
VASPs should call this method for every deposit before initiating a Travel Rule exchange, to check whether a matching Travel Rule exchange already exists and avoid creating a duplicate.
NotesThe search runs in two stages:
- Exact match on
paymentTxnId(the on-chain transaction hash), if a transaction with that hash already exists.- Fallback match by wallet addresses and asset/network, if no exact hash match is found. Among fallback candidates, transactions matching both
amountandtxnDate(within ±24 hours) are preferred.The method returns at most one transaction — the most recent match. If nothing matches, it returns
200with an empty list, not a404.
Request example
curl -X POST
'https://api.sumsub.com/resources/api/tr/txns/search' \
-H 'Content-Type: application/json' \
-H 'X-App-Token: <your-app-token>' \
-H 'X-App-Access-Sig: <your-signature>' \
-H 'X-App-Access-Ts: <unix-timestamp>' \
-d '{
"paymentTxnId": "0x6918fda9c3150ec0d3ff8778dd808b06894593741c2a0c4004fc12ygtfrhytre",
"applicantWalletAddress": "0x6918b412c7b49d24b4bd27ac454df8477d700000",
"counterpartyWalletAddress": "0x6918c41830e938aeff75e077ff7de818ee300000",
"amount": 100,
"currencyCode": "USDT",
"cryptoChain": "TRX",
"txnDate": "2026-09-08 10:32:23+0000",
"direction": "in"
}'Response explained
The response is a JSON object containing a list with at most one matching transaction.
Root-level attributes
| Field | Type | Description |
|---|---|---|
list | Object | Search result. See list attributes below. |
list attributes
list attributes| Field | Type | Description |
|---|---|---|
items | Array of objects | The matching transaction, if found. Empty if no transaction matches. |
totalItems | Integer | 1 if a match was found, 0 otherwise. |
items[] element fields
items[] element fields| Field | Type | Description |
|---|---|---|
id | String | Unique transaction identifier in the Sumsub system (kytTxnId). |
externalTxnId | String | Unique transaction identifier in your own system. |
reviewStatus | String | Review status of the transaction. |
travelRuleStatus | String | Travel Rule protocol status of the transaction. |
paymentTxnId | String | On-chain transaction hash. |
amount | Number | Transaction amount. |
currencyCode | String | Asset ticker (for example, USDT). |
cryptoChain | String | Network the transaction was made on (for example, TRX). |
txnDate | Date | Deposit settlement time, in the format yyyy-MM-dd HH:mm:ss+0000. |
Response examples
If a matching transaction is found, you will get a response like the one below.
{
"list": {
"items": [
{
"id": "6a9fe437c4f49400208ddf4d",
"externalTxnId": "xwmlawlbczzwigsgta",
"reviewStatus": "completed",
"travelRuleStatus": "finished",
"paymentTxnId": "0x6918a463be7c076d2387753cfc017a512018c9a372c8c72e0ccf2d9fb70bc1d2",
"amount": 100.0,
"currencyCode": "USDT",
"cryptoChain": "TRX",
"txnDate": "2026-09-08 10:32:23+0000"
}
],
"totalItems": 1
}
}If no transaction matches, you will get a 200 response with an empty list — this is not an
error:
{
"list": {
"items": [],
"totalItems": 0
}
}If the request itself fails, you will receive an HTTP response containing an error code along
with a message explaining the error. For example, when a required field is missing:
{
"code": 400,
"correlationId": "0f587e62a96ce6b64809021d96abfa34",
"description": "amount is required"
}Response codes
| Status | Description |
|---|---|
200 | Search completed; returns a match if found, or an empty list — see Response examples. |
400 | Invalid request — for example, a required field is missing, or amount is not positive. |
403 | Travel Rule is not enabled for your account, or the app token lacks the View TM transactions permission. |
200