Travel Rule

What it is


The Travel Rule is a financial regulation, It originates from the US Bank Secrecy Act (1996), which required banks to make certain sender/receiver information "travel" with a wire transfer as it passes between institutions. In 2019, FATF (the international body that sets global AML standards) extended the same concept to crypto under Recommendation 16 , applying it to virtual asset service providers (VASPs) like OwlPay moving stablecoins instead of banks moving fiat.


The name describes the mechanism, not the customer: it's about transaction data traveling with the money, not about anyone traveling anywhere.

When it applies

Travel Rule information is required when both of these are true:

  • The transfer is an On-Ramp (Fiat → Stablecoin), Off-Ramp (Stablecoin → Fiat), or On-Chain (Stablecoin → Stablecoin) transfer
  • The transfer value exceeds USD 3,000

Below that threshold, none of this information needs to be collected. This $3,000 check applies the same way across all three transfer types — none of them are exempt just because of which type they are.

The two-step decision flow

Whether Travel Rule data is needed — and how much — comes down to two separate checks, done in order:

Step 1: Is it on-ramp, off-ramp, or on-chain AND over $3,000?
   NO  → done, no Travel Rule needed at all
   YES → go to Step 2

Step 2: Is it a self-transfer?
   YES → fill short form (wallet info only)
   NO  → fill long form (full beneficiary details)

is_self_transfer never decides whether the Travel Rule applies (that's Step 1 alone) — it only decides what shape the required data takes, once Step 1 has already said yes.

What information is required

FieldDescriptionAllowed valuesRequired
residential_country_codeISO 3166-1 alpha-2 code of the beneficiary's residential countryYes
residential_stateState/Province/Region of the beneficiary's residenceYes
residential_cityCity of the beneficiary's residenceYes
residential_address_1Primary street address of the beneficiaryYes
residential_address_2Secondary address details (apartment, suite, unit)No
residential_postal_codePostal/ZIP code of the beneficiary's residenceYes
beneficiary_typeType of beneficiaryindividual, companyYes
beneficiary_dobDate of birth of the beneficiary (YYYY-MM-DD)No
beneficiary_id_doc_typeType of identification documentIndividual: ID_CARD, PASSPORT, DRIVERS, PAYMENT_SOURCE, BANK_CARD, OTHER. Company: COMPANY_DOC, TRANSPARENCY_REGISTRY_EXTRACT, POWER_OF_ATTORNEYNo
beneficiary_id_doc_country_codeCountry code where the ID document was issuedNo
beneficiary_id_doc_numberIdentification document numberNo
beneficiary_receiving_wallet_typeReceiving wallet typepersonalWallet, thirdPartyCustodian, otherYes
beneficiary_institution_nameName of the wallet provider or institution (e.g. MetaMask)Yes

Two scenarios

The required fields differ depending on the is_self_transfer flag.

Case 1 — Transfer to a third party (is_self_transfer: false)

Full beneficiary detail is required — residential address, ID document, and wallet info:

"destination": {
    "is_self_transfer": false,
    "residential_country_code": "US",
    "residential_state": "DE",
    "residential_city": "Wilmington",
    "residential_address_1": "100 Market Street",
    "residential_address_2": "Suite 200",
    "residential_postal_code": "62704",
    "beneficiary_type": "individual",
    "beneficiary_dob": "1990-01-01",
    "beneficiary_id_doc_type": "PASSPORT",
    "beneficiary_id_doc_country_code": "US",
    "beneficiary_id_doc_number": "123456789",
    "beneficiary_receiving_wallet_type": "personalWallet",
    "beneficiary_institution_name": "MetaMask"
}

Case 2 — Transfer to self (is_self_transfer: true)

Only wallet info is required — no separate beneficiary identity, since sender and beneficiary are the same person:

"destination": {
    "is_self_transfer": true,
    "beneficiary_receiving_wallet_type": "personalWallet",
    "beneficiary_institution_name": "MetaMask"
}

Worked examples

#ScenarioStep 1: On-ramp/Off-ramp/On-chain AND > $3,000?Step 2: Self-transfer?Result
1$500 on-ramp to a friend in BrazilNo ($500 is under the limit)No Travel Rule data needed. Done at Step 1.
2$5,000 on-ramp to that same friendYesNo (third party)Long form required — friend's address, ID doc, wallet info.
3$5,000 on-ramp to your own MetaMask walletYesYesShort form required — just wallet type + institution name.
4$10,000 on-chain stablecoin-to-stablecoin transfer, to a third partyYes (on-chain counts, and it's over $3,000)No (third party)Long form required — same as on-ramp/off-ramp once over the threshold.

API reference

  • v1 (deprecated): POST /api/v1/transfer — Travel Rule fields go inside the destination object. Shuts down April 1, 2026.
  • v2 (current): GET /api/v2/transfers/travel_rule returns the JSON Schema (Draft 2020-12) describing the required travel_rule object fields for use with POST /api/v2/transfers.

Did this page help you?