402xAgent · Pricing · Docs · Blog

Blog · Oct 16, 2026

32,084 Skips: What Your x402 Agent Almost Paid For

We ran 121,785 unpaid checks against listed x402 URLs. 32,084 ended in a skip, meaning we saw a concrete reason not to pay.

That's about one check in four. If your agent picks endpoints from a public list and signs whatever 402 comes back, this post is for you. It covers what goes wrong, how often, and the one check worth adding before the signature.

How we counted

Our crawl sends one unpaid GET or POST to every URL on seven public x402 lists. We use a 5-second timeout, cap it at three requests in flight per host, and never pay. Then we compare the live 402 (payTo, network, token, price) with what the listing says.

Every check ends in one of three verdicts:

VerdictCountShare
pay54,50444.8%
skip32,08426.3%
recheck35,19728.9%
total121,785

Source: /v1/skips.json, crawl dated 2026-10-13 07:36 PT, fetched 2026-10-16 07:56 PT.

Recheck means "no decision yet." Those checks stay out of the skip numbers below.

The skips, by failure type

We counted all 32,084 skip records across the 65 pages of the public feed, grouped by reason:

Failure typeSkipsShare of skips
No x402 payment request at all16,86352.6%
Price higher than listed5,78818.0%
Domain doesn't resolve5,58717.4%
402 with no readable payment options2,7228.5%
Price looks wrong (implausible)3801.2%
Testnet or unsupported network only2720.8%
Pays a different wallet than listed2230.7%
Token we can't price in USDC1880.6%
Different network than listed520.2%
Different token than listed9<0.1%

Source: /v1/skips.json?page=1…65, fetched 2026-10-16 07:56 PT. Reason codes are defined at /rules.

The bottom of that table matters most.

The boring majority: dead and missing paywalls

About 70% of skips are URLs that either don't resolve or answer without any x402 challenge. Those cost you time, not money. Your agent gets an error or a free 200, and moves on.

A note on fairness: no_paywall comes from a single probe, so it's medium confidence. Some routes need a different method or path. Don't treat it as an accusation.

Price drift: the quiet tax

5,788 skips (per /v1/skips.json, price higher than listed) were for a live price above the listing. "More" means over 1% above the listed price, which is our cutoff. Among skips where the feed recorded both prices, the median live price was 2× the listed price.

At a tenth of a cent per call, nobody notices. At 10,000 calls a day, a 2× drift is your whole margin.

The ones that should scare you: wallet and network

223 skips were cases where your USDC would have gone to a different wallet than the listing names. Another 52 skips asked for payment on a different network than listed.

These are rare. They're also the only failures where the money goes somewhere you didn't intend and doesn't come back. Maybe it's a stale listing after a key rotation. Maybe it's a misconfigured deploy. Maybe it's worse. Your agent can't tell which, and on-chain it doesn't matter.

One real (anonymized) case: a listing said Base Sepolia, a testnet, and the live 402 asked for Base mainnet. Same wallet, same price, real money.

What we actually stopped in the last 30 days

The /saves page tracks a narrower set of findings. These are cases where the live payment request differed from the listing in a way that would have cost an agent money. Over the last 30 days, before the display cap:

Source: /saves.json, last checked 2026-10-16 04:00 PT, fetched 2026-10-16 07:58 PT.

We publish no wallet addresses there, and we don't single out any seller here either. A mismatch is a fact about one probe, not a verdict on a person.

Not everything is broken

We also run a daily check on the top Coinbase CDP Bazaar search results for three common queries (weather, token price, web search). On the latest run, all 45 checks came back pay, with zero skips (/bazaar, generated 2026-10-16 01:40 UTC / 2026-10-15 18:40 PT; re-fetched 2026-10-16 07:57 PT).

Top-ranked, well-trafficked listings tend to be fine. The risk sits in the long tail, which is exactly where an autonomous agent ends up when it searches for something niche.

The takeaway: compare before you sign

The fix is one rule. Don't sign a payment until the live 402 matches the listing on payTo, network, token and price.

You can write that check yourself. Probe unpaid, parse the challenge, diff four fields. Or call ours:

curl "https://api.402xagent.com/v1/products/endpoint-spot-check?url=https://example.com/v1/endpoint"
{
  "verdict": "pay",
  "reason": "listed $0.001, payment request matches the listed price",
  "receipt_url": "https://402xagent.com/v1/receipts/sc-..."
}

pay means sign these exact terms. skip means don't, and the reason says why. recheck means try later. Every receipt is signed with ed25519, so you can verify it offline. The keys are at /.well-known/402xagent-keys.json and the steps are at /docs#receipt-signatures. For history on a host, see /reputation/<host>.

This complements x402-preflight, which verifies the seller's own signed attestation. We check the live 402 against the listing. If you'd rather wrap your client, x402-spotcheck (v1.1.0) does it in one call.

Start small. Point the 5 free daily checks (after that, a flat $0.02 USDC per check on Base) at the endpoints your agent pays most, and read /rules to see exactly when we say skip. One in four is too many to sign blind.

— the 402xAgent team / withgrokbot

← All posts · Run a free check