Before you start
- An API key, and the
/v1prefix - see Authentication. - A destination wallet and chain. USDC on Arbitrum is the default.
- A country and currency that are actually open. Read them from Card countries and Card currencies rather than hard-coding a list.
Buying with a card
1
Price it
POST /v1/card/quote with the fiat currency and the amount the buyer pays.The call is anonymous - no account, no wallet, no identity - so you can show a
price before asking the buyer for anything. You get back what they receive, the
rate, the provider fee, our markup, and the total.See Quote a card payment.2
Verify the buyer
POST /v1/card/kyc-token returns a token for the identity check. A first-time
buyer verifies once; the same person is recognised afterwards.See Card KYC token.3
Start the payment
POST /v1/card/purchase returns redirectUrl - the hosted card page. Send the
buyer there to enter card details or pick Apple Pay, and to pass 3DS.See Start a card purchase.4
Follow it to settlement
POST /v1/card/status until it settles, or take the webhook and
stop polling. Statuses are listed on
Transaction statuses.Read
cryptoCurrency from the response, never assume USDC. The corridor is
configurable, and the sandbox settles a different asset than production. An amount
printed next to the wrong ticker looks like a broken product.Paying out to a card
Payouts run quote, then execute, then status - the same order as every payout on the platform. The quote holds a rate for a short window, and executing inside that window is what locks it. Nothing moves until the user sends stablecoin to the address the quote names.1
Quote
POST /v1/card/payout/quote - what lands on the card, and what has to be sent.
See Quote a card payout.2
Execute
POST /v1/card/payout against that quote, with the card the money lands on.
See Card payout.3
Status
POST /v1/card/payout/status until the money arrives.
See Card payout status.