Introduction#
checkout402 turns anything your API sells into a URL that both humans and AI agents can pay — without an account, a subscription, or an API key on the buyer's side.
One object, one URL, two faces:
- A browser gets a pay page.
- An agent gets an HTTP
402describing exactly what's for sale and what it costs, then pays it and receives the goods in the same round trip.
Same checkout. Same price. No separate "agent product".
Base URL#
https://api.checkout402.com
The marketing site lives at checkout402.com; everything programmable is on api.checkout402.com.
Authentication#
Sellers authenticate with a bearer token. Buyers never authenticate — the payment is the login.
curl https://api.checkout402.com/v1/checkouts \
-H "Authorization: Bearer c402_live_your_key_here"
Keys carry a mode and a scope:
| Prefix | What it can do |
|---|---|
c402_test_… |
Everything, but its checkouts are born unarmed — they rehearse (simulated settlement, no funds) until you go live. No real money can move. |
c402_live_… |
Real settlement on mainnet. Its checkouts are born armed. |
Every checkout, whichever key made it, keeps a rehearsal face at
/c/{id}/test that settles without real money and can never be armed.
New keys are test keys
POST /v1/keys defaults to mode: test. A key minted by a one-liner should not be able to spend, so you opt in to live deliberately.
Get your first key one of two ways:
# No email, no browser — sign a challenge, get a key.
c402 login --wallet $AGENT_PRIVATE_KEY
# Sign in at https://checkout402.com/login, then:
c402 keys create --name laptop --mode live
An invalid or missing key returns 401. A key without the right scope returns 403.
What it costs#
0.5% of the price, plus a fixed $0.01. Nothing else — no monthly fee, no per-seat cost, no minimum volume.
Both parts are charged on top of the seller's price, so the seller receives the number they set. The fixed part is what one on-chain settlement costs to land, and it costs the same whether the sale is $0.01 or $1,000 — so it is added to every payment rather than absorbed into the percentage.
The fee is visible in every 402 before anyone pays, split out from the seller's amount:
{
"maxAmountRequired": "110500",
"extra": { "providerAmount": "100000", "feeAmount": "10500" }
}
That example is a $0.10 sale: $0.0005 percentage plus $0.01 fixed = $0.0105 fee, $0.1105 total.
Non-custodial, always#
Money settles on-chain directly to a wallet you control. checkout402 never holds seller funds, has no withdrawal flow, and cannot freeze a balance — because there is no balance. The fee is split out in the same on-chain transaction that pays you.
Where to go next#
| If you want to… | Read |
|---|---|
| Get a paid checkout working in five minutes | Quickstart |
| Understand the object model | Concepts |
| Put your existing API behind a paywall | Sell an API |
| Charge readers, and AI crawlers, for an article | Pay to Read |
| Do that on a WordPress site | WordPress |
| Buy from an agent | Buy as an agent |
| Hold payment in escrow until the buyer is satisfied | Escrow |
| Run a marketplace on top (B2B2X) | Build a marketplace |
| Sell inside your own web page | Your own website |
| Let Claude create checkouts for you | Connect Claude |
Agents: start with llms.txt
/llms.txt is the whole service in plain text, in one request — how to buy, how to sell, and the exact payload shapes. It's written for you, not for a search engine.