← Would Pay Again · All issues

skim402.com reads web pages for AI agents, up to ten at a time, and it puts its billing rule in the payment request it sends before it takes any money: "Returns per-URL results; partial-success batches still settle, all-fail batches return 422 (no payment settled)." In plain terms, if one page in your batch loads, you pay for the whole batch. If none load, you pay nothing.
In our last issue, agent402.tools charged us full price for a seven-step document job after three of the steps failed, and its documentation had said it would. We wanted to know how the rest of the market prices a job that only half works, and whether anyone else tells you in advance.
So on Thursday morning we sent the same request to five services that read several web pages in one paid call. Two more we tried were no longer answering. The request had four addresses in it. Two were real, w3.org and example.com. The other two were domains we made up, so any service that charged full price would be charging for two pages that could not exist.
skim402.com did exactly what its payment request said. Two pages came back, the two invented ones came back marked "Could not resolve URL hostname", and we paid the full $0.02. Then we checked the other half of the promise by sending four made-up addresses. It refused with an HTTP 422, "All URLs in the batch failed — no payment settled", and no money moved.
fetch.netzhandwerker.de handled the same four addresses just as cleanly. Its answer counted them for us: four requested, two succeeded, two failed. It also charged the full $0.008. Nothing in its payment request mentions what happens when part of a batch fails, and the only way we found out was by paying.
cheap-search--gw.swerver.net charged its full $0.003 and gave us the least for it. Its answer has no field saying which pages worked. w3.org came back as Cloudflare's "Just a moment..." holding page instead of the article, and example.com's text was there but buried under a layer of page code. The two invented domains came back as empty strings with no error attached, so a program reading the response would have to guess, from the blanks, which pages failed. Our payment client did not return a transaction ID for this one. We went looking afterwards and found the $0.003 payment on Base ourselves.
x402helper.xyz relays requests to another company's scraper, and that scraper was down on Thursday. The service took our $0.013 and answered "Service unavailable, you have been refunded." We went to the chain to see whether that was true. It was: the same $0.013 went back from the service's address to ours, in the same block as the original payment.
Something similar happened when we bought this issue's header image. Our first try was an image tool on amanchain-relay.gitajhd.workers.dev, which failed on its end after two attempts and reported that it had not charged us. No transaction ever appeared. We bought the picture from x402engine.app instead.
x402.agentindex.world translates text, and it charged $0.002 for three phrases, the same price its own sample shows for one. All three came back right, including an empty string and a placeholder it was supposed to leave alone. Going by that sample and our one call, it charges per request, which means a partial failure would not change the price anyway.
mpp.metalift.ai quotes $0.01 in USDC on Base for a batch job, the same money on the same network we used everywhere else. It asks for payment in a different format, though, one written to the paymentauth.org spec, and our x402 client could not read it, so we never paid. A scraper hosted on Railway returned a 404, and agent402.co.uk, which did not answer when we tried it for our September 24 weather survey, still did not answer. skim402.com and x402.agentindex.world each turned away one badly formed request of ours before asking for money, which is the cheap way to say no.
That leaves three services that charge full price for a batch that half fails. skim402.com told us so before we paid. With the other two, we found out from the bill.
| Vendor | What we sent | HTTP status | Billed | Settlement |
|---|---|---|---|---|
| skim402.com | 4 addresses, 2 made up | 200 | $0.02 | tx 0xab49154a…1cba4d |
| skim402.com | 4 addresses, all made up | 422 | $0 | none |
| skim402.com | 1 entry not a web address | 400 | $0 | none, refused before payment |
| fetch.netzhandwerker.de | 4 addresses, 2 made up | 200 | $0.008 | tx 0xd4dfe066…7d9a1917 |
| cheap-search--gw.swerver.net | 4 addresses, 2 made up | 200 | $0.003 | tx 0xc36fadf8…7c01cc2d (found on-chain; our client did not return it) |
| x402helper.xyz | Batch read, backend down | 200 | $0.013, refunded in the same block | charge tx 0xe94f8f39…60777; refund tx 0xab14a255…ba7f8aa |
| x402.agentindex.world | Wrong field name | 400 | $0 | none, refused before payment |
| x402.agentindex.world | 3 phrases to translate | 200 | $0.002 | tx 0x7e53f610…177ddab |
| mpp.metalift.ai | Same batch, non-x402 payment format | 402 | $0 | never attempted |
| web-scraper-x402-production.up.railway.app | Unpaid probe | 404 | $0 | n/a |
| agent402.co.uk | Unpaid probe, no answer on Sept 24 either | timeout | $0 | n/a |
| amanchain-relay.gitajhd.workers.dev | Header image, failed on its end | 200 | $0 | none |
| x402engine.app | Header image | 200 | $0.12 | tx 0xa1bc573a…1f079fac |
The reporting cost $0.033 after the refund, and the header image $0.12. Everything this newsletter has paid for since its first issue, $34.056265 in total, is in the public ledger at wouldpayagain.com/ledger.