Test data exchanges in Sandbox
Use the Sandbox test VASP to validate how your integration behaves across different Travel Rule scenarios before going live.
Sandbox provides a test VASP that you can use to test Travel Rule data exchanges. The test VASP is a Sumsub-hosted counterparty available only in Sandbox and reachable through the Sumsub protocol.
Transactions submitted to the test VASP follow the same request structure as production transactions, allowing you to test exchange statuses, lifecycle transitions, and incoming request handling before enabling the integration in production.
| Flow | How to test it |
|---|---|
| Start exchange before settlement | Create a transaction and specify the test VASP as the counterparty. Use the trigger values below to test different statuses. |
| Start exchange after settlement | Follow the same process and provide info.paymentTxnId when creating the transaction. |
| Answer incoming request | Use the test VASP to generate an incoming Travel Rule request. |
Before you start
Before testing Travel Rule exchanges, configure your Sandbox environment as follows:
- Switch your account to Sandbox mode.
- Make sure your organisation is linked to a VASP and that the Sumsub protocol is enabled for that VASP. If your organisation is not linked to a VASP, contact your Customer Success Manager.
- Install and activate the required Travel Rule rules in Sandbox. Sandbox uses its own rules, Travel Rule settings, and app tokens.
- Configure your Sandbox webhook endpoint and verify that it receives events.
- Configure the confirmation timeout required for your test scenarios.
ImportantConfigure Sandbox to match your intended production configuration. Differences in thresholds, ownership validation mode, or Travel Rule rules may produce different results in production.
The request structure is the same as for production flows. For the required transaction fields, refer to this article.
Test scenario values
Use the following counterparty values to trigger specific Sandbox scenarios.
| Expected status or transition | Counterparty wallet | Asset | Beneficiary name | Counterparty VASP |
|---|---|---|---|---|
completed | 0x7DF6AF1C17AC9F86F8B3FBBC25253B8B5DF2F3A1 | ETH | John Smith | Sumsub test VASP |
awaitingCounterparty | 0x5BB23977B6E52A7C79BCC5E55F1655B7A69C7622-12345 | ETH | Any | Sumsub test VASP |
unconfirmedOwnership | 0X7B1E4CFE1659FB2FF41E70C89BC03A92895C76FE | ETH | Any | Sumsub test VASP |
counterpartyVaspNotReachable | — | — | — | VASP ID 683584cd36898664230ee173 |
counterpartyVaspNotFound | — | — | — | Leave empty and set the counterparty type to unhostedWallet |
awaitingCounterparty → expired | 0x5BB23977B6E52A7C79BCC5E55F1655B7A69C7622 | ETH | Any | Sumsub test VASP |
completed → finished | 0x5BB23977B6E52A7C79BCC5E55F1655B7A69C7622-TEST | ETH | Any | Leave empty |
completed → cancelled | bc1q080rkmk3kj86pxvf5nkxecdrw6nrx3zzy9xl7q | BTC | Any | Leave empty |
NoteThe
0X7B1E4CFE1659FB2FF41E70C89BC03A92895C76FEaddress is a platform-defined trigger and always results inunconfirmedOwnership. The other scenarios depend on the configuration of the test VASP Sandbox account.Always verify the resulting value of
travelRuleInfo.statusinstead of assuming a particular result.
Recommended test sequence
Start with the successful flow and then test waiting, decline, timeout, and finalisation scenarios. This makes it easier to identify which configuration or request change caused an unexpected result.
-
completed— Verify that the exchange completes successfully, the expected webhook events are received, and your integration reads the status correctly. -
awaitingCounterparty— Verify that your integration correctly handles an exchange that is waiting for a counterparty response. -
unconfirmedOwnership— Verify that your integration treats the status as final and does not retry the exchange. -
counterpartyVaspNotReachable— Verify that your integration treats the status as final when the VASP can be identified but cannot be reached through a mutually supported protocol. -
counterpartyVaspNotFound— Verify that the appropriate rules for unhosted wallets are applied. -
awaitingCounterparty→expired— Configure a short confirmation timeout, create the transaction, and verify that the exchange transitions toexpiredwhen no response is received. -
completed→finished— Verify the finalisation flow. For an exchange initiated before settlement, submit the blockchain transaction ID after broadcasting the transfer using this API method. -
completed→cancelled— Complete the Travel Rule exchange, then cancel it instead of broadcasting the transfer. Verify that the exchange transitions tocancelled.
Testing exchange after settlement
To test an exchange created after settlement, use the same counterparty values and provide info.paymentTxnId when creating the transaction. For more information, see this article.
The exchange follows the same Travel Rule data exchange process. After the counterparty responds successfully, Sumsub can associate the exchange with the blockchain transaction ID supplied at creation and transition the exchange to finished automatically.
Testing incoming request
To test how your integration handles an incoming Travel Rule request, use the test VASP to generate a request for your organisation.
-
Go to Transactions and travel rule → Transactions.
-
Click Create sample transaction.
-
Select Travel rule (simulate inbound transfer). This option is available only in Sandbox.
-
Enter the transaction information as an incoming transfer to your organisation:
- Select the counterparty VASP.
- Provide both wallet addresses.
- Provide the applicant's name — first and last name for an individual or the full company name for a legal entity.
-
Submit the transaction.
You cannot select an existing applicant in this form. The entered values are used to create the simulated scenario.
Sumsub creates the corresponding transaction on the test VASP account, which then initiates a Travel Rule exchange with your organisation. The resulting request is processed by your integration in the same way as an incoming production request.
Handle the request using the standard incoming request flow: retrieve the transaction information, confirm or reject wallet ownership, and provide the required participant data.
NoteIf the sample transaction cannot be created, the validation message identifies the missing prerequisite. For example, your organisation may not be linked to a VASP, the selected VASP may not be a test VASP, or the simulated exchange may not be able to start.
What to validate
Validate the following for each test scenario:
- The exchange reaches the expected status.
- Your webhook handler receives and processes the complete event sequence.
- Webhook processing is idempotent, because a single exchange may generate multiple events.
- Your integration distinguishes between open and final statuses and closes its internal records when the exchange reaches a final status.
- Failed webhook deliveries trigger monitoring or alerts so that missed updates can be identified and resent from the Dashboard.
Updated about 1 hour ago