How to check an x402 counterparty before paying

Published x402 · counterparty risk · Base

Your agent reads a 402 Payment Required, signs, and pays. The whole thing takes less time than a blink, and it happens thousands of times a day to endpoints the agent discovered minutes ago. The payment is an EIP-3009 USDC transfer on Base: no chargeback, no escrow, no dispute button. Once the money has moved, the only thing you can do about a bad counterparty is not pay it again.

So the check has to happen before, and it has to be cheap enough to run every time. Here are the five checks we would run, in order of how much each one tells you. Everything below comes from operating an index of every x402 / EIP-3009 USDC transfer on Base, 1.4 million addresses and counting.

Getting one payment wrong costs nothing, which is the whole problem

In a recent week (August 2026) the median transfer we observed was about $0.006. A single bad payment costs less than a rounding error, so nobody disputes one and nobody notices one. That is exactly the trap. Agents don't make one payment; they make thousands, unattended. A counterparty that quietly takes the money and returns junk, or nothing, never shows up in an error log. It shows up in your books, weeks later, as a line you can't explain.

The checklist

1 how old is it by hand 2 does anyone come back the graph 3 where its money began by hand 4 what it sits next to the graph 5 how activity grew the graph each check tells you more than the one before
Only the first check is a minute in a block explorer. Number three starts there too — one address at a time — but seeing that the same source funded a thousand siblings needs the whole transfer graph, and so do the last two.

1. The address is older than a few days

The cheapest signal there is. Look the address up on any Base block explorer and find its first transaction. Payment addresses of real services live for months and accumulate history. Scam addresses are created in batches, used briefly and abandoned, because burning an address costs nothing. Across our whole index, three out of four addresses are gone within a day of their first transfer; we wrote up what that population looks like.

Age alone proves nothing. Every honest service was new once. But an address that appeared days ago and is asking for money has earned the rest of this list.

2. Somebody has paid it twice

This is the single most telling behavioral question, and an explorer will not answer it for you: you need the address's full payment history grouped by counterparty. Real services have returning customers; an agent that bought a useful API call buys it again. A take-the-money-and-disappear operation has almost none: every payer pays exactly once, finds nothing there, and leaves.

For scale: among established recipients active in one recent week, the median share of one-off counterparties was about 45%. Plenty of honest services have plenty of one-time buyers. The pattern that should stop your agent is an address where nearly everyone paid once and never came back.

3. Its first money did not arrive with a thousand siblings

Fresh scam addresses are rarely funded one at a time. They are seeded in batches from a single source; that is what address-farm tooling produces. In one week of August 2026 we watched 6,708 newly funded addresses arrive in 119 groups, each group sharing a single first funding source. The largest group held 1,375 addresses. We have yet to meet an honest business model that needs a thousand sibling payment addresses created in a week.

You can check one address's funding source by hand on an explorer. You cannot see, by hand, that the same source funded a thousand siblings.

That takes the graph.

4. It does not sit next to a known incident

Money moves between related addresses. An address one hop away from a wallet already identified in a scam incident is not automatically guilty, but it is worth a pause, the way a phone number one digit off from a known fraud line is. This check is genuinely hard to do yourself: it needs a maintained list of flagged addresses and a transfer graph to walk. One caveat any serious implementation has to get right: a dust transfer sent to an address by a stranger must never count against it, or anyone could taint anyone for a cent.

5. Its activity grew like usage, not like a campaign

Real usage grows and breathes. Manufactured activity arrives in spikes, a burst of transfers far above anything in the address's own past, often right before the address starts advertising itself. One explorer screenshot won't show you this. A baseline over time will.

By hand, you get two checks out of five

Checks 1 and (partly) 3 are explorer work: a minute per address, fine for a one-off. Checks 2, 4 and 5 are graph work over the full transfer history. That is not realistic by hand, and it is not realistic at all for an agent that decides in milliseconds.

by hand 2 / 5 checks you can do minutes per address one call 5 / 5 checks, every time $0.01 per address, over x402
The difference is not effort, it is reach: the graph checks are not slow by hand, they are impossible by hand — and an agent pays in milliseconds, not minutes.

This is the gap WalletBureau exists to close. We run the checks above, plus a few more described in the methodology, against our index of the complete x402 / EIP-3009 history on Base, and compress the answer into a 0–100 score, a verdict (ok / caution / avoid), and the list of flags that fired, each with its reason in plain text:

curl https://walletbureau.com/v1/demo/score/0x8f3a…b1c2

The demo endpoint is free: a few checks per day, no signup. The paid endpoint returns the same JSON for $0.01 per call, paid over x402 itself, so your agent can vet an address in the same protocol it uses to buy everything else. If your agent speaks MCP, the same check ships as an MCP server and works with no configuration.

What a score will not tell you

A behavioral score reads payment history, so it cannot see what has no history. A brand-new address gets a neutral, low-confidence answer, not a verdict; we say so explicitly rather than guess. It cannot tell you whether the service behind an honest-looking address is any good. And it is a set of risk signals, not an accusation: a low score means the patterns above are present and worth your attention, not that the owner is a criminal. Every flag we return comes with its reason precisely so you, or your agent, can decide what to do with it.

The numbers above come from the WalletBureau index of x402 / EIP-3009 USDC transfers on Base; the queries were run on 2026-08-20. How we classify transfers and what each signal means is in the methodology.

Risk signals, not accusations. A low score means we saw patterns worth checking — not proof of fraud. We explain every flag, and we fix mistakes: if you think a flag is wrong, write to us and a human will review it.

Read the methodology →

Check an address

← All articles