Action Transfer

PATCH /api/v2/travelrule/transfers/{transfer_id OR reference_id}/{action}

This endpoint is used to take actions on a transfer depending on the current transfer status.

Path Parameters

Name
Type
Description

transfer_id

string

A system-generated identifier unique to each transaction

Example: 0663cc41-ef29-7995-8000-2d9b414b3174

reference_id

string

A unique identifier provided by the originator when initiating the transfer.

Example: transfer20250312040414

action

string

The action to be applied. See list of supported actions below.

Transfers can be queried using either the transfer_id or the reference_id.

  • reference_id: A unique identifier provided by the originator when initiating the transfer. It serves as a reference to track and retrieve transfer details and is only applicable for outgoing transfers. For incoming transfers, reference_id is not supported.

  • transfer_id: A system-generated identifier unique to each transaction. It can be used to track and retrieve details for both outgoing and incoming transfers.

Request Body

Name
Type
Description
Required

retry

boolean

Indicates if transfer request should be updated for resending.

True if action is "reject"

reject_error

string

The rejection error code of the transfer request. See below for the list of error codes.

True if action is "reject"

message

string

Additional information on why transfer request is rejected.

True if action is "reject"

transaction_hash

string

The blockchain transaction hash of the completed crypto transaction.

True if action is "complete"

Transfer Status and Supported Actions

The allowed transfer actions depend on the protocol used and whether the transfer is outgoing or incoming. An outgoing transfer is initiated by the VASP to send a transfer request to a counterparty, while an incoming transfer is a transfer request received by the counterparty VASP. Each action taken—such as “accept,” “reject,” or “complete”—triggers a change in the transfer’s status, ensuring that the workflow reflects the real-time state of the transaction.

Actions
Status
Description

-

INITIATED

The transfer request is sent to the beneficiary VASP using the Create Transfer endpoint.

-

REVIEW

The transfer request is being reviewed by the beneficiary VASP.

cancel

CANCELED

The originator VASP canceled the transfer request using the Action Transfer endpoint.

repair

REVIEW

The originator VASP updates the transfer request based on the rejection reason using the Action Transfer endpoint.

reject

REJECTED

The beneficiary VASP rejected the originator VASP’s request, providing a reason and indicating whether a retry is allowed, using the Action Transfer endpoint.

accept

ACCEPTED

The beneficiary VASP accepted the transfer request, allowing the originator VASP to proceed with executing the crypto transaction using the Action Transfer endpoint.

complete

COMPLETED

The originator VASP has completed the execution of the crypto transaction using the Action Transfer endpoint.

Protocols
Outgoing Transfer (Action → Status)
Incoming Transfer (Action → Status)

flow

cancel → CANCELED repair → REVIEW complete → COMPLETED

accept → ACCEPTED reject → REJECTED

trisa

repair → REVIEW complete → COMPLETED

accept → ACCEPTED reject → REJECTED

trp

complete → COMPLETED

accept → ACCEPTED reject → REJECTED

Reject Transfer Error Codes
ID
Code
Description

0

REJECTED

Default rejection reason.

1

UNKNOWN_WALLET_ADDRESS

VASP doesn't control the beneficiary wallet address.

2

UNKNOWN_ORIGINATOR

The originator account can't be identified.

3

UNKNOWN_BENEFICIARY

The beneficiary account can't be identified.

4

UNSUPPORTED_CURRENCY

VASP doesn't support the specified cryptocurrency.

5

EXCEEDED_TRADING_VOLUME

VASP can't receive more transaction inflows.

6

COMPLIANCE_CHECK_FAIL

VASP internal compliance check has failed.

7

NO_COMPLIANCE

VASP not able to implement travel rule compliance.

8

HIGH_RISK

VASP unwilling to proceed with the transaction after risk assessment.

9

OUT_OF_NETWORK

Wallet address or transaction is not available on the specified blockchain network.

10

BAD_REQUEST

11

UNPARSEABLE_IDENTITY

Unable to parse identity record.

12

PRIVATE_INFO_WRONG_FORMAT

13

UNPARSEABLE_TRANSACTION

Unable to parse transaction data record.

14

MISSING_FIELDS

There are missing required fields in the transaction data.

15

INCOMPLETE_IDENTITY

The identity record is not complete enough for compliance purposes.

16

VALIDATION_ERROR

There was an error validating a field in the transaction data.

17

COMPLIANCE_PERIOD_EXCEEDED

The review period has exceeded the required compliance timeline.

18

CANCELED

The transfer request was canceled.

Understanding Travel Rule Transfer Statuses

The status of a Travel Rule transfer evolves as the transfer progresses through different stages. Importantly, the status can differ depending on the point of view:

Originator’s View - The sender (originator) sees the status reflecting the current action they have completed or are awaiting confirmation on. Beneficiary’s View - The recipient (beneficiary) sees a status representing what is pending on their side, such as needing to review, accept, or reject the transfer.

This dual perspective ensures that each party clearly understands their respective responsibilities at any given stage.

Sample Requests

{
  "reject_error": "REJECTED",
  "message": "Rejected without reason",
  "retry": false
}

Response

{
  "status": "success",
  "data": {
    "transfer_id": "0663cc41-ef29-7995-8000-2d9b414b3174",
    "reference_id": "reference-transfer-01",
    "amount": 1,
    "amount_usd": 101234.00,
    "dti": "4H95J0R2X",
    "chain": "bitcoin",
    "symbol": "BTC",
    "protocol": "flow",
    "beneficiary_vasp_id": "ABCXYZ",
    "originator_address": "14qViLJfdGaP4EeHnDyJbEGQysnCpwk3gd",
    "beneficiary_address": "1F1tAaz5x1HUXrCNLbtMDqcw6o5GNn4xqX",
    "routing_number": "1234XYZ",
    "originator_account_reference_id": "account5678",
    "beneficiary_account_reference_id": "account1234",
    "transaction_hash": null,
    "transfer_status": "ACCEPTED"
  }
}

Last updated