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:

bash
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:

bash
curl -s https://x402.roundhouseai.io/supported

Why 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 seeThrough the Roundhouse facilitatorInferred from the chain alone
Which endpoint earned itKnown — resource_url is on the settlementNot recorded
Evidence gradeverified_x402: true, probability 1.0, method first-party-facilitatortrue only if a named facilitator relayed it; otherwise null
Counted in the /stats headlineYesOnly if the relayer can be named
Route on /exploreNamed"Route unknown" until attribution resolves it
Your merchant pageYour endpoints, each with its own revenue, price and trafficOne unattributed wallet total
Repeat buyersAnswerable — payer plus the endpoint they boughtA list of addresses
Failed paymentsCaptured, so a payment that never landed is still diagnosableInvisible; 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:

EnrichmentWhat it doesWhat a buyer sees
Liveness probeFetches your endpointis_live, http_status
Favicon + descriptionReads your page metadataAn icon and a summary in the directory
Host geolocationResolves and locates your endpoint's IP"Serves from", with a flag
Settlement joinMatches your payTo in the ledgerl30_total_calls, l30_unique_payers, onchain_volume_usdc

Confirm you landed:

bash
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.

bash
curl -sL "https://api.roundhouseai.io/v0/merchants/<your-payTo>" | jq

What 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: false is 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 /explore and 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#

Agent prompt
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#