Skip to main content
POST
Create a transfer

Authorizations

Authorization
string
header
required

JWT bearer token. Include as Authorization: Bearer <token>. See the Authentication guide for how to obtain one.

Headers

X-Idempotency-Key
string<uuid>
required

Unique key to ensure idempotent request processing. Required on all POST, PUT, and PATCH requests.

X-Trace-Version
string

API version. Omit to use the default version.

Example:

"1"

Body

application/json

Same-asset transfer between two accounts of the same customer. The asset on amount must be enabled on both accounts. No FX is performed — sourceAmount and targetAmount on the response are equal to amount. The system generates a 1:1 quote internally and returns it on quote.

sourceAccountId
string<uuid>
required

Source account that will be debited.

Example:

"a1b2c3d4-5e6f-7890-abcd-ef1234567890"

targetAccountId
string<uuid>
required

Target account that will be credited. Must belong to the same customer as the source account, must be in ACTIVE status, and must have amount.asset enabled. Cannot equal sourceAccountId.

Example:

"b2c3d4e5-6f70-8901-bcde-f12345678901"

amount
object
required

Amount to move. The same value is debited from the source and credited to the target.

externalId
string | null

Your own identifier for the operation. Stored as given and returned on every read and every webhook. Free-form: it is not deduplicated, and the same value may appear on more than one operation. null when none was sent, and on a deposit credited from an incoming payment nobody requested.

Required string length: 1 - 255
Example:

"order-2026-0043"

Response

Transfer accepted. The operation is in REQUESTED status.

A created operation. Withdrawals, swaps, deposits, and transfers share this shape; intent.type identifies which.

id
string<uuid>
required
read-only
externalId
string | null
required

Your own identifier for the operation. Stored as given and returned on every read and every webhook. Free-form: it is not deduplicated, and the same value may appear on more than one operation. null when none was sent, and on a deposit credited from an incoming payment nobody requested.

Required string length: 1 - 255
Example:

"order-2026-0043"

customer
object
required

Reference to the customer that owns the operation.

account
object
required

Reference to a customer account, including the registered owner name.

sourceAmount
object
required

Monetary amount expressed as a decimal string in the asset's canonical scale. Use a decimal-precision library (BigDecimal, Decimal) for arithmetic — never JavaScript Number. Request bodies use the scalar AmountValue instead.

targetAmount
object
required

Monetary amount expressed as a decimal string in the asset's canonical scale. Use a decimal-precision library (BigDecimal, Decimal) for arithmetic — never JavaScript Number. Request bodies use the scalar AmountValue instead.

intent
Withdrawal · object
required

Operation intent. Discriminated by type.

quote
object | null
required

Consumed quote. null for deposits created without a prior quote; present for all other operations.

refund
object | null
required

The refund you asked for on this deposit. null on every operation nobody asked back, and on a return the payer's bank issued on its own.

fees
object[]
required
transactions
object[]
required

Rail-level transactions for the operation. Only confirmed transactions are included; pending or failed rail movements are omitted.

requirements
object
required

What compliance is waiting on for this operation, read live at request time. All four groups are empty for an operation that never went through a compliance review. An operation in ACTION_REQUIRED is waiting on whatever is in currentlyDue and errors.

Example:
currentState
object
required

The operation's current state. Carries a status, optional reason, and the time the state was entered.

createdAt
string<date-time>
required
read-only
updatedAt
string<date-time>
required
read-only
tags
object[]

System-managed labels stamped onto the operation when it is created. Inherited from the account's propagating tags.

Example: