Building Institutional-Grade x402 Analytics on BigQuery
A deep dive into how we built a public, SQL-queryable ledger of every x402 micro-payment on Solana and Base. Covering schema design, extraction pipelines, cost-aware partitioning, on-chain validation methodology, and reproducible queries for every figure we report.
Why We Built This
402 Payment Required status code for permissionless, per-request API monetization. Clients generate cryptographic signatures offline, retry requests with payment headers, and facilitators verify and settle USDC on-chain, all within a single block. It is elegant. And it is scaling fast.
We have now indexed every high-fidelity x402 transaction from the absolute genesis of the protocol across both Solana and Base. On Solana, the first x402 payment settled at 2025-07-04 04:58:21 UTC. On Base, it was 2025-07-02 11:26:05 UTC. From those first blocks through April 2026, the protocol has processed 173,938,621 successful payments totaling $49,262,937 in USDC volume.
When we surveyed the tooling landscape, we found dashboards and explorers. Useful for quick lookups. But nothing built for the teams that actually need to query, audit, and monitor x402 flows at institutional scale: compliance desks, risk engineers, protocol auditors, and data teams inside funds and exchanges.
So we built Tektonicx402: a public, open-access ledger of every x402 micro-payment on Solana and Base, published as Google BigQuery public datasets under CC-0. No API keys. No rate limits. Just SQL.The Verified Ledger (as of April 3, 2026)
47.84M
Solana Successful Txns
47,842,167 since genesis
126.1M
Base Successful Txns
126,096,454 since genesis
173.9M
Total Txns
across both networks
$8.59M
Solana Volume
cumulative USDC settled
$40.67M
Base Volume
cumulative USDC settled
$49.26M
Total Volume
combined USDC settled
Reproducing These Figures
This is the exact query that produces the numbers above. Run it yourself against the Tektonic x402 public dataset on BigQuery Analytics Hub. Every figure we report in this post can be traced back to a query like this one.
SELECT
chain,
COUNT(*) AS total_tx,
SUM(amount_usdc) AS total_vol
FROM (
SELECT 'solana' as chain, amount_usdc
FROM `web3-publicgoods.tektonic_x402.sol_raw`
WHERE tx_status = 'SUCCESS'
UNION ALL
SELECT 'base' as chain, amount_usdc
FROM `web3-publicgoods.tektonic_x402.base_raw`
WHERE tx_status = 1
)
WHERE block_timestamp >= TIMESTAMP("2024-01-01")
GROUP BY chain;Methodology and Rigor
tx.err = '' (Solana) and receipt_status = 1 (Base) are counted toward volume. This ensures exactly 0.00% inflation from reverted or failed executions. On Solana, a transaction can land on-chain and still fail. The runtime marks it with an error status, but it is present in the ledger. On Base, transactions can revert after inclusion. If you are building an explorer for casual browsing, showing these is fine. If you are building infrastructure for institutional reporting, it is not. A compliance report that includes failed payments is wrong. A volume metric that counts reverted transactions is misleading.
Signer-Level Attribution. We resolve Associated Token Accounts (ATAs) to their underlying owner wallets entirely inside the data warehouse. This ensures we capture P2P settlements even if they occur through un-indexed third-party clients.
Temporal Precision. Data is partitioned daily on block_timestamp to prevent historical drift and ensure linear accountability. Every query against our dataset enforces a partition filter. This is not optional. Unpartitioned queries on the Solana public dataset scan 100TB+ and generate $5,000 to $20,000 in BigQuery bills. Our extraction queries enforce block_timestamp range filters to keep costs between $0.50 and $2.00 per single-day window.Architecture Overview
web3-publicgoods, natively unified in us-central1. To subscribe, save the dataset into your GCP project with a reference name (e.g., tektonic_x402) and replace placeholder project IDs in our SQL templates with your Google Cloud Project identifier.Validator-level blockchain data exports feed into BigQuery raw tables
Extraction queries filter USDC transfers by known facilitator registries (28 orgs on Base, 15 on Solana)
Failed/reverted transactions are explicitly filtered: tx.err = '' on Solana, receipt_status = 1 on Base
ATA resolution maps token accounts to owner wallets inside the warehouse
Normalized outputs populate sol_raw and base_raw with human-readable USDC amounts
Five pre-built analytics views aggregate volumes, facilitators, buyers, sellers, and hourly trends
Solana Schema: sol_raw
bigquery-public-data.crypto_solana_mainnet_us, using BigQuery's pre-decoded Token Transfers table rather than parsing raw instruction JSON. This is a critical design choice. It avoids brittle JSON field extraction and leverages Google's native Solana decoding pipeline.
We identify x402 payments by finding USDC transfers where known facilitators appear as transaction signers, then enrich with amount normalization and execution status tracking. The facilitator registry currently contains 15 organizations across 22 public keys.tx_signatureSTRINGSolana transaction identifier (base58 encoded)block_timestampTIMESTAMPBlock time. Used for mandatory partition filtering.token_mintSTRINGUSDC token mint addresssource_ataSTRINGBuyer's Associated Token Accountdestination_ataSTRINGSeller's Associated Token Accountamount_usdcFLOAT64Human-readable transfer quantitytransaction_fromSTRINGPrimary signer / fee payer addressfacilitator_signerSTRINGMatched x402 facilitator public keytx_statusSTRINGSUCCESS or FAILED execution statustransfer_indexINTEGERPosition within transactionchainSTRINGAlways "solana"Base Schema: base_raw
Transfer(address, address, uint256) events rather than TransferWithAuthorization, with the facilitator address serving as the x402 identifier signal. The facilitator registry contains 28 organizations across 100+ wallet addresses, including Coinbase CDP, PayAI, Questflow, Virtuals, and Thirdweb.
Base queries are substantially cheaper than Solana. The dataset is smaller and partitioning costs are lower. The extraction query creates a temporary table of known facilitator addresses, filters for USDC transfers from the specific contract (0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913), and joins against the registry.tx_hashSTRINGBase transaction identifierblock_timestampTIMESTAMPSettlement block timeblock_numberINTEGERBase block heightlog_indexINTEGEREvent position within transactionsenderSTRINGUSDC payer (end-user or AI agent)recipientSTRINGUSDC receiver (service provider)facilitator_addressSTRINGTransaction submitter walletfacilitator_nameSTRINGFacilitator ID (coinbase, virtuals, etc.)amount_usdcFLOAT64Settlement value in human-readable USDCchainSTRINGAlways "base"Substantiating the Solana 51% Claim
January 2026 Transaction Parity (Reproducing the 51% Claim)
This query isolates January 2026 to show the month where Solana reached 50.6% of global x402 transaction traffic.
SELECT
chain,
COUNT(*) AS successful_txns,
ROUND(SUM(amount_usdc), 2) AS volume_usdc,
ROUND(AVG(amount_usdc), 4) AS avg_tx_usdc
FROM (
SELECT 'solana' AS chain, amount_usdc
FROM `web3-publicgoods.tektonic_x402.sol_raw`
WHERE tx_status = 'SUCCESS'
AND block_timestamp >= TIMESTAMP("2026-01-01")
AND block_timestamp < TIMESTAMP("2026-02-01")
UNION ALL
SELECT 'base' AS chain, amount_usdc
FROM `web3-publicgoods.tektonic_x402.base_raw`
WHERE tx_status = 1
AND block_timestamp >= TIMESTAMP("2026-01-01")
AND block_timestamp < TIMESTAMP("2026-02-01")
)
GROUP BY chain;Comparative Analysis: Why Explorer-Based Indexers Under-Report
packages/backend/src/workers/prod-solana-sampling.sql), we identified two technical bottlenecks that explain why polling-based dashboards significantly under-report volume.
1. Registration Dependency. x402scan indexes via webhooks on registered ResourceResponse records. If an AI agent launches a facilitator-compliant API but skips the manual Faremeter registration, x402scan remains 100% blind to those transactions. Our pipeline has no registration requirement. We identify x402 payments purely by signer-level facilitator matching against on-chain data.
2. Lack of ATA Resolution. Their indexer scripts (as of v1.2) primarily track raw account address interactions. Our pipeline natively maps Associated Token Accounts to underlying owner wallets, revealing a 40x increase in unique transaction detection on Solana during the March 2026 window.
We want to be clear: x402scan provides valuable discovery and visibility for the ecosystem. The distinction is the same one that exists between Etherscan and Dune Analytics. Explorers are for looking things up. Analytics infrastructure is for building on top of. When an institution needs x402 monitoring integrated into their existing data stack, they need SQL access to clean, historically complete data.Production Queries for Researchers
web3-publicgoods.tektonic_x402 with your project reference. All Solana queries must include block_timestamp partition filters to avoid runaway scan costs.Daily Volume and Success Rate (Solana)
Aggregates daily transaction volume and success rates. Cost: approximately $0.50 to $2.00 per day scanned.
SELECT
DATE(block_timestamp) AS day,
COUNT(*) AS total_txns,
COUNTIF(tx_status = 'SUCCESS') AS success_txns,
ROUND(COUNTIF(tx_status = 'SUCCESS') / COUNT(*) * 100, 2)
AS success_rate_pct,
ROUND(SUM(IF(tx_status = 'SUCCESS', amount_usdc, 0)), 2)
AS volume_usdc
FROM `web3-publicgoods.tektonic_x402.sol_raw`
WHERE block_timestamp >= TIMESTAMP("2026-03-01")
AND block_timestamp < TIMESTAMP("2026-04-01")
GROUP BY day
ORDER BY day DESC;Facilitator Market Share (Solana)
Ranks facilitators by volume. Useful for evaluating which AI agents and API gateways drive the most x402 settlement activity.
SELECT
facilitator_signer,
COUNT(*) AS total_txns,
ROUND(SUM(amount_usdc), 2) AS total_volume_usdc,
COUNT(DISTINCT transaction_from) AS unique_buyers,
MIN(block_timestamp) AS first_seen
FROM `web3-publicgoods.tektonic_x402.sol_raw`
WHERE block_timestamp >= TIMESTAMP("2026-03-01")
AND tx_status = 'SUCCESS'
GROUP BY facilitator_signer
ORDER BY total_volume_usdc DESC
LIMIT 20;Cross-Chain Daily Comparison
Unified query across both chains. One of the key advantages of having both datasets in the same BigQuery project.
WITH combined AS (
SELECT 'solana' AS chain, block_timestamp, amount_usdc
FROM `web3-publicgoods.tektonic_x402.sol_raw`
WHERE tx_status = 'SUCCESS'
AND block_timestamp >= TIMESTAMP("2026-03-01")
UNION ALL
SELECT 'base' AS chain, block_timestamp, amount_usdc
FROM `web3-publicgoods.tektonic_x402.base_raw`
WHERE tx_status = 1
AND block_timestamp >= TIMESTAMP("2026-03-01")
)
SELECT
chain,
DATE(block_timestamp) AS day,
COUNT(*) AS txns,
ROUND(SUM(amount_usdc), 2) AS volume_usdc
FROM combined
GROUP BY chain, day
ORDER BY day DESC, chain;Network Health Diagnostics (Solana)
Monitors daily failure rates across the x402 payment network. Critical for risk desks and SLA monitoring.
SELECT
DATE(block_timestamp) AS day,
COUNT(*) AS total,
COUNTIF(tx_status = 'FAILED') AS failed,
ROUND(COUNTIF(tx_status = 'FAILED') / COUNT(*) * 100, 4)
AS failure_rate_pct
FROM `web3-publicgoods.tektonic_x402.sol_raw`
WHERE block_timestamp >= TIMESTAMP("2026-03-25")
GROUP BY day
ORDER BY day DESC;Wallet Spending History (Solana)
Reconstruct a specific wallet's x402 payment history. Useful for compliance investigations and user-level analytics.
SELECT
tx_signature,
block_timestamp,
destination_ata AS seller,
facilitator_signer AS facilitator,
amount_usdc,
tx_status
FROM `web3-publicgoods.tektonic_x402.sol_raw`
WHERE transaction_from = '< WALLET_ADDRESS >'
AND block_timestamp >= TIMESTAMP("2026-01-01")
ORDER BY block_timestamp DESC;Pre-Built Analytics Views
A Note on Data Purity
tx_status = 'SUCCESS' on Solana and receipt_status = 1 on Base at extraction time. This is not a filter applied at query time. It is baked into the extraction pipeline itself. The result is 0.00% inflation from reverted or failed executions. If you are running compliance reports, risk models, or volume metrics against this dataset, you can trust the numbers without additional filtering.Getting Started
Step 2: Click Add dataset to project and save it with a reference name (e.g.,
tektonic_x402).
Step 3: Run any query from this post against
web3-publicgoods.tektonic_x402 directly, or replace with your own linked project reference.
Step 4: For Solana queries, always include
block_timestamp partition filters. Unpartitioned scans cost thousands of dollars.
The full pipeline source, facilitator registries, and additional queries are available on GitHub under CC-0. The dataset is maintained by Tektonic Labs with support from Google Cloud Web3 and the Solana Foundation.

