API documentation
Sign in

Internal transfers

Moving funds between the balance types of one account group, and reading the movements back.

Two calls that move funds between the balance types of a single currency account, and list what has moved:

POST /api/3/transfer       # move funds between balance types
POST /api/3/transfer/list  # what has moved

This is not a transfer between account groups. Both from and to are balance types on one account within one account group — typically moving AVAILABLE funds to BROKERAGE so they can be traded, and back again. The account group is chosen by accountGroupUuid, and both sides sit inside it.

A successful transfer does not carry resultCode. It answers uuid and status; every failure answers the ordinary resultCode and description shape instead. Test for uuid, not for resultCode being OK.

The move needs two separate permissions. The API key must carry Move Funds, and the account group must permit internal transfers. A key without the first is refused MOVE_FUNDS_PERMISSION_REQUIRED; the second produces NO_PERMISSION.

Transfer request

Sent as a signed body, like every /api/3 call. See making requests.

FieldTypeRequiredNotes
noncestringA counter that must increase with each request. An alternative to tonce
toncestringThe current Unix time in microseconds. Send this or nonce
userUuidstringThe user the credentials act for. Set automatically from the API key; sending it has no effect
fromBalanceTypeRequiredThe balance type to move out of
toBalanceTypeRequiredThe balance type to move into
amountdecimalRequiredHow much to move. Must be positive, and is rejected if it carries more decimal places than the currency allows for withdrawal — min 0.00000001
ccystringRequiredThe currency to move. Both sides are the same currency — this call never converts
accountGroupUuidstringConditionalThe account group holding the account. Required when your credential covers more than one

BalanceType

The pairs that can actually move. from and to must differ, and one side must be AVAILABLE — except MARGIN_LONG, which pairs only with BROKERAGE. Other balance types exist on the ledger and are not valid here; EXCHANGE in particular is refused outright, whichever side it is on.

ValueMeaning
AVAILABLESettled funds, free to withdraw or trade. One side of almost every transfer
BROKERAGEFunds committed to request-for-stream and OTC trading. This is the pair you will use
MARGIN_LONGMargin balance. Moves only to and from BROKERAGE, never directly to AVAILABLE
LEVERAGELeveraged trading balance, subject to a separate restriction on your account
CUSTODYExternal custody. Refused unless the account group's trading venue has both a custody profile and an external custodian configured

Transfer response

Returned only when the transfer succeeded.

FieldTypeNotes
uuidstringThe identifier of the movement, which is what appears as uuid in the list below
statusstringThe HTTP status, repeated in the body

List request

Returns fund movements for the account group, newest first.

Omitting from does not mean "everything". With no from, the window defaults to the last seven days; with no to, it ends now. Ask for an older period explicitly.

FieldTypeRequiredNotes
noncestringOptionalA counter that must increase with each request. An alternative to tonce
toncestringOptionalThe current Unix time in microseconds. Send this or nonce
userUuidstringOptionalThe user the credentials act for. Set automatically from the API key; sending it has no effect
ccystringOptionalRestrict to one currency. Omit it for every currency in the group
accountGroupUuidstringConditionalThe account group to read. Required when your credential covers more than one
fromintegerOptionalStart of the window, as Unix milliseconds. Defaults to seven days ago
tointegerOptionalEnd of the window, as Unix milliseconds. Defaults to now
maxintegerOptionalHow many records to return. Defaults to 50 — min 1, max 200
offsetintegerOptionalIndex to start from, for paging

List response

Carries the resultCode, description and timestamp fields common to every /api/3 response.

FieldTypeNotes
transfersMap[]The movements in the window. Untyped in source; the shape is below
countintHow many records this response carries
totalCountintHow many exist in the window, for paging

Transfer

One movement. Assembled per record rather than declared as a class, so the keys here are the contract and nothing more is returned.

FieldNotes
uuidThe movement's identifier, as returned by the transfer call
ccyThe currency moved
amountHow much moved, as a decimal string
fromTypeThe balance type moved out of
toTypeThe balance type moved into
stateThe movement's state, in readable form
lastUpdatedWhen it last changed, as yyyy-MM-dd HH:mm:ss — a formatted string, not a timestamp, rendered in your user's time zone where one is set and otherwise UTC. Unlike every other date on the REST API, which is Unix milliseconds
fromAccountGroupNameThe account group moved out of. null unless both group names resolve, so treat its absence as "not stated" rather than "same group"
toAccountGroupNameThe account group moved into, on the same terms

We use cookies to improve your experience and analyse site traffic. Cookie policy