Skip to main content
POST
Create fiat transfer
Requires scope: manage:transfers — see Required scopes. Transfers a fiat amount from the sender to a receiver (receiverAccountId or receiverExternalId). The amount settles in the underlying stablecoin; the response includes a fiatOrigin block with the original currency and exchange rate. Send a unique idempotencyKey (safe retries). Concept guide: Transfers
The sender account must be verified, and (self-custody) its wallet ACTIVE with an allowance to the orchestration wallet. See Account verification and Approving transfers without gas.

Authorizations

Path Parameters

senderAccountId
string<uuid>
required

The account ID initiating the transfer

Body

application/json
currency
string
required

Fiat currency code (e.g. EUR, USD)

Minimum string length: 1
amount
number
required

Transfer amount

idempotencyKey
string
required

Unique key to prevent duplicate operations on retry

Minimum string length: 1
receiverAccountId
string<uuid>

ID of the receiving account

receiverExternalId
string

External ID of the receiving account (alternative to receiverAccountId)

chain
enum<string>

Supported blockchain network. Availability per chain depends on your company's configured supportedChains — see Supported chains and assets.

Available options:
AVALANCHE,
BASE,
ETHEREUM,
POLYGON,
SOLANA
asset
string

Crypto asset to settle in (e.g. USDC). Send together with chain to name exactly which asset a fiat amount settles in.

Optional while currency maps to a single asset for your tenant. Required as soon as it maps to more than one — for example USDC on two chains both denominated in USD — in which case omitting the pair is rejected with ambiguous-asset rather than guessing. Read GET /supported-assets to see which applies to you.

Example:

"USDC"

description
string

Optional transfer description

merchantReference
string

Optional merchant reference

Response

Fiat transfer created

success
boolean

Indicates whether the request was successful

result
object