Skip to main content
The Travel Rule requires Virtual Asset Service Providers (VASPs) to share originator and beneficiary information for cryptocurrency transfers above certain thresholds. This regulatory requirement, mandated by frameworks like FATF and MiCA, helps prevent money laundering and terrorist financing. WhiteBIT provides API endpoints for Travel Rule compliance, enabling B2B clients to submit required data for deposits and withdrawals.

When Travel Rule applies

Travel Rule verification is required when:
  • The transaction involves cryptocurrency deposits or withdrawals
  • The account is registered in the European Economic Area (EEA)
  • The transaction meets regional threshold requirements
  • The Travel Rule API is enabled for the account
The Travel Rule API is not available to all accounts. To request access, contact the assigned Account Manager or email institutional@whitebit.com.

Wallet types

TypeDescriptionVASP required
hostedVASP-hosted wallet (exchange, custodian)Yes — provide vaspData object
unhostedSelf-custody wallet (hardware, software)No

Party types

TypeDescriptionRequired fields
individualNatural personfirstName, lastName, residenceCountry, address
entityLegal entityfullName, residenceCountry, address

VASP identification

When the destination or originating wallet is hosted:
  • VASP in list — Use vaspId from the Get VASPs endpoint response
  • VASP not in list — Use vaspName with the VASP’s name as a string fallback

Country codes

All country fields use ISO 3166-1 alpha-3 codes (3-letter):
CodeCountry
DEUGermany
GBRUnited Kingdom
NLDNetherlands
FRAFrance
USAUnited States

Deposit verification

Flow

Deposit examples

Individual from hosted wallet (VASP in list):
{
  "uniqueId": "550e8400-e29b-41d4-a716-446655440000",
  "walletType": "hosted",
  "originator": {
    "type": "individual",
    "firstName": "Alice",
    "lastName": "Johnson",
    "residenceCountry": "NLD",
    "walletAddress": "0x9876543210fedcba9876543210fedcba98765432",
    "address": {
      "country": "NLD",
      "city": "Amsterdam",
      "addressLine1": "Damrak 1"
    }
  },
  "vaspData": {
    "vaspId": "vasp-002"
  }
}
Entity from hosted wallet (VASP not in list):
{
  "uniqueId": "550e8400-e29b-41d4-a716-446655440000",
  "walletType": "hosted",
  "originator": {
    "type": "entity",
    "fullName": "Acme Corporation Ltd",
    "residenceCountry": "GBR",
    "walletAddress": "0xabcdef1234567890abcdef1234567890abcdef12",
    "address": {
      "country": "GBR",
      "city": "London",
      "postCode": "EC2A 4BX",
      "addressLine1": "123 Finsbury Square"
    }
  },
  "vaspData": {
    "vaspName": "Famous Vasp Inc"
  }
}
Individual from unhosted wallet:
{
  "uniqueId": "550e8400-e29b-41d4-a716-446655440000",
  "walletType": "unhosted",
  "originator": {
    "type": "individual",
    "firstName": "Bob",
    "lastName": "Smith",
    "residenceCountry": "DEU",
    "walletAddress": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
    "address": {
      "country": "DEU",
      "city": "Berlin",
      "addressLine1": "Alexanderplatz 1"
    }
  }
}

Withdrawal with Travel Rule

Flow

Withdrawal examples

Individual to hosted wallet (VASP in list):
{
  "ticker": "BTC",
  "amount": "0.5",
  "address": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
  "uniqueId": "withdraw-tr-001",
  "travelRule": {
    "walletType": "hosted",
    "beneficiary": {
      "type": "individual",
      "firstName": "John",
      "lastName": "Doe",
      "residenceCountry": "DEU",
      "address": {
        "country": "DEU",
        "city": "Berlin",
        "addressLine1": "Alexanderplatz 1"
      }
    },
    "vaspData": {
      "vaspId": "vasp-001"
    }
  }
}
Entity to hosted wallet (VASP not in list):
{
  "ticker": "USDT",
  "amount": "10000",
  "address": "0x742d35Cc6634C0532925a3b844Bc9e7595f8a2B1",
  "network": "ERC20",
  "uniqueId": "withdraw-tr-002",
  "travelRule": {
    "walletType": "hosted",
    "beneficiary": {
      "type": "entity",
      "fullName": "Acme Trading Ltd",
      "residenceCountry": "GBR",
      "address": {
        "country": "GBR",
        "city": "London",
        "postCode": "EC2A 4BX",
        "addressLine1": "123 Finsbury Square"
      }
    },
    "vaspData": {
      "vaspName": "Famous Vasp Inc"
    }
  }
}
Individual to unhosted wallet:
{
  "ticker": "ETH",
  "amount": "2.5",
  "address": "0xabcdef1234567890abcdef1234567890abcdef12",
  "uniqueId": "withdraw-tr-003",
  "travelRule": {
    "walletType": "unhosted",
    "beneficiary": {
      "type": "individual",
      "firstName": "Jane",
      "lastName": "Smith",
      "residenceCountry": "NLD",
      "address": {
        "country": "NLD",
        "city": "Amsterdam",
        "addressLine1": "Damrak 1"
      }
    }
  }
}

Legacy format (withdrawals only)

The API still accepts the legacy flat format for withdrawals, but it will not pass Travel Rule verification. To complete Travel Rule compliance, use the new structured format.
Field mapping:
Legacy fieldNew field
typebeneficiary.type
vaspvaspData.vaspId or vaspData.vaspName
namebeneficiary.firstName (individual) or beneficiary.fullName (entity)
addressbeneficiary.lastName (individual) or beneficiary.address (entity)
Legacy format example (won’t pass verification):
{
  "ticker": "BTC",
  "amount": "0.5",
  "address": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
  "uniqueId": "withdraw-tr-legacy",
  "travelRule": {
    "type": "individual",
    "vasp": "Binance",
    "name": "John",
    "address": "Doe"
  }
}

What’s next

Get available VASPs

Retrieve the list of VASPs for travel rule submissions.

Submit deposit verification

Submit originator data for a deposit pending verification.

Create withdraw request

Create withdrawals with travel rule data.

EEA definition

European Economic Area countries where Travel Rule applies.