Skip to main content
Quote before every order. The response prices the order and tells you which providers can serve it — and for headless, which of them can serve it headlessly, which is a smaller set. The endpoint, its parameters and the full response are in the API reference. Two things differ on the headless path.

1. Ask for headless quotes

Endpoint: POST /payments/crypto/quote?integrationMode=HEADLESS integrationMode decides which providers are queried and whether the headless-support filter is applied. It takes WIDGET (the default), HEADLESS, or ALL. At 2026-05-01 each quote also carries fields the order needs: destinationNetworkCode is optional. If you send it, the quote returns the same value; if you don’t, the quote leaves it out. The chain already comes from destinationCurrencyCode (for example, USDC_BASE is USDC on Base). Stripe is the exception: it returns a headless quote only when you send destinationNetworkCode. A destinationNetworkCode that doesn’t match the chain in destinationCurrencyCode, for example USDC_BASE with ETH, returns 400 INVALID_CRYPTO_CURRENCY. Pass customerId whenever you have one, so ramp intelligence and previously-used scoring apply.

2. Send the version header

Header: Meld-Version: 2026-05-01
integrationMode arrived in 2026-05-01. An older version silently ignores it — no error, no warning, just widget quotes. You then create a headless order against a provider that never offered one, and the failure surfaces at order creation instead.

Next

Check eligibility for the provider you chose, then create the order.