The Travel Rule is a global financial regulation that requires Virtual Asset Service Providers (VASPs) — including exchanges, custodians, and brokers — to collect and share identifying information about the sender and recipient of crypto transactions above certain value thresholds. Its purpose is to prevent money laundering, terrorist financing, and sanctions evasion. As a VASP, Uphold manages the compliance logic, the underlying data exchange with other VASPs (via Notabene), and the collection interface. You are responsible for surfacing that collection to your users at the right moment in the transaction flow.Documentation Index
Fetch the complete documentation index at: https://developer.uphold.com/llms.txt
Use this file to discover all available pages before exploring further.
When it applies
Travel Rule applies to crypto transactions only — fiat transfers (bank, card) are not in scope. Above jurisdiction-specific value thresholds, your integration must surface the data collection to the user via the Travel Rule Widget. From the integrator’s perspective, the trigger is always the same: respond to the API signal (see API signals). What differs is what happens to the collected data downstream: Withdrawals — you collect beneficiary info from the user and submit it with the transaction. Uphold forwards it through its Travel Rule network (Notabene) to the counterparty. If the counterparty VASP is on the same network, it verifies the data and may reject the transaction — for example, by instructing Uphold not to send. If the counterparty is on a different Travel Rule network (such as TRUST), is a non-compliant VASP, or is an unhosted (self-custodied) wallet, no downstream exchange happens — but the data is still collected the same way. Deposits — when a crypto deposit arrives, Uphold cannot reliably tell whether it originated from a VASP on a different network, a non-compliant VASP, or an unhosted wallet. Any deposit above the threshold is placed on hold until the user provides the required originator info via the widget.API signals
Uphold signals when Travel Rule action is required on a transaction:- Withdrawals — the quote response includes
"travel-rule"in therequirementsarray. This must be resolved before the transaction can be created. - Deposits — the transaction enters
on-holdstatus with reasonpending-requests-for-information, and a pending request for information of typetravel-ruleis attached. The deposit cannot complete until the RFI is resolved.
Handling Travel Rule
Monitor transactions
Look at the
travel-rule requirement on withdrawal quotes and on-hold status on deposits. These are the signals that user action is required.Surface the requirement to the user
For withdrawals, block the quote confirmation flow until the user completes the widget. For deposits, notify out-of-band — the hold may occur after the user has left the flow.
Mount the Travel Rule Widget
Create a widget session and mount the Travel Rule Widget in your application. The widget handles the compliance collection on behalf of your platform.
User completes the form
Depending on the user’s jurisdiction and transaction, the widget presents one of two checks:
- Self-declaration — the user attests the wallet belongs to them by providing their name and declaring their relationship to it. No cryptographic action is required. This is the default check in most jurisdictions.
- Proof of Ownership — the user proves control of the wallet by signing a challenge message using their wallet software (for example, by approving an action in their wallet app or connecting a hardware wallet). Required when the user’s jurisdiction mandates cryptographic proof; Uphold applies this automatically based on current regulations and user location.
Uphold and Notabene determine which checks are shown based on internal compliance rules.
Start building
Deposit flow
Resolve a Travel Rule RFI on an on-hold crypto deposit.
Withdrawal flow
Handle a Travel Rule requirement on a crypto withdrawal quote.