checkout402_
Guides

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.