Put your catalogue on your own site#
checkout402 hosts a page for your offers at /s/<your-slug>. That is a
listing, and a listing on someone else's domain is not how an agent finds you.
The domain an agent already has a reason to visit is yours. This is how you make that domain say what it sells.
Paste one block#
Dashboard → Your website → Copy, or:
c402 embed
You get a block like this:
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"ItemList", …}
</script>
<section id="checkout402-offers">
<h2>Buy from Acme</h2>
<ul>
<li><a href="https://api.checkout402.com/c/chk_…">Company financials</a> — $0.10</li>
</ul>
<p><small>Payable by AI agents over x402.</small></p>
</section>
Paste it anywhere in your page body. No JavaScript and no stylesheet — that is deliberate, and it is the whole reason this works. Crawlers and agents fetching a URL do not run a browser; anything that needs JS to render is invisible to them.
It also degrades to plain text, so it stays useful in a reader, an email, or a terminal.
Also serve a .well-known file#
c402 embed --well-known > .well-known/checkout402
{
"checkout402": "1.0",
"seller": "acme",
"offers": "https://api.checkout402.com/v1/sellers/acme/offers",
"payments": ["x402"]
}
Serve it at https://your-domain/.well-known/checkout402. An agent that probes
the convention now finds your catalogue without parsing a single page.
What a machine sees#
The JSON-LD is a schema.org ItemList of Products, each with an Offer
carrying price, priceCurrency and the checkout URL. A package also carries
eligibleQuantity — otherwise $25 for 500 calls reads as $25 per call.
Three ways in, in increasing order of effort for the reader:
https://your-domain/.well-known/checkout402 |
one fetch, no parsing |
| the JSON-LD in your page | one fetch, one JSON parse |
https://api.checkout402.com/v1/sellers/<slug>/offers |
the full catalogue |
Only live checkouts appear#
Test-mode checkouts are excluded. A public catalogue is a commercial claim, and listing something that moves no money is a lie told to whoever reads it — including an agent deciding whether to buy.
Update your page when you add offers. The block is a snapshot, not a feed; if
you would rather it stay current on its own, render it server-side from
/v1/sellers/<slug>/offers, which is public and needs no key.