Written for someone who runs a working API and has never touched crypto. AI agents are a new kind of customer: they cannot fill in your signup form, so they pay per call in USDC over x402 at the moment they call. Here is what that changes — which is less than it sounds — and what it does not.
Last updated: · by FiatDock
Why an API key cannot onboard an agent
Your signup flow is not a form. It is a chain of assumptions about a person: someone reads the pricing page, picks a plan, confirms an email, copies a key out of a dashboard, stores it somewhere safe, and puts a card on file so an invoice can be settled later. Every link in that chain needs a human who can be interrupted.
An autonomous agent arriving at your API at three in the morning has a task, a budget and a wallet. It cannot confirm an email. It cannot decide, on your behalf, that its operator wants a $49/month plan. And if it could store a key, you would have handed a long-lived shared secret to a process whose whole job is to pass text between untrusted systems. The friction is not the form. It is that the account model requires a relationship to exist before the first request — and an agent's first request is usually also its last.
x402 is not a rewrite of HTTP and it does not replace your API. It replaces the account. HTTP has reserved 402 Payment Required since HTTP/1.1 without ever defining what to put in it; x402 defines that. The whole exchange is: the agent sends a normal request; the server answers 402 with the exact requirements — chain, asset, amount in atomic units, recipient address, deadline; the agent signs an authorisation and sends the same request again with the payment attached; the server verifies and answers.
Signup → nothing. There is no prior relationship to establish.
API key → a signature over one request, useless if replayed.
Plan and quota → a price per call. Price discovery is a free request: a 402 is a quote, not a charge.
Invoice and dunning → settlement at call time. There is no debt to collect.
Chargebacks → none. Nothing settles unless you answered.
What changes in your server: almost nothing
The honest list is three items, and none of them touch your business logic.
1
An MCP wrapper
A thin adapter that exposes the endpoints you already have as MCP tools. Official SDKs exist for TypeScript and Python; for most APIs this is an afternoon, not a project.
2
A wallet address
One EVM address on Base, pasted into your listing. It is where USDC arrives. Your server never sees it and never needs it.
3
One header check
Optional but recommended: accept only requests carrying the gateway's X-FiatDock-Gateway HMAC, so your endpoint answers paid traffic only.
What you do not do is the point. You do not implement 402, parse payment headers, verify signatures, hold a private key on your server, run or talk to a blockchain node, touch USDC, or reconcile anything. FiatDock's gateway issues the challenge, verifies the payment, and forwards a plain HTTPS request to you. From your server's perspective a paid call and a free call look identical.
The crypto vocabulary, in six lines
USDC — a dollar-denominated token. One USDC is intended to be one US dollar; prices are quoted in it directly, so $0.002 means $0.002.
Base — the network the payments run on. It matters to you only because your wallet address must be on it.
Wallet address — a 42-character string starting 0x. It is a destination, like an IBAN. Sharing it is safe; it is not a secret.
Authorisation (EIP-3009) — the buyer signs a message saying "move this exact amount to this exact address". It is single-use and expires.
Facilitator — the service that puts that signed authorisation on-chain and pays the transaction fee. Neither you nor the buyer pays gas.
Non-custodial — no intermediary ever holds the money. It moves from the buyer's wallet to yours in one transaction.
The three decisions that are actually yours
Price per call. Pick a number you would be content to receive thousands of times. Real x402 settlements are small: an on-chain scan of genuine x402 settlements on found per-call values clustering between $0.002 and $0.03, and FiatDock's own paid routes run from $0.001 to $0.05. Price the marginal cost of one answer, not the value of a subscription.
Latency. The buyer is holding a request open while your server works. If your answer takes a minute, price and describe it accordingly, or return a job handle.
Failure. Decide what your server returns when it cannot answer, and make sure it is an error rather than an empty success. On FiatDock a call that produces no answer settles nothing — the buyer is not charged and you are not paid — so a server that returns 200 with an empty body is quietly giving away work.
What it costs, and what you keep
Listing is free and there is no subscription to sell. The platform fee is 1% per paid call, and 0% for your first 30 days, taken as a separate on-chain payment rather than by receiving your money and forwarding a share. During the launch window there is no platform leg at all: the buyer signs one payment for the full price, straight to your wallet. An optional $20/month Verified badge adds an identity check and a trust mark; it is not required to publish or to be paid.
What we can and cannot promise
We can promise the mechanism: publishing is free, your endpoint stays private behind the gateway, payments arrive in your wallet as the calls happen, and a failed call costs your buyer nothing.
We cannot promise buyers, and here is the measurement rather than a claim. As of , no external buyer has yet paid for a third-party listing on FiatDock; three real external x402 settlements have landed on our own first-party data routes, totalling $0.003 across 10 and 12 August 2026, and both paying wallets paid hundreds of other endpoints that same week — catalog scanners confirming the paywall works, not customers. Most traffic we see is automated. Read the wider market the same way: in the public CDP Bazaar index on 13 August 2026, a seller with 759 unique payers earned $0.0675 per payer over 30 days — and across 20 of that seller's 25 endpoints, calls divided by payers came to exactly 1.00, meaning each wallet called once and never returned. Listing your API here is distribution before demand, not evidence of demand.
FAQ
Why can't an agent just use an API key?
Because obtaining one is a human workflow — a form, a confirmation email, a dashboard, a card. An agent has a wallet and a task. x402 replaces the account, not the API.
Do I need to understand crypto?
You need one EVM wallet address on Base. Your server never holds a key, signs anything, or talks to a chain.
Do I get paid directly?
Yes — each payment settles on-chain to your wallet; the 1% platform fee is a separate payment (0% for your first 30 days).
What if my server errors?
Nothing settles. The gateway forwards before it settles, and reads the JSON-RPC body because MCP reports failures at HTTP 200.