Skip to main content
POST
Quote a card payout
Provider sandbox on this deployment. Our backend targets the card provider’s sandbox: no card is charged and no real transfer settles. Known limits: a purchase never reaches completed (it stops at processing), the settlement asset is the sandbox’s, not production’s (read cryptoCurrency from GET /v1/config), and the EUR window is unpublished (GET /v1/card/limits says window: unpublished). Every response says which environment answered in its environment field.
Currently being connected, docs updating. This endpoint answers mock: true: ids, shapes and statuses are real and deterministic from your input, every money figure is the placeholder 1234567.89, and nothing is sent to a provider. Integrate against the shape; do not compute anything from the figures.

Authorizations

Authorization
string
header
required

Your API key, issued by us and shown once at creation.

Body

application/json

Anonymous: no account, no identity - the price can be shown before anyone commits.

cryptoCurrency
string
required

Symbol of the stablecoin the user pays out with, as GET /v1/currencies lists it on chain.

Example:

"USDC"

chain
integer
required

Chain id the stablecoins are sent from. Must be one your key may pay FROM (403 chain_not_allowed otherwise) and one the catalogue lists.

Required range: x <= 9007199254740991
Example:

42161

fiatCurrency
string
required

ISO 4217 code the card is settled in.

Pattern: ^[A-Za-z]{3}$
Example:

"EUR"

cryptoAmount
string

What the user gives up, decimal string in major units of cryptoCurrency. Send this OR fiatAmount, never both.

Pattern: ^\d+(\.\d+)?$
Example:

"1000.00"

fiatAmount
string

What must arrive, decimal string in major units of fiatCurrency, solved backwards. Send this OR cryptoAmount, never both.

Pattern: ^\d+(\.\d+)?$
Example:

"100"

Response

The quote.

environment
enum<string>
required

Which environment answered. sandbox: at least one money upstream is the provider's sandbox - no real money moves there, and the card corridor is the sandbox's asset (read GET /v1/config), not the documented production one. production: every configured upstream is real. Derived from the configured upstream hosts at boot, never a flag.

Available options:
sandbox,
production
Example:

"sandbox"

mock
boolean
required

Always true on this endpoint: the provider behind it is currently being connected, docs updating. Ids, shapes and statuses are real and deterministic from your input; every money figure is the placeholder 1234567.89; nothing is sent to a provider. The field disappears the day the provider is wired, so branch on its presence, not its value.

Example:

true

quoteId
string
required

Pass to POST /v1/card/payout. Deterministic for the same request from the same key.

Example:

"cpq_42161_7d31a80f5c1b2e94"

cryptoAmount
string
required

Placeholder while the provider is being connected: always 1234567.89, never a price. Do not compute anything from it. When the provider is wired this becomes a decimal string in major units.

Allowed value: "1234567.89"
Example:

"1234567.89"

fiatAmount
string
required

Placeholder while the provider is being connected: always 1234567.89, never a price. Do not compute anything from it. When the provider is wired this becomes a decimal string in major units.

Allowed value: "1234567.89"
Example:

"1234567.89"

rate
string
required

Placeholder while the provider is being connected: always 1234567.89, never a price. Do not compute anything from it. When the provider is wired this becomes a decimal string in major units.

Allowed value: "1234567.89"
Example:

"1234567.89"

providerFee
string
required

Placeholder while the provider is being connected: always 1234567.89, never a price. Do not compute anything from it. When the provider is wired this becomes a decimal string in major units.

Allowed value: "1234567.89"
Example:

"1234567.89"

ourFee
string
required

Placeholder while the provider is being connected: always 1234567.89, never a price. Do not compute anything from it. When the provider is wired this becomes a decimal string in major units.

Allowed value: "1234567.89"
Example:

"1234567.89"

expiresAt
string
required

ISO 8601. Execute before this. A quote past it is refused as expired rather than silently repriced.

Example:

"2026-09-08T17:44:12.000Z"