What agents hit
Our agent got as far as paying at 39 of 140 products. At 27 of them it reached the card form and stopped there, and at 2 only a person can buy.
A card checkout wants a card and someone to type it in. An agent on its own has neither, so it stops there or picks a product it can pay.
x402 and MPP take that step out. Your API answers an unpaid call with HTTP 402 and a price. The agent pays, sends the call again and gets its answer. There is no checkout page, card form or sign-up.1
Who already does it
9 products we drove answer a paid call with a 402 on their own domain:
- AgentMail: x402.
- Brave Search API: x402.
- Browserbase: x402. Our agent paid it on 13 October 2026.
- Exa: x402 and MPP. Our agent paid it on 15 October 2026.
- Parallel: x402 and MPP. Our agent paid it on 15 October 2026.
- Pinata: MPP.
- Steel: x402. Our agent paid it on 12 October 2026.
- Stripe: x402 and MPP.
- Tavily: x402.
The fix, step by step
Pick the calls to charge for.
Start with the calls an agent makes on its own and that cost you to serve: a search, a scrape, a render, a report. Give each one a price.
Answer an unpaid call with a 402 and the price.
With x402 the price goes in a
PAYMENT-REQUIREDheader, as base64 JSON.2 Itsacceptslist holds the ways you take payment,3 each with a network, an amount in the token's smallest unit3 and the address to pay. The agent pays and sends the call again withPAYMENT-SIGNATURE, and you answer with the result andPAYMENT-RESPONSE.2HTTP/1.1 402 Payment Required PAYMENT-REQUIRED: eyJ4NDAyVmVyc2lvbiI6Mi… # the header, decoded: {"x402Version": 2, "resource": {"url": "https://api.example.com/v1/search"}, "accepts": [{"scheme": "exact", "network": "eip155:8453", "amount": "10000", "asset": "<USDC on Base>", "payTo": "<your address>", "maxTimeoutSeconds": 60}]}Take MPP too, and cards with it.
MPP asks the same way, with
WWW-Authenticate: Paymenton the 402,4 and puts aPayment-Receiptheader on the paid answer.4 On Stripe, MPP takes cards and stablecoins, and x402 takes stablecoins.5 A card payment over MPP is at least 0.50 USD5. Below that, take stablecoins, or bill with MPP sessions: sub-cent amounts per piece of work, settled from 0.01 USDC5.Let Stripe or Coinbase settle it.
A facilitator checks each payment and settles it for you, so you run nothing on a blockchain.6 With Stripe machine payments, both land in your Stripe balance and settle in your currency,5 and x402 settles through Coinbase's facilitator.7 Stripe takes stablecoins in all US states except New York5; elsewhere you ask Stripe for access by email, with your account ID.5 Coinbase's CDP Facilitator also works on its own: it checks, screens and settles each payment,8 and the first 1,000 onchain transactions a month8 cost nothing.
Put your prices where agents read them.
Serve your OpenAPI at
/openapi.json9 and give each paid operation anx-payment-infoblock with its offers9 and a 402 response.10 An agent then knows what a call costs before it makes it.10 Link your llms.txt fromx-service-info,10 and list the paid calls and their prices in the llms.txt too. Once it works, ask Stripe to list you in its Directory, which helps agents find you.5"/v1/search": { "post": { "x-payment-info": {"offers": [ {"amount": "10000", "currency": "<USDC token address>", "intent": "charge", "method": "tempo", "description": "One search"}]}, "responses": {"200": {"description": "Results"}, "402": {"description": "Payment Required"}} } }Let agents buy plans and credits by API or MCP.
For a plan, credits or an add-on, give agents a call that buys against the card on the account, and answer with the price and when it starts. Vercel's MCP server does this: it quotes the price and whether it recurs, and buys once the person confirms.11
Check it yourself
Call a paid endpoint without paying.
You want a 402, with
PAYMENT-REQUIRED(x402) orWWW-Authenticate: Payment(MPP).curl -si -X POST https://api.example.com/v1/search \ | grep -iE "^HTTP|^payment-required|^www-authenticate"Read the price the way an agent does.
Decode the x402 header. You want your network, the amount and your address.
curl -si -X POST https://api.example.com/v1/search \ | grep -i "^payment-required:" | cut -d" " -f2 | tr -d "\r" \ | base64 -d | jq ".accepts[] | {scheme, network, amount, payTo}"Find your prices in your OpenAPI.
Each paid operation should show its offers.
curl -s https://api.example.com/openapi.json \ | jq '[.paths[][] | objects | select(has("x-payment-info")) | .["x-payment-info"]]'Pay one call on a test network.
Use the public x402.org facilitator, which is for test networks only,6 and a test wallet. You want the answer and a
PAYMENT-RESPONSEheader.
Written by our agents from our drives and the vendors' own docs. How we write.