Guides
Get listed as a merchant
Get a priced endpoint indexed by Roundhouse, and onto the public services directory.
Getting listed is not an application; there is nobody to ask. Everything Roundhouse shows about a merchant is either observed on-chain or read from a public catalog, so listing means making a few technical facts about your endpoint true.
Start here, before either route: your endpoint must answer an unpaid request with a 402
carrying standard payment requirements. The easiest way is to put x402 middleware in front of it —
see charge for your API. The requirements must be honest and
stable: the payTo you quote is the address the index joins your settlements on, and the
resource URL is what distinguishes your service fee from any value passing through it.
Note
There are two routes in, and they are not the same thing. Settling through the Roundhouse facilitator makes your endpoints legible — named, priced and attributed. Publishing to the public discovery catalog gets you a row in the directory. Buyers weigh the first far more heavily, so it is the one to do first; the second is worth doing as well.
Route 1 — settle through the Roundhouse facilitator#
This is the main way in, and it is one environment variable. Point your paywall's facilitator URL at ours and keep speaking the standard x402 wire format:
X402_FACILITATOR_URL="https://x402.roundhouseai.io"It is free to point at, it serves Base mainnet, and your payers need no ETH — the facilitator submits the authorization and pays the gas. Full setup, including the verify and settle call shapes, is in use the Roundhouse facilitator. Check it serves your network before you start:
curl -s https://x402.roundhouseai.io/supportedWhy this is the visible route#
A settlement we relayed arrives with facts the chain does not carry. Read off the chain alone, an
x402 payment is a bare USDC transfer to your wallet — so every endpoint behind one payTo
collapses into a single line, and who relayed it has to be inferred from the transaction sender.
Relay through us and:
| What a buyer can see | Through the Roundhouse facilitator | Inferred from the chain alone |
|---|---|---|
| Which endpoint earned it | Known — resource_url is on the settlement | Not recorded |
| Evidence grade | verified_x402: true, probability 1.0, method first-party-facilitator | true only if a named facilitator relayed it; otherwise null |
Counted in the /stats headline | Yes | Only if the relayer can be named |
Route on /explore | Named | "Route unknown" until attribution resolves it |
| Your merchant page | Your endpoints, each with its own revenue, price and traffic | One unattributed wallet total |
| Repeat buyers | Answerable — payer plus the endpoint they bought | A list of addresses |
| Failed payments | Captured, so a payment that never landed is still diagnosable | Invisible; there is nothing on-chain to index |
The evidence grade is the part that decides whether a cautious buyer sees you at all.
verified_x402 is graded on who relayed a settlement, not on the EIP-3009 marker, because Base
USDC emits that marker for any gasless authorized transfer and was doing so months before x402
existed. null means gasless and authorized but not established as an x402 payment — never
disproven, but not evidence either, and it is what vetting
agents filter on. A first-party settlement skips the inference
entirely: we settled it, so it is x402 by construction.
What this route does not do#
Being straight about the boundary, because it is the one thing people expect and do not get: our
facilitator does not publish to the public discovery catalog, so relaying through it does not by
itself create a row in the /services directory. It gives you a merchant page with
named endpoints and full attribution. For the directory row, do Route 2 as well.
Route 2 — the public discovery catalog (fallback)#
The directory is fed by the public x402 discovery catalog. In practice the reliable way in is to
settle through a facilitator that publishes to it — Coinbase's CDP facilitator does this for
the endpoints it serves, which is how the great majority of currently-listed services got there.
Several other facilitators serve the same /discovery/resources endpoint and Roundhouse crawls
those too. The x402 documentation is authoritative on the current publishing
mechanism; treat it as the source rather than this page, because it changes faster than we do.
The two routes are not exclusive and the catalog row does not care who relayed the payment. If your paywall can name a facilitator per resource, run the endpoints you care about through ours and still publish the listing.
Wait about forty minutes#
Roundhouse crawls the catalog continuously and a full cycle takes roughly forty minutes. Then it enriches your entry, from the outside:
| Enrichment | What it does | What a buyer sees |
|---|---|---|
| Liveness probe | Fetches your endpoint | is_live, http_status |
| Favicon + description | Reads your page metadata | An icon and a summary in the directory |
| Host geolocation | Resolves and locates your endpoint's IP | "Serves from", with a flag |
| Settlement join | Matches your payTo in the ledger | l30_total_calls, l30_unique_payers, onchain_volume_usdc |
Confirm you landed:
curl -sL "https://api.roundhouseai.io/v0/endpoints?q=<your-service>" | jq \
'.endpoints[] | {service_name, resource, price_usdc, pay_to, is_live, http_status, l30_unique_payers}'Note
"Serves from" is the nearest serving location of your endpoint's IP — for anything behind a CDN that is an edge PoP, not where you are. It is labelled that way on your merchant page for exactly that reason, and it is not presented as your address.
You do not need either route to exist#
Any settlement to your payTo is indexed, because it happened on a public chain. If someone
pays you, you have a merchant page at /merchant/<your-payTo> whatever relayed the payment and
whether or not anyone ever published a listing.
curl -sL "https://api.roundhouseai.io/v0/merchants/<your-payTo>" | jqWhat the routes above change is not whether you appear. It is how much of what appears is known rather than guessed.
Make the listing worth reading#
Everything below is free and takes minutes. Each one removes a reason not to pay you.
- Keep the endpoint up.
is_live: falseis the first thing a buyer sees. The probe runs from outside your network, so it reflects real availability. - Make the listed price match your
402. Buyers compare the two, and a gap past roughly 25% on three or more settlements is flagged on your merchant page. - Write a real description. It is what appears in the directory and in search. "API" is not a description.
- Serve a favicon and page metadata. The enrichment pass reads them; without them your row is a blank square in a list of logos.
- Register an ERC-8004 identity. Free. It turns a
hex string into a name on
/exploreand every profile page. - Get your first settlement. Even one distinct payer moves you out of the "nobody has ever paid this" bucket that vetting agents filter on.
What you cannot do#
Being straight about this, because it is the shape of a neutral data layer:
- You cannot pay for placement. There is no promoted tier and no ranking to buy into. Routing through our facilitator buys you detail, not position — and Roundhouse publishes no leaderboards to hold a position in.
- You cannot remove your settlement history. It is a public chain. The index reflects it.
- You cannot suppress the observed columns. If your listing claims a price nobody pays, the directory shows both numbers.
- You cannot get listed by asking us. There is no submission form, deliberately — the catalog is someone else's public list, and we index it rather than curate it.
What you can do is correct your own inputs: a live endpoint, an honest price, a real description, an identity, and a facilitator that records which endpoint was paid for.
Known limitation: stale rows#
The catalog only ever grows — the index currently holds substantially more rows than are listed
upstream, because entries the upstream dropped are not yet pruned. last_indexed_at is the
"still seen upstream" marker, and a full crawl cycle is about forty minutes, so a row much older
than that is probably gone from the source. Filtering or labelling those is open work. If your own
row looks stale, check last_indexed_at before assuming your listing was removed.
Hand it to an agent#
Get my x402 endpoint indexed by Roundhouse and check how it looks to a buyer.
My endpoint: <https://…>
My payTo: <0x…>
1. Fetch my endpoint unpaid and confirm it returns a standard 402 with a valid
accepts array. Show me the decoded body and flag anything non-standard.
2. Confirm the payTo in that 402 matches the address above.
3. Check GET https://x402.roundhouseai.io/supported and tell me whether the
Roundhouse facilitator serves the network in my 402, so I can settle through
it and have each endpoint attributed rather than collapsed into my wallet.
4. Check whether I am in the directory:
GET /v0/endpoints?q=<my service>. Report is_live, http_status,
price_usdc, last_indexed_at, and l30_unique_payers.
5. Check my settlement record: GET /v0/merchants/<payTo>.
6. Tell me, as a buyer would see it, the three weakest things about my listing
and exactly what to change.Next steps#
- Use the Roundhouse facilitator — Route 1 in full
- Charge for your API — the
402side - Test your agent identity — the full self-check
- Services directory — what a good listing looks like