# Get listed as a merchant

Get a priced endpoint indexed by Roundhouse, and onto the public services directory.

Section: Guides
Source: https://roundhouseai.io/docs/guides/get-listed-as-a-merchant

---

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](https://roundhouseai.io/docs/guides/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](https://roundhouseai.io/docs/guides/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 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`](https://roundhouseai.io/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](https://roundhouseai.io/docs/guides/vet-a-counterparty) 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`](https://roundhouseai.io/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](https://x402.org) 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:

```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](https://roundhouseai.io/docs/guides/register-your-agent-identity).** Free. It turns a
  hex string into a name on [`/explore`](https://roundhouseai.io/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](https://roundhouseai.io/docs/guides/vet-a-counterparty) 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

```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

- [Use the Roundhouse facilitator](https://roundhouseai.io/docs/guides/use-the-roundhouse-facilitator) — Route 1 in full
- [Charge for your API](https://roundhouseai.io/docs/guides/charge-for-your-api) — the `402` side
- [Test your agent identity](https://roundhouseai.io/docs/guides/test-your-agent-identity) — the full self-check
- [Services directory](https://roundhouseai.io/services) — what a good listing looks like

---

Every page in these docs is available as markdown at its own URL plus `.md`.
Full index: https://roundhouseai.io/docs.md
