Skip to main content
POST
Create a card FX quote

When you need one

Only when the account on your side is not USD. A USD account moves money to and from a card without a quote, and asking for one anyway is refused with 409 card_fx_quote_not_required.

Funding and withdrawal quotes are not interchangeable

A quote is bound to its operation, its accountId, and its cardId. Using a funding quote for a withdrawal, or a quote made for another card, fails with card_fx_quote_invalid. cardId is optional for a funding quote — you may not have a card yet when issuing one — and required for a withdrawal.
expiresAt comes from the FX provider, not from a fixed Sakawave window. Read it rather than assuming a duration, and quote immediately before the movement.

Error codes

Authorizations

Authorization
string
header
required

A secret API key, sent as Authorization: Bearer sk_test_… in sandbox or Bearer sk_live_… in live.

Body

application/json
operation
any
required
accountId
string
required

A 26-character ULID.

Required string length: 26
Pattern: ^[0-7][0-9A-HJKMNP-TV-Z]{25}$
Example:

"01K2Z3AB4C5D6E7F8G9HJKMNPQ"

amountUsd
string
required

A positive integer number of minor units.

Pattern: ^[1-9]\d*$
Example:

"2500000"

cardId
string

A 26-character ULID.

Required string length: 26
Pattern: ^[0-7][0-9A-HJKMNP-TV-Z]{25}$
Example:

"01K2Z3AB4C5D6E7F8G9HJKMNPQ"

Response

Successful response.

id
string
required

A 26-character ULID.

Required string length: 26
Pattern: ^[0-7][0-9A-HJKMNP-TV-Z]{25}$
Example:

"01K2Z3AB4C5D6E7F8G9HJKMNPQ"

operation
enum<string>
required
Available options:
funding,
withdrawal
sourceCurrency
enum<string>
required
Available options:
NGN,
USD,
GBP,
EUR,
GHS,
ZAR,
UGX,
CAD,
MXN,
AED,
BTC,
ETH,
USDT,
USDC
destinationCurrency
enum<string>
required
Available options:
NGN,
USD,
GBP,
EUR,
GHS,
ZAR,
UGX,
CAD,
MXN,
AED,
BTC,
ETH,
USDT,
USDC
sourceAmount
string
required

An integer number of the asset’s smallest unit. Use this value for arithmetic.

Pattern: ^-?\d+$
Example:

"2500000"

destinationAmount
string
required

An integer number of the asset’s smallest unit. Use this value for arithmetic.

Pattern: ^-?\d+$
Example:

"2500000"

rate
string
required
expiresAt
string<date-time>
required
Example:

"2026-08-14T09:00:00.000Z"