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.05 USDC, paid in-band via the x402 protocol. The service is strictly non-custodial — conversion, KYC and custody are handled by Transak, a licensed provider; FiatDock never touches funds.
curl "https://fiatdock.com/v1/quote?side=SELL&cryptoAmount=50"
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.
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.05 USDC on Base). Sign the payment with any x402 client (x402-fetch in JS) and retry — the response then contains a one-time checkoutUrl (valid ~5 minutes) and a partnerOrderId.
The owner opens checkoutUrl, completes KYC once (ever, at the provider) 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.
curl https://fiatdock.com/v1/orders/{partnerOrderId}
Free polling, or pass a callbackUrl in step 2 to receive HMAC-signed webhooks on every status change. Every 4xx error includes a hint field with the exact fix.
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 · x402 off-ramp explained · MCP payments server · FAQ
Eligibility: 18+, Portugal + Transak-supported EU/EEA countries (not the UK or restricted jurisdictions — see Terms). Quotes are indicative; crypto is volatile; nothing here is investment advice.