Home › Guides › USDC to bank account API
USDC to bank account, as an API
FiatDock turns "sell USDC, receive EUR in a bank account" into four HTTP calls. No API key, no account, no SDK lock-in. Pricing is pay-per-call: quotes and status are free; creating a session costs $0.01 USDC, paid in-band via the x402 protocol. The service is strictly non-custodial — conversion, KYC and custody are handled by a licensed, regulated payment partner; FiatDock never touches funds.
1. Get a free quote (try it now)
curl "https://fiatdock.com/v1/quote?side=SELL&cryptoAmount=100"
Returns the live rate, every fee itemised (including the 1% service commission) and the exact amount the bank account receives. No auth needed — this call works from your terminal right now.
2. Create the off-ramp session
curl -X POST https://fiatdock.com/v1/offramp/session \
-H "Content-Type: application/json" \
-d '{"cryptoAmount": 50, "email": "owner@example.com", "customerId": "agent-1"}'
The first response is HTTP 402 with exact payment requirements ($0.01 USDC on Base). Sign the payment with any x402 v2 client (@x402/fetch in JS — not the unscoped x402-fetch, which is the older v1 line and signs a payload this API cannot read) and retry — the response then contains a one-time checkoutUrl (valid ~2 hours) and a partnerOrderId.
3. Hand the checkout link to the account owner
The owner opens checkoutUrl, gives the provider a phone number and email (identity documents only above ~CHF 999 per 30 days) and confirms. USDC flows from the sender's wallet to the licensed provider; fiat settles in the owner's own bank account. Own-account rule: the sending wallet and the receiving bank account must belong to the same person.
4. Track the order
curl https://fiatdock.com/v1/orders/{partnerOrderId}
Poll GET /v1/orders/{id} for status — polling is the only status channel, because the current provider sends no webhooks. A callbackUrl you pass is validated and stored for a future provider, but nothing is delivered to it today. Every 4xx error includes a hint field with the exact fix.
Going the other way
POST /v1/onramp/session converts the owner's own fiat into USDC delivered to a locked wallet address — same flow, same pricing. Full reference: OpenAPI · Docs.
More guides: How an AI agent cashes out crypto · Widget vs custodial exchanges · x402 off-ramp explained · All guides
Eligibility: 18+, served worldwide via our licensed provider across ~160 countries — EUR/SEPA in the EU/EEA (incl. Portugal), card elsewhere; not the UK, US persons or restricted jurisdictions (see Terms). Quotes are indicative; crypto is volatile; nothing here is investment advice.