Skip to main content
A transfer moves money between your cash wallet and one subaccount. Send a transfer with your management key. Read one with a management or management::read key. Both routes spend one token from the account throttle.
A 202 means we accepted the request, not that the money moved. Check the transfer’s status before you treat the money as moved.

Send a transfer

  • direction is named from the subaccount’s side: fund moves money into it, and defund moves money out.
  • amount is a positive decimal with at most 5 places. We never round it.
  • clientTransferId is your idempotency key, up to characters and unique per trader. Send one.

Retry a transfer

What a retry does depends on the clientTransferId you send.

Check the transfer status

GET /v3/account/subaccounts/{keyId}/transfers/{id} returns the transfer. Pass the transferId from the 202 as {id}. Its status tells you whether the money moved. If a transfer stays Requested, contact support. Don’t retry it under a new ID. On a Rejected transfer, actualBalance holds the balance we found.

Transfers and transactions

A transfer is your request to move money, and its status. It covers funding and defunding. A transaction is one row in your ledger: one movement of the balance. We write one only when money moves, for fills, fees, maker credits, settlements, and applied transfers. Read a transfer with GET /v3/account/subaccounts/{keyId}/transfers/{id}. List transactions with GET /v3/account/subaccounts/{keyId}/transactions. No route lists transfers. If you lose a transferId, send the same request again with the same clientTransferId to recover it.