Skip to main content
Converts a cart total into a token amount at the current rate and locks it for a short window.

Request

string
required
Your merchant ID.
object
required
string
required
Settlement token: USDC, USDT, or EURC. Must be enabled for the chain.
number
required
Numeric chain ID. Must be enabled on your account. Every network live today is a test network — the examples below use Base Sepolia, 84532. Chains are numeric IDs.

Response

string
Unique quote identifier.
string
Payment identifier — carry this through to payment creation and reconciliation.
string
Your order reference, if supplied.
string
Amount to collect, as a decimal token amount — a €49.00 cart settling in EURC returns "49", not base units. The expectedAmount you get back when you create a payment is the same figure scaled by the token’s decimals.
string
Settlement token.
string
Human-readable network name.
number
Numeric chain ID.
string
Display currency.
number
Original cart total.
number
USD equivalent, for reporting.
number
The multiplier from your cart currency to the settlement token. It is 1 whenever the two share a peg — a €49.00 cart settling in EURC, or a $49.00 cart settling in USDC — and only crosses currencies when they differ. That cross rate is EUR/USD, read on-chain from the Chainlink EUR/USD price feed on the settling chain; we never fall back to a third-party FX API. On testnets — which is everything that is live today — chains without a usable feed use a fixed 1.085 stub instead, and the response carries no field telling you which of the two you got.
number
Spread applied.
number
Band within which a payment settles as exact.
string
When the locked price lapses. The pay-to address itself does not expire, but automatic monitoring of it is bounded — see the note below.
string
Creation timestamp.

Notes

After expiresAt the quote is stale, but the payment address still accepts funds. On EVM chains a late arrival is detected and credited at the expired quote’s amount and rate — but only while the invoice is still inside its monitoring window, which runs from the moment the address is issued for the length of your pool’s monitoring window (7 days by default, configurable between 1 hour and 7 days), and stops for good once the payment has been swept into your pool. Money arriving after that is not picked up or credited automatically; it is not lost, because that address can only ever pay your pool, but recovering it needs support. On TRON, monitoring stops as soon as the quote lapses, so a late payment there is not credited automatically today. Finality.
EUR/USD is read on-chain from Chainlink’s EUR/USD price feed (AggregatorV3.latestRoundData()) on the settling chain rather than from a third-party FX API, so the rate you’re quoted is one anyone can verify. On a testnet chain with no usable feed the quote uses a documented 1.085 stub instead.
stablecoinAmount is derived from your cart total and the rate, so it can come back with more decimal places than a price normally carries.Coming That figure will be rounded to two decimals when the quote is made, so the value this endpoint returns will change. Take the amount from the response and carry it forward — into what you display, what you reconcile against, and what you convert to base units — rather than recomputing it from the cart total or rounding it again yourself. Doing your own arithmetic on it is what will break; reading it will not. It will be announced before it ships. Roadmap · Amount formats.
The way the customer will pay isn’t chosen until after the quote, so every quote is checked against the higher of the two minimums for that chain — the one that covers the cost of settling a plain transfer. A small order on an expensive chain is therefore rejected (422, below_platform_minimum) and that chain is dropped from the picker, even for a customer who would have paid from a connected wallet. A 0.001-token dust floor applies everywhere, and you can set your own minimum per chain and payment method on top. Limits.

Errors

Enablement refusals are 422, not 403, each with a stable error_code: chain_not_activated, token_not_enabled, token_not_enabled_on_chain. Minimums return amount_below_minimum, below_platform_minimum, or below_merchant_minimum. Full error reference.