APAgent Payments Indexx402 settlements, raw beside organic
OverviewFacilitatorsChainsSellersResourcesProtocolsMethodology
llms.txtJSON APIMCPDashboards read hourly and daily rollups. Raw transfers stay in the 180-day hot window.

Methodology

Versioned rules for what counts as an agent payment and which sellers stay in the organic series. Each protocol's own rules are on its protocol page. The free API and the dashboard read the same rollups.

Organic filter v1

v1

Raw counts every USDC transfer in a facilitator-sent transaction. Organic keeps payments to sellers that clear a windowed activity bar and are not facilitator wallets.

Effective Oct 23, 2026

Methodology v1

Agent Payments Index counts x402 settlement volume from chain data. It is not a facilitator, and it does not trust self-reported dashboards.

What a payment is

On an EVM chain, a payment is a native USDC `Transfer` log inside a transaction whose **sender** is a registered facilitator settlement address.

  • USDC on Base is `0x833589fcd6edb6e08f4c7c32d4f71b54bda02913` (6 decimals).
  • USDC on Polygon is `0x3c499c542cef5e3811e1192ce70d8cc03d5c3359` (6 decimals).
  • USDC on Arc mainnet (chain id 5042) is the 6-decimal ERC-20 `0x3600000000000000000000000000000000000000`. The 18-decimal system transfer emitter is not counted. Arc testnet is not ingested.
  • The transaction sender is the facilitator. The Transfer `from` is the buyer. The Transfer `to` is the seller (`payTo`).
  • Fee legs are included in **raw** volume when they are USDC transfers in the same transaction. If the recipient is itself a facilitator settlement wallet, those legs are removed from **organic** volume.
  • USD value assumes a 1:1 USDC peg. Other tokens are not priced.

Base, Polygon, and Arc run this scanner. Base defaults to `https://base-rpc.publicnode.com`. A `BASE_RPC_URL` of exactly `https://mainnet.base.org` is ignored, because that host returns 429 on receipt reads. Polygon defaults to `https://polygon-bor-rpc.publicnode.com`. Arc defaults to `https://rpc.mainnet.arc.io`. Arc blocks are about half a second, so a useful scan needs HyperSync (`https://arc.hypersync.xyz/query`).

On Solana, a payment is a native USDC owner-balance increase in a successful transaction whose **fee payer** is a registered facilitator. The largest USDC outflow owner is the buyer. Each positive USDC delta is its own raw row, so a fee leg stays in raw volume and drops out of organic volume when the recipient is a facilitator wallet. The USDC mint is `EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v` (6 decimals).

Solana signature pages try `https://api.mainnet-beta.solana.com` and, after a 429, `https://api.uniblock.dev/uni/v1/json-rpc?chainId=solana`. `https://solana-rpc.publicnode.com` is not used for `getSignaturesForAddress`. An empty first page is not the end of history until a second public RPC returns an empty page too. Live ingest pages from the stored signature until that address is caught up. `getTransaction` uses the public RPC, then one-call requests to `https://solana-rpc.publicnode.com` and `https://solana-mainnet.gateway.tatum.io`. A host that rejects a `getTransaction` batch is retried as single calls. A cold cursor stores the newest signature and does not walk history. One address error does not stop the other addresses. A run that is still behind requeues itself. `HELIUS_API_KEY` is an optional standard-RPC fallback after those public RPCs fail, capped at 18,000 credits per UTC day. Enhanced transactions are not used.

Organic v1

A seller is organic **for the selected window** (7d, 30d, 90d, or all) when all of the following hold on that window:

  • revenue is at least **$100**
  • at least **3** distinct buyers
  • average payment (revenue / payment count) is at least **$0.001**
  • the seller address is not a facilitator settlement wallet on that chain

Comparisons are inclusive (`>=`). Raw and organic are shown side by side. A seller can be organic over 90 days and not over 7 days.

All-time organic columns on `daily_rollups` / `hourly_rollups` use the same rules on lifetime totals. The dashboard range selector uses `range_daily_series` and `range_hourly_series`, which apply the windowed classification.

What the API reads

Dashboards and `/api/v1` read precomputed rollups, not the raw transfer log.

  • `hourly_rollups` and `daily_rollups` keep facilitator × chain facts for the full history.
  • `seller_rankings`, `facilitator_rankings`, `chain_rankings`, and `window_headlines` are rebuilt for 7d, 30d, 90d, and all.
  • Headline buyer and seller counts are distinct across the window (from payment pairs and rankings).
  • Chart buyer counts are distinct **within that day or hour**. They do not sum to the headline.
  • After a month is archived, daily buyer counts on that month freeze. Volume and the organic split for daily series still follow the current seller classification, because seller-day rollups are kept.

Retention

Postgres stores raw transfers for the last **180 days**, partitioned by month, with a BRIN index on `block_time`. A month is eligible for archive only when it has fully aged out of that window. The archive script writes Parquet to the private `transfer-archive` Storage bucket, records `archive_manifest`, then drops the partition. The script refuses to drop a month that has no manifest.

Datasets

  • `sample` is synthetic. Transaction hashes start with `sample-`. It exists so a local checkout has history before a backfill.
  • `live` is written by Base, Polygon, Solana, and Arc ingestion (`rpc`, `hypersync`, or `helius`).

Do not add the two together.

Address list

Settlement addresses ship as typed adapters under `adapters/`. The registry is 36 facilitators and 196 addresses. The 2026-10-23 x402scan snapshot is still the base list. Later rows store the publisher on `facilitator_addresses.source_url`, a retirement date on `active_until`, and a JSON note on `evidence`:

  • Polygon's own facilitator: three rotations of eight signers, from the Polygon x402 guide and `https://x402.polygon.technology/supported`.
  • PayAI, Dexter, and Questflow on Polygon: signers those publishers list for Polygon that had sent at least one Polygon transaction.
  • GoPlausible on Solana: the mainnet `feePayer` from `https://facilitator.goplausible.xyz/supported`.
  • PayAI's current Solana mainnet fee payer: `https://facilitator.payai.network/supported`. PayAI Base signers that are still on that document, and that had a Base nonce above zero on 2026-10-23, stay active.
  • GoPlausible's Base signer from the same `/supported` document.
  • Circle Facilitator Service: eight Arc mainnet signers from `https://api.circle.com/v1/facilitator/x402/supported`. The same list is published for Base and Polygon; those nonces were zero, so the addresses are stored on Arc only.
  • 402104, Aurra Cloud, and Codenut are deprecated as of the observation date 2026-10-23 because x402scan sets `facilitator.deprecated`. The rows stay so older settlements can still be attributed.

The older Corbits, thirdweb, and x402.rs Polygon addresses stay in the registry and stay deprecated. Incremental Solana ingest skips deprecated addresses. Backfill still loads them so older settlements can be attributed.

Avalanche and Sei showed a positive nonce for at least one published PayAI signer on 2026-10-23. They are not ingested: Avalanche chain id 43114 does not fit `chains.id` (`smallint`), and Sei does not yet have a verified USDC settlement log in this registry. IoTeX showed a nonce of 1 for one PayAI signer. XDC nonce for the sampled signers was 0. Wildcard signer lists were not copied onto those chains.

A live spot check on Base did see snapshot addresses sending transactions in blocks 52992718–52992736.

MPP on Tempo is a planned protocol row with no adapter yet.

Ingestion schedule

  • Base, Polygon, Solana, and Arc incremental: every 5 minutes, Supabase Queue + Edge Function. Each invocation stays inside a time budget. Solana pages signatures until the stored signature, then requeues when an address is still behind. One Solana address error does not stop the other addresses. Arc's HyperSync budget is 400 blocks. History is the backfill script, not the Edge Function. Arc history starts at the 16 September 2026 mainnet launch.
  • One pending depth-0 queue message per job. A message is dropped after 5 reads or after 45 minutes, so a failed run cannot stay at the head of the queue.
  • CDP Bazaar discovery catalog: hourly, paged, resumable.
  • Read models: at the end of an ingest batch, and hourly.

How to read the API

Free JSON lives under /api/v1. Pass dataset=sample or dataset=live and range=7d, 30d, 90d, or all.

/api/v1/series.csv is the chart series. /api/v1/sellers/{address} is one seller. It is not the bulk export.

/api/v1/x402/export is the paid seller-day file. It returns 402 until a Base USDC payment settles, and 503 when X402_PAY_TO is unset.

/api/mcp exposes the same free reads as tools for an MCP client.