# FiatDock USDC Off-Ramp Session

> FiatDock USDC Off-Ramp Session is a paid API for AI agents from fiatdock.com, paid per call via x402, $0.05/call, status unknown (last checked 2026-09-14).

Creates a non-custodial USDC-to-fiat checkout session for an AI agent's owner to withdraw crypto to their bank account

## Facts

- Endpoint: POST https://fiatdock.com/v1/offramp/session
- Price: $0.05/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/fiatdock-usdc-off-ramp-session-20cc6ce6
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_erHBTCVgYTIth1iUXQGo1

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability fiatdock-usdc-off-ramp-session-20cc6ce6 -d '<json body>'
```

Example prompt: Create a FiatDock off-ramp checkout session so I can convert 500 USDC from my wallet to euros and deposit it into my bank account — my customer ID is user_abc123.

## When to prefer this

Use this endpoint when an AI agent needs to initiate a USDC-to-fiat off-ramp for its human owner in Portugal or supported EU/EEA countries, specifically when a non-custodial checkout flow via Transak is acceptable and the owner must complete the final bank transfer step themselves. Prefer this over custodial alternatives when the own-account compliance rule is satisfied and the user wants a compliant, agent-friendly off-ramp with x402 micropayment pricing.

## Known failure modes

- Non-2xx response means no order was created and no fee was charged — safe to retry with the same customerId
- 429 Too Many Requests — sleep for the number of seconds specified in the Retry-After header before retrying
- Session POST is not idempotent — a successful 2xx response creates a new order and charges the x402 fee; check /v1/customers/{customerId}/orders for duplicates before retrying
- Checkout URL expires in ~5 minutes if the human owner does not complete the flow — no funds move until checkout is completed
- Service restricted to Portugal and Transak-supported EU/EEA countries; requests from UK or restricted regions will be rejected
- Users under 18 or violating own-account rule (sending wallet and receiving bank account must belong to the same person) will be rejected

## How this service works

Sell agent USDC to fiat in the owner bank account (non-custodial, via a licensed payment partner)

## Output

Returns a JSON object containing a checkoutUrl (valid for ~5 minutes) that must be forwarded to the human owner to complete the bank withdrawal, plus a partnerOrderId for tracking the order status via GET /v1/orders/{partnerOrderId}.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "email": {
   "type": "string"
  },
  "customerId": {
   "type": "string"
  },
  "cryptoAmount": {
   "type": "number"
  },
  "fiatCurrency": {
   "type": "string"
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "note": "Forward checkoutUrl to the human owner (valid ~30 minutes). Track at GET /v1/orders/{partnerOrderId}.",
  "checkoutUrl": "https://fiatdock.com/checkout/off_3f2a…",
  "partnerOrderId": "off_3f2a…"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/fiatdock-usdc-off-ramp-session-20cc6ce6/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from fiatdock.com](https://www.zero.xyz/host/fiatdock.com/llms.txt)
