Which x402 vendors behave?
Discovery indexes answer what exists. Before an agent pays a vendor, the harder question is can it trust one: does the 402 say what it sells, can you tell a rejected payment from a broken server, does it advertise headers that don't exist. Each check below came from a real failure that cost us time or money while building the governance gate — one of them caught a vendor charging us for an HTTP 402. We hold our own vendor to the same bar, in the same table.
Conflicts of interest, stated up front
- We are a paying customer of one of the vendors below. AgentLedger runs real mainnet payments through Nirium's x402 facilitator. You don't have to take our word for that either — the settlements are in our public ledger, and we debugged a month-long facilitator outage with them in the open.
- One of the vendors below is ours. AgentLedger Marketplace is the seller in our own demos. It is measured by the same script, on the same day, with no exceptions.
- Right now every vendor passes every check — ours and our vendor's included. Read that as a statement about the checks, not a ranking: they are a floor that a serious implementation clears, and today three serious implementations clear it. A table where everyone scores full marks discriminates nothing, and we would rather say so than let the scores imply more than they do.
The defence against all of this is not our good intentions: it is that every check is a public read you can run yourself, and the verifier is open. If we had tilted a result, re-running it would show it.
| Vendor | Quotable 402 | Says what it sells | Discovery (bazaar) | Diagnosable rejection | No phantom headers | Survives foreign Origin | Stable price | El `resource.url` del 402 apunta a donde se lo pidió | Score |
|---|---|---|---|---|---|---|---|---|---|
Agent402real money Stellar pubnet (+12 networks)x402 + MPP (evm+tempo) | 8/8 | ||||||||
AgentLedger Marketplaceus Avalanche Fuji · Base Sepolia · Solana devnetx402 | 8/8 | ||||||||
Niriumreal money Stellar pubnetx402 | 8/8 |
- Agent402 — Third-party vendor. The only external one settling on pubnet today.
- AgentLedger Marketplace — Our own demo vendor, measured with the same probe as everyone else.
- Nirium — Third-party vendor. A collaborator who invited us to audit them.
What each check means
- Quotable 402
- Answers a payment request (HTTP 402) with a readable offer. A resource that returns 200 or 500 before payment can't be governed — there's nothing to evaluate.
- Says what it sells
- The 402 declares a description and content type. We've seen vendors charge without saying what they deliver — signing blind is the protocol's default.
- Discovery (bazaar)
- Declares per-parameter descriptions and an output example via the x402 `bazaar` extension — what lets an agent judge a resource before paying, not after.
- Diagnosable rejection
- An invalid payment gets a different, specific answer than sending nothing at all. When the two are indistinguishable, a buyer can't tell 'rejected' from 'never sent'.
- No phantom headers
- Doesn't advertise CORS headers the x402 protocol doesn't define. A vendor claiming headers that don't exist sends integrators chasing ghosts.
- Survives foreign Origin
- Doesn't 500 when a browser from an unknown origin asks. A crash here means no browser outside the vendor's allowlist can pay — and it's an unauthenticated crash.
- Stable price
- The quoted price doesn't change between two back-to-back reads. A price that moves under you is a price you can't govern against.
- El `resource.url` del 402 apunta a donde se lo pidió
- Un vendedor real declaraba `http://` en el `resource.url` de un 402 servido por HTTPS (bug de `getUrl()` de `@x402/express` leyendo `req.protocol` sin `trust proxy` detrás del borde TLS). Un comprador que use ese campo para re-pedir el recurso cae en un redirect — y en un camino de pago eso es fatal: nuestro propio endpoint pago usa `redirect: "manual"` a propósito, porque seguir un 302 es por donde una URL pública salta a una privada. Se compara el ORIGEN, no la query: hay vendedores que canonicalizan parámetros y eso es legítimo.
Measured 2026-08-31 · A GET for the 402 · one invalid payment (base64 JSON, no signature) · a CORS preflight. No payment, no keys. · No payment is made and no key is used — every check is a public read anyone can reproduce with our open verifier. A high score means a vendor is well-behaved on the wire, not that its data is good or its settlement works; those need a real purchase.
The verifier is part of our open toolchain. It probes the wire only — the 402 envelope, an invalid payment, a CORS preflight — and never pays. What it can't judge without a purchase (whether the receipt carries a settlement hash, whether what's delivered matches what's declared) it says so, rather than assuming. New to x402? Start with the protocol guide.