Crypto collection
Collect stablecoin (USDC, USDT) from customers where your account and environment support it. You can use the same hosted checkout pattern as and , or drive everything from your backend with deposit quotes when you need payment instructions in JSON.
Pricing, expected on-chain amounts, and settlement are handled by the platform; you still reconcile with your reference, transaction references, and .
Supported tokens and networks (checkout)
Checkout crypto uses token (e.g. USDC, USDT) and network (a stable asset code returned in crypto_available_networks). The table below is the full product matrix; your environment may still hide options until they are configured.
Use the network string exactly as returned in crypto_available_networks[].network when calling select-method—do not guess abbreviations (for example Ethereum is USDC_ETHEREUM / USDT_ETHEREUM, not ETH).
In production, still prefer live discovery: GET /api/v1/client/currencies plus the crypto_available_tokens / crypto_available_networks payloads for the session, so you never drift from what is enabled for that checkout.
Supported assets (quotes)
For client quote flows (POST /api/v1/client/quotes), stablecoin corridors and payment_network / payment_address rules are documented on and . Typical funding tokens are USDC and USDT; network codes there follow the quote/OpenAPI contract (may differ from checkout network strings—always take values from the create/accept response for that flow).
Hosted checkout
Initialize payment
Use the same endpoint as other collection types:
POST /api/v1/client/checkout/initialize
Authentication
Signed requests as in .
Request body (example)
Use fiat currency and amount for the checkout total (commonly USD for crypto checkout). The flow converts that to a stablecoin amount after the customer picks token and network.
To only offer crypto on hosted checkout, pass payment_methods:
You can combine methods, e.g. ["CRYPTO", "CARD"], so the customer can choose at checkout.
Field names and required fields follow the same rules as . Amounts are decimal strings, not floats.
Success response (201 / 200 — shape)
Send the customer to data.checkout_link unless you implement the select-method steps yourself (see below). Store transactionRef with your reference for support and verification.
Crypto must be enabled for the payer and configured for your environment; otherwise initialize or later steps may return an error—treat messages as authoritative and confirm with support if onboarding is incomplete.
Choosing crypto on the checkout session (hosted or custom UI)
After initialize, the browser or your own front end drives the hosted checkout session using the access_code from the URL. These session calls do not use your business HMAC headers because the checkout access code acts as the session secret.
Endpoint (each step): POST /api/v1/checkout/:access_code/select-method
Step 1 — Choose crypto rail
Request
Response (200) — pick a token next
If only one token is configured, the server may skip this step and proceed automatically.
Step 2 — Choose token
Request
Response (200) — pick a network from the list
Only rows your environment supports will appear. If exactly one network applies, the API may select it without returning this step.
Step 3 — Choose network and receive deposit instructions
Request — network must match a crypto_available_networks[].network value.
Response (200) — show this to the payer
The customer must send the exact amount on the correct chain and token; wrong chain or wrong amount delays or prevents auto-confirmation.
Step 4 — Payer confirms they have sent
POST /api/v1/checkout/:access_code/crypto-submitted
Response (200)
This moves the session toward awaiting on-chain confirmation while the provider matches the deposit. Rely on webhooks and/or GET /api/v1/client/payment/verify rather than assuming immediate completion.
Verify payment status
Same as other collection types:
GET /api/v1/client/payment/verify?reference=<your reference>
Signed with your business API key. Use this together with webhooks for a definitive server-side read.
Example success response (200)
Shape is shared across rails (card, mobile money, crypto). Values vary by transaction.
While status is still pending or processing, the server may consult the card provider when applicable; crypto flows still return the latest local status and message when no provider call is needed. Treat status_name / payment_completed as authoritative for your UI.
Deposit quotes (API-first)
When you do not want the hosted checkout UI, create and accept a DEPOSIT quote and present the returned payment details to the customer.
Stablecoin-related quote types
These are the usual client quote patterns when stablecoins are on the source or destination side (exact rules and fields are in and ):
- Supported tokens: USDC, USDT (where enabled).
- DEPOSIT: customer sends stablecoin; credited per quote and wallet rules.
- WITHDRAWAL (stablecoin corridor): fiat from wallet to an external stablecoin address (beneficiary rules differ from fiat withdrawals—often self-beneficiary is created automatically).
- DIRECT_EXCHANGE: stablecoin in, fiat out to an external beneficiary—requires a beneficiary up front.
The platform applies conversion and fees once the quote is created; always use quote and acceptance responses rather than recomputing amounts client-side.
Example: create a crypto-funded deposit quote
Adapt fields to your corridor; this shape matches the historical API examples:
payment_networkandpayment_addressdescribe the funding leg for stablecoin-involved quotes.origin_referenceandon_behalf_offollow the same business rules as other quote types—see and .
After accept, use payment_details / provider payloads from the response, then track completion via webhooks and transaction APIs.
Integration checklist
- Discover currencies and limits with
GET /api/v1/client/currencies(and related discovery calls from the ). - Initialize checkout with fiat
amount/currency, or create a deposit quote for API-only flows. - Hosted path: run the
select-methodsteps forCRYPTOuntil deposit instructions are returned; thencrypto-submittedafter the user sends. - Quote path: create → accept → show instructions from the accept response.
- Reconcile with webhooks and
payment/verify; handle retries idempotently.
Related docs
- — shared discovery and patterns
- — initialize / verify field reference
- — parallel hosted flow
- and — quote types, beneficiaries, crypto fields
- — verifying and processing transaction events