Create Transfer

POST /api/v2/travelrule/transfers

This API endpoint is used to initiate different types of Travel Rule transfers. Including:

It combines several steps into one call—saving time and reducing the effort needed to build your integration. Here’s what happens in the background:

  • Create the customer account (if it doesn’t exist already)

  • Create the beneficiary account (if it doesn’t exist already)

  • Add or update and verify the sending wallet address

  • Add or update the recipient wallet address

  • Start the transfer 🚀

Request Body

Name
Type
Description
Required

amount

number

The amount of the digital token being transferred.

True

amount_usd

number

The USD amount equivalent of the token being transferred.

False

dti

string

Unique identifier for the assets based on DTIF standards.

Example: 4H95J0R2X(see https://dtif.org)

Conditional

chain

string

Blockchain network name.

Example: bitcoin

Conditional

symbol

string

Symbol used to represent this digital token

Conditional

protocol

string

Specifies the Travel Rule communication protocol used

True

reference_id

string

Unique identifier for the transfer, generated by the sender.

Example: transfer20250312040414

False

originator_vasp_id

string

ID of the sending Virtual Asset Service Provider (VASP). Specifying the originator_vasp_id will automatically assign the beneficiary_vasp_id to the logged-in user's VASP ID.

This is for VASP-VASP deposit record, where the originator_vasp didn't initiate the transfer.

Example: ABCXYZ

False

beneficiary_vasp_id

string

ID of the receiving Virtual Asset Service Provider (VASP). Specifying the beneficiary_vasp_id is not required for self-hosted transfers or VASP-VASP deposit record transfers. Example: ABCXYZ

Conditional

originator_address

string

Blockchain address of the sender.

Example: 12higDjoCCNXSA95xZMWUdPvXNmkAduhWv

True

originator_address_is_self_hosted

boolean

Indicates if the wallet address is self-hosted. Defaults to false

False

beneficiary_address

string

Blockchain address of the recipient.

Example: bc1qas2rvpejpvncd6z5hcscvw52n4wxw5th2de67v

True

beneficiary_address_is_self_hosted

boolean

Indicates if the wallet address is self-hosted. Defaults to false

False

routing_number

string

A numeric or alphanumeric code.

False

transaction_hash

string

The unique identifier (hash) of the crypto transaction. Note: Including this field is highly recommended to enable accurate tracking and Travel Rule validation across blockchains.

False

originator_account_reference_id

string

Sender's account ID within the originator VASP.

originator_account is required if the account does not exist yet.

Example: account5678

True

beneficiary_account_reference_id

string

Recipient's account ID within the originator VASP.

beneficiary_account is required if the account does not exist yet.

Example: account1234

True

originator_account

object

The originator account details, required if the originator_account_reference_id does not exist yet. Refer to Create Accountfor the list of available account fields.

Conditional

beneficiary_account

object

The beneficiary account details, required if the beneficiary_account_reference_id does not exist yet. Refer to Create Accountfor the list of available account fields.

Conditional

VASP-to-VASP Withdrawal Query

Customer (Individual) → Non-Customer (Individual). A customer initiates a crypto transfer to a non-customer beneficiary whose account is hosted at another VASP. The originator is an individual, and the beneficiary is also an individual.

VASP-to-VASP Withdrawal Query

Customer (Entity) → Non-Customer (Entity). A customer initiates a crypto transfer to a non-customer beneficiary whose account is hosted at another VASP. Both the originator and beneficiary accounts are entities.

VASP-to-VASP Withdrawal Query

Customer (Individual) → Customer (Entity). A customer initiates a crypto transfer to another customer whose account is hosted at a different VASP. The originator is an individual, and the beneficiary is an entity.

VASP-to-VASP Deposit Query (Record)

Customer (Individual) → Non-Customer (Individual). A transfer is created where the originator VASP didn't initiate the transfer and transfer created is for record-keeping purposes. The originator is an individual, and the beneficiary is also an individual.

Self-Hosted Wallet Withdrawal (DTI)

Customer → Customer. A customer withdraws crypto funds to their own self-hosted wallet. The transfer uses originator_account_reference_id, beneficiary_account_reference_id, and dti.

Self-Hosted Wallet Withdrawal (Chain + Symbol)

Customer → Customer. A customer withdraws crypto funds to their own self-hosted wallet. The transfer includes originator_account_reference_id, beneficiary_account_reference_id, chain, and symbol.

Self-Hosted Wallet Deposit (DTI)

Customer → Customer. A customer withdraws crypto funds to their own self-hosted wallet. The transfer uses originator_account_reference_id, beneficiary_account_reference_id, and dti.

Self-Hosted Wallet Deposit (Chain + Symbol)

Customer → Customer. A customer withdraws crypto funds to their own self-hosted wallet. The transfer includes originator_account_reference_id, beneficiary_account_reference_id, chain, and symbol.

Response

Here’s an example of the response data structure:

Last updated