HomeGuides › 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.