Last updated Methodology v2026-10-20

Methodology & definitions

What every number and flag on Real Agent Revenue means, how it's computed, and what it leaves out. If a figure can't be traced to a primary source, we don't show it as verified.

Window & seller set

Window
All x402 figures use this one 30-day block range on Base. Indexer cross-checks (x402scan, Paddock) use their own trailing 30 days, fetched . Virtuals ACP figures are all-time, because the registry doesn't publish windows. They're labelled that way on every row.
Seller set
This is a curated list, not the whole market. Sellers enter when they show up on public indexers with a resolvable payTo wallet, or rank among the top ACP agents by registry revenue. Facilitator settlement wallets are left out (see exclusions).
payTo wallet
The address an x402 seller asks to be paid at. It comes from Paddock's service page, x402scan's recipient list, or the seller's 402 response. Every x402 number here is measured at this address.

Flags

Outside
Verified outside revenue. Either the seller publishes an external-vs-own split that we can cross-check onchain, or onchain data on Base meets every one of these: payers ≥ 50 · top-payer share ≤ 25% · round-trip share ≤ 10% · outside x402 revenue ≥ $100 · no unresolved indexer exclusion · 2-hop top-funder share ≤ 50%
Self-paid
Seller funds its own buyers. At least half the window's inflow came from wallets the seller had sent USDC to before they paid it: funded-first share ≥ 50% Each case links an example out-and-back transaction pair. Two-way flows where the seller's payment came after the payer's (sweeps, payouts, refunds) don't count as Self-paid on their own. They go to Mixed.
Mixed
Real payers, unproven. Paying wallets exist but at least one outside check fails, or the Self test isn't met, or the figures are registry- or indexer-only (all ACP agents, Solana-only sellers). Mixed says nothing either way about whether the business is legitimate. It means we can't verify independent demand.
Unknown
Can't tell yet. No primary figure for the window and fewer than 20 buyers on indexers. We don't estimate these.

Rank order: Outside rows by verified outside revenue, then Mixed and Self-paid by raw volume. Sponsors never affect flags or order.

Metrics

Raw volume (column "Raw volume")
Everything the seller received as x402 payments in the window, before any checks. raw = Σ USDC transfers to payTo that are x402 settlements For Base sellers this is measured onchain. For sellers that also take Solana payments, it's the larger indexer figure (all chains), and the row says only the Base part is checked. For ACP agents, it's the registry's all-time revenue.
Onchain USDC inflow
Every USDC Transfer log to the payTo in the window, x402 or not (USDC on Base: 0x8335…2913).
x402 settlement / x402 share
A transfer counts as x402 when its transaction emits USDC's AuthorizationUsed event (EIP-3009 transferWithAuthorization) from the payer and was submitted by an x402 facilitator relayer. x402 share = x402 value / onchain inflow (value-weighted over the receipts read) This separates x402 income from ordinary transfers to the same wallet, like Bitrefill's checkout payments.
Facilitator relayer
A transaction sender seen submitting settlements for 3 or more different sellers in our receipt sample, or (for sellers on a non-Coinbase facilitator such as Dexter or the seller's own) any sender other than the seller itself.
Distinct payers
Unique from addresses of USDC transfers to the payTo in the window. Payers are wallets, not people.
Top-payer share · top-5 share
top-payer share = inflow from largest payer / total inflow Top-5 is the same for the five largest.
Round-trip share (column "Circular")
round-trip = inflow from payers that also received USDC from the payTo in the window / total inflow High round-trip alone doesn't make a seller Self-paid. Refunds, payouts and sweep wallets look the same.
Funded-first share
funded-first = inflow from payers whose first USDC from the seller came before their first payment to it / total inflow This is the test behind the Self-paid flag.
Verified outside revenue (column "Outside rev · 30d")
x402 settlements from payers that are not the seller, not round-trip wallets, and not funded by the seller. It's only shown on Outside rows. outside = Σ x402 transfers from clean payers Where receipts were sampled, it's the clean share of the sample scaled to total value, marked EST. For a seller that publishes a split (Agent402), it's the published 30-day external revenue, cross-checked against onchain inflow.
Verified outside · 30d (headline)
Sum of verified outside revenue over all Outside rows.
Self-paid volume caught (headline)
Sum of raw volume over Self-paid rows: money that came from wallets the seller funded first.
Estimate (EST)
High-volume sellers have too many transactions to read every receipt, so we read a sample (150 per seller, 400 for small ones, or all where feasible) and scale the x402 share and clean share to the total. Exact figures carry no badge.
Money trail
For round-trip sellers, the totals the seller sent to its round-trip payers and what they paid back in the window, plus one example transaction pair (linked on Basescan).

Checks

2-hop funding check
For each seller that passes the other outside checks, we take the top payers (those covering 80% of inflow, up to 60 wallets) and trace who sent them USDC in the window. We ignore the seller and "hubs" (any funder that paid more than 20,000 wallets in 30 days: exchanges, bridges, routers). top-funder share = spend of top payers funded by the single most common funder / spend of all traced top payers Above 50% fails: the buyers aren't shown to be independent. It could be one operator or a shared app/onramp wallet, and we say which we can't resolve.
Indexer exclusion
If Paddock counts less than 10% of a seller's onchain x402 volume (over $1k) after its circular/pass-through screen, the gap is unresolved and the seller can't be Outside.
Cross-source disagreement
When onchain, x402scan and Paddock differ by more than 2× (over $500), the row's note lists all three.
Second-RPC spot check
For every Outside, Self-paid and two-way seller, 3 random inflow transfers are re-fetched from a second public RPC (mainnet.base.org) and matched on from/to/amount. All matched in the current snapshot.

Virtuals ACP terms

ACP registry revenue
The revenue field of the agent's record in the Virtuals ACP API (acpx.virtuals.io/api/agents), fetched directly and linked per agent. It's self-reported by the registry, all-time, with no window and no payer list. Never Outside.
Gross agentic amount ("agentic GDP")
The registry's grossAgenticAmount: the notional value of jobs, including volume an agent routed (swaps, trades), not fees it earned. The "agentic GDP" headline sums it across tracked agents. We show it next to revenue because the gap is large. It's not revenue.
Unique buyers · successful jobs
The registry's uniqueBuyerCount and successfulJobCount, all-time. Buyer wallets can be other agents run by the same owner.
Idle (>30d)
lastActiveAt is more than 30 days before the snapshot. A far-future placeholder date is shown as "not reported".
Fleet
One owner wallet controls several of the top-50 ACP agents (from the public AgentIndex list). Buyer counts may overlap across the fleet.

Confidence

High
Exact onchain figures (or a seller split cross-checked onchain), sources agree, and for Outside every check passes, 2-hop included. For Self-paid: 10+ wallets funded first and ≥90% of inflow.
Medium
Sampled estimate, a 2-hop top funder above a third of spend, a Self case with only a few wallets, a Base-only check of a multi-chain seller, or any ACP registry figure.
Low
Indexer-only (no onchain check), most volume on an untraced chain, or onchain and indexers disagree by more than 2× without explanation. Low-confidence rows are never Outside or Self-paid.

Exclusions & limits

  • Facilitator settlement wallets (Meridian, FluxA, RelAI) carry many sellers' throughput, not one seller's income. We don't list them as sellers.
  • Non-x402 transfers into a payTo (checkout payments, treasury moves) are left out of raw volume and outside revenue.
  • Solana payTo wallets aren't traced onchain yet. Solana-heavy sellers use indexer figures and are at most Mixed.
  • Refunds and payouts can't be told apart from round-trips in USDC transfers alone. That's why round-trip alone never makes a seller Self-paid.
  • Wallets ≠ people. One operator can run many wallets. The 2-hop check catches a shared funder, not deeper sybil structures.
  • ACP numbers are registry claims. They can't be cut to 30 days or tied to payers.

Reconciliation with x402stats

Removed entries

Dropped in the 20 Oct 2026 audit because they don't fit the seller set or window:

    Spotted an error? Use "Report a correction" on any agent. Every figure links to its source.