We paid 30 x402 services. Payments worked; answers did not always.
| Check | Result |
|---|---|
| Delivered a usable response after payment | 30 / 30 |
| Charged exactly the advertised price (checked on chain) | 30 / 30 |
| Sent a settlement receipt | 29 / 30 |
| Answer correct, where an independent check exists | 7 of 8 |
Total spend: $0.36. A ninth checkable answer was inconclusive.
What we found
- The payment layer is solid. Nobody overcharged and nobody took money without delivering. That is better than some vendor reports of about 5% non-delivery, but 30 calls cannot rule out a few percent.
- The problems are in the content, and a payment check cannot see them.
- A “live” filings lookup returned last year's annual report as the newest. The current one had been filed a week earlier.
- One seller's own example input, copied from its listing, was rejected by its own validator. The buyer pays for an error message.
- One seller charged without sending a receipt. The charge was correct; we found it on chain.
How it was done
- 30 endpoints were drawn at random (fixed seed) from our probe of 220 live x402 sellers on Base.
- We excluded endpoints that need personal data, endpoints that act on the world, and offers above $0.05.
- Each purchase went through a payment-safety check first, and the wallet balance was read on chain before and after every call. That is how a charge without a receipt still shows up.
- Correctness was checked only where an independent reference exists: an exchange calendar, a court citation, calldata decoding, a PDF page count, embedding size, market candles and SEC filings. Everything else is reported as “not checkable”, never guessed.
Limits
One call per seller, our own inputs, 9 of 30 answers checkable. This is a snapshot, not a rating of any seller, which is why no seller is named.
Why it matters
Agents that pay per request can now trust the payment. They still cannot trust the answer. A buyer needs a second check: is the data fresh, does the listed example work, does the response match an independent source? That is the check we built.