FillBenchcrypto benchmarks

x402 Under Load: Concurrent Agent Payments, per Chain

Our settlement benchmark measures one x402 payment at a time. This one asks the opposite question: when a burst of agent payments hits a chain at once, does finality stay fast, does the fee stay flat, and does every payment still settle? That is what decides whether agentic commerce holds up on a rail when traffic spikes.

Algorand measured

Algorand is measured (2026-08-09, on-chain proof below); Base, Solana and Stellar are still pending. We publish the method before the numbers on purpose, no vaporware charts, and each remaining chain fills in as we fund an account and run the identical burst, the same way our Algorand settlement run is live and verifiable.

What this benchmark measures

We submit a burst of N concurrent USDC micropayments to a chain and time every one from submit to true finality, repeating at increasing N (10, 50, 100, 500) to see whether finality, fee, or success rate degrade under load. Identical test per chain, same payment, same finality definition, so the comparison stays fair. Here is what each row reports.

Burst / concurrency benchmark, measured to true finality. Algorand values are FillBench-measured (2026-08-09); Base, Solana and Stellar are pending.
MetricAlgorandBaseSolanaStellar
Settlement p50 under load (500 concurrent)4.97 spendingpendingpending
Settlement p95 under load6.45 spendingpendingpending
Success rate (did every payment settle?)100% (500/500)pendingpendingpending
Fee behavior under loadFlat 0.001 ALGOpendingpendingpending

Measured: Algorand burst (concurrent USDC payments)

Here is the part that is actually ours. We fired real USDC payment bursts on Algorand mainnet at four concurrency levels and timed every payment from submit to on-chain finality. The result: Algorand absorbed the burst without breaking a sweat, all 660 payments settled, finality barely moved from the one-at-a-time baseline, and the fee never changed. Run dated 2026-08-09.

Each row is one burst of N payments fired at once on Algorand mainnet, every payment timed submit to finality. "Settle p50/p95" is the chain's finality per payment under that load.
Burst size (N)SettledSettle p50Settle p95Fee each
1010/103.34 s4.74 s0.001 ALGO
5050/504.71 s5.62 s0.001 ALGO
100100/1004.67 s6.33 s0.001 ALGO
500500/5004.97 s6.45 s0.001 ALGO

Three things stand out, and all three are what an agentic payment rail wants:

Why there is no "payments per second" number here. You might expect a throughput headline like "X payments/sec." We are deliberately not publishing one, because we cannot measure it cleanly yet. We submit every payment through a single free public RPC endpoint, which rate-limits concurrent submissions (HTTP 429) above roughly ten at once. That cap belongs to the free node, not to Algorand, so any per-second figure would be measuring the endpoint, not the chain. The proof it is the endpoint: even at 500 concurrent, the chain settled each payment in about 5 seconds and never raised the fee, only the time to get payments accepted by the free node stretched out. Algorand itself runs in the tens of thousands of transactions per second (a 14,722 TPS record), and we will publish a real throughput ceiling once we run this through a dedicated node. Until then we report only what we can stand behind: finality, fee, and success under load.

What the test cost
  • 0.50 ALGO for the 500-payment burst (500 × the flat 0.001 ALGO fee), about $0.04.
  • 0.66 ALGO for the whole 660-payment sweep, about $0.06 (at $0.085/ALGO on 2026-08-09).
  • $0.00 in USDC. Every payment was a self-transfer, so no stablecoin value moved, we paid only the ALGO network fee.

Real, repeatable on-chain testing, for pennies. That is the whole pitch of a fixed sub-cent fee: it does not spike under a burst.

Proof, not trust: every payment came from our benchmark account 4R34...LYPJI on Algorand mainnet. The raw benchmark JSON is published here and mirrored under CC BY 4.0, free to reuse with attribution.

Why concurrent load matters for x402

x402 exists so software can pay per request with no human in the loop, which means demand is bursty and parallel in a way human checkout never is. One agent working a task can fan out into many paid API calls at once; a single popular endpoint can be hit by thousands of agents in the same second. On a chain that clears those in a tight window, the endpoint just works. On one that queues them, latency climbs, some payments fail, and, on a gas-market chain, the fee can spike right when volume does. Per-call latency tells you the calm-day experience; behavior under a burst tells you what happens on the busy one.

How it differs from our settlement benchmark

These are two different questions and we keep them separate on purpose. The x402 settlement benchmark sends payments sequentially, one confirmed before the next, to isolate a single payment's own finality time (Algorand measured at about 5.2s median). This page fires them all at once to test capacity under contention. A chain can look great on the first and still strain on the second, which is exactly why both are worth measuring.

Common questions

What is the x402 throughput (burst) benchmark?

It measures how a blockchain behaves when many x402 payments arrive at the same time, rather than one after another. We fire a burst of N concurrent USDC micropayments and record, under that load, how long each takes to reach finality, whether every payment settles, and whether the fee moves. The same test runs on every chain so the results compare apples to apples.

Why measure concurrent payments and not just one at a time?

Because agentic commerce is concurrent by nature. A popular x402 endpoint can receive payments from many agents at once, and a single agent orchestrating a task may fire dozens of micropayments in parallel. A chain that settles one payment quickly can still buckle under a burst, with latency blowups, failed transactions, or fee spikes. Throughput is the dimension the one-at-a-time settlement test does not capture.

How is this different from your settlement-latency benchmark?

Our x402 settlement benchmark measures a single payment in isolation, submitted and confirmed before the next goes out, which is the clean per-call latency one x402 request experiences. This throughput benchmark does the opposite on purpose: it fires many payments at once to test the chain under contention. The two are complementary, per-call latency and burst capacity are different questions.

Do you report a payments-per-second throughput number?

Not yet, and here is the honest reason. We submit every payment through a single free public RPC endpoint, which rate-limits concurrent submissions (HTTP 429) above roughly ten at once. That cap belongs to the free node, not to Algorand, so any per-second figure would measure the endpoint rather than the chain. The proof it is the endpoint and not the network: even at 500 concurrent, the chain settled each payment in about 5 seconds and never raised the fee, and only the time to get payments accepted by the free node grew. Algorand itself runs in the tens of thousands of transactions per second (a 14,722 TPS record), and we will publish a real throughput ceiling once we run this through a dedicated node.

Which chains are measured, and when are the rest coming?

The same x402 rails we track: Algorand, Base, Solana and Stellar. Algorand is measured (2026-08-09): 660 real USDC payments in bursts up to 500 concurrent, all settled, with on-chain proof and raw data published under CC BY 4.0. Base, Solana and Stellar are pending, and each fills in as we fund a throwaway account and run the identical burst. Subscribe below to get each result as it lands.

Disclosure: Some links on this page are affiliate links. If you subscribe through them we may earn a commission at no extra cost to you. It never changes our measurements or rankings; the numbers here come from automated tests you can reproduce (see our methodology). This is not financial advice, and crypto trading carries risk of loss.