Authorization-primitive latency (DIM-02): named-rail findings

Version 1.1, dated 2026-10-01, for the measurement run of 2026-06-28.

What this page is

This page reports authorization-primitive latency (the PayBench dimension DIM-02, internally RAPL) for six named payment rails, measured by Everyday AI Ltd against test networks it operates or funds itself.

Scope of the measurement

Every figure below comes from first-party runs on test networks (Base Sepolia, Stellar testnet, Solana devnet, Tempo Moderato testnet, a Spark hosted regtest, and an in-process AP2 verifier). No funds moved on any production network. The traffic was self-originated by the measuring party; no third party's payments were observed. These are the calibration and pilot evidence attached to the pre-registration, not a production result, and they say nothing about how any of these rails behaves under other parties' production load.

Measurement window: 2026-06-22 to 2026-06-28. Calibration parameters fixed 2026-06-29.

The version of the Agent Payments Protocol against which R6 (Google Cloud with AP2) was measured is the Google AP2 reference implementation at repository commit e1ea56d, captured on 2026-06-28. AP2 is under active change, so that pin is stated here rather than left implicit.

What was measured

The clock starts when the pay command is on the wire with its payload constructed, and stops at the last byte of the authorization-primitive decision. A same-path TCP and TLS round-trip baseline is subtracted, and both the raw and the corrected figure are retained in the record. The backing-service hop (a facilitator call, a chain remote-procedure-call read, or a Lightning node round trip) is authorization work and is never subtracted from the end-to-end figure.

Two primitives are reported separately and are never combined into one figure:

The anchored methodology calls these two the A and B sub-groupings of the dimension; this page uses "primitive A" and "primitive B" for the same two things, so that no word on this page reads as a placing.

Within each primitive, rails are grouped by work class. A local-complete rail does no per-call network round trip in steady state; a network-dependent rail makes one. Figures are comparable inside a work class and are not comparable across work classes; nothing on this page compares them.

Reading the columns

Primitive A, payment validation

Work class: local-complete

RailR-numberVariantmedian (ms)P95 (ms)P99 (ms)95 percent interval for the median (ms)Ntopologydate
Google Cloud with AP2R6delegated payment-condition chain1.581.601.621.575 to 1.58530in-process, topology-invariant2026-06-28
Machine Payments Protocol on TempoR10session voucher8.2--8.046 to 8.35730T2b2026-06-28

Notes for this table. The AP2 figure is the delegated payment-condition variant, which verifies a two-signature chain; the single-token human-present variant of the same rail is 0.68 at the median, 0.71 at P95 and 0.76 at P99 over 30 trials. AP2 runs in process with no transport, so it is topology-invariant by construction; a sidecar deployment would add an inter-process hop. The Tempo session-voucher figure is the warm path, where a cached voucher is accepted with no per-call network read; the cold path, when the time-to-live expires and one chain read is made, is approximately 360 ms. The same rail measures 11.2 at the median at T2a and 19.5 at the median at T1, because a local-complete rail's median tracks the measuring host's processor rather than the network path.

Work class: network-dependent

RailR-numbermedian (ms)P95 (ms)P99 (ms)95 percent interval for the median (ms)Ntopologydate
x402 on BaseR1492576726475.4 to 509.230T2b2026-06-28
x402 on SolanaR9212370416187.8 to 239.330T2b2026-06-28
x402 on StellarR2289366553276.0 to 302.740T2b2026-06-28

Notes for this table. Each of these rails makes one backing-service call per authorization: x402 on Base reaches a facilitator that reads a Base Sepolia node, x402 on Solana reaches the x402.org facilitator, x402 on Stellar reaches an OpenZeppelin facilitator. The local computation floor is below one millisecond in all three cases, so the end-to-end figure is dominated by that backing service. Absolute medians move with the measuring host's route: at T1 the same three rails measure 777 on Base, 400 on Solana and 464 on Stellar, and at T2a they measure 420 on Base, 180 on Solana and 364 on Stellar. A reader who wants an absolute number for a network-dependent rail should take the per-topology spread and not a single figure. Declined authorizations were zero percent of trials in every rail and topology cell, so the pre-registered fallback estimator did not fire.

Primitive B, challenge issuance

Work class: local-complete

RailR-numberVariantmedian (ms)P95 (ms)P99 (ms)95 percent interval for the median (ms)Ntopologydate
Machine Payments Protocol on TempoR10402 emission2.95--2.806 to 3.10230T2b representative2026-06-28
x402 on BaseR1402 emission3.0--2.918 to 3.08430T2b representative2026-06-28
x402 on SolanaR9402 emission2.2--2.159 to 2.24130T2b representative2026-06-28
x402 on StellarR2402 emission1.60--1.509 to 1.69730T2b representative2026-06-28

Notes for this table. Each of these emissions is assembled locally from a template with no network call, so the median is topology-invariant while the tails widen on a shared cloud host. The anchored record states the group range as approximately 1.6 to 3.0 ms across the three topologies; the per-rail medians shown here are the calibrated representative-topology parameters from the fixture provenance files, and P95 and P99 are not in the anchored record for this group.

Work class: network-dependent

RailR-numberVariantmedian (ms)P95 (ms)P99 (ms)95 percent interval for the median (ms)Ntopologydate
Machine Payments Protocol on LightningR11BOLT11 invoice mint552--521.8 to 583.930T2b2026-06-28

Notes for this table. Minting an invoice requires a round trip to a Spark Lightning node, which is why this emission sits in a different work class from the four above and is not comparable with them. The same rail measures 936 at the median at T1 and 771 at the median at T2a, with a P99 of 1357 at T2a.

Provenance

The measurement method was developed and refined during the pilot runs of 22 to 28 June 2026 that this page reports, and was then frozen and externally anchored on 29 and 30 June 2026. These figures are therefore the calibration and pilot evidence that the anchored record carries, not a run made under a method fixed in advance; a run under the anchored method would be published as a separate, later version. The dimension pre-registration carries OSF digital object identifier 10.17605/OSF.IO/UFQG5, the signed git tag paybench-rapl-prereg-v1, an OpenTimestamps proof anchored in Bitcoin block 955977, and Rekor transparency-log entry 2012836917. The manifest digest is 46a19eab. The settlement-finality methodology it builds on is frozen at version 1.2 with OSF digital object identifier 10.17605/OSF.IO/XGFUJ and the signed tag paybench-prereg-v1.2.

This measurement is the calibration and pilot record carried in the frozen and anchored DIM-02 pre-registration (OSF DOI 10.17605/OSF.IO/UFQG5; Bitcoin block 955977; Rekor 2012836917). The frozen text of that record includes a finding ordering three rails on this dimension. That statement is part of the frozen methodology and was fixed before this page existed. This page does not assert any ordering: the table is listed alphabetically, the order carries no performance meaning, and nothing here is a recommendation to use any rail.

The figures above are data; any comparison a reader draws from them is the reader's own.

Corrections and right of reply

Any operator of a rail or facilitator named on this page may respond through the structured right-of-reply channel at https://reply.agentic-paybench.dev/. Replies about a factual data error, a methodology defect, a mischaracterisation, a confidentiality objection, or a jurisdictional objection are reviewed before publication; replies about methodology framing, a change since the measurement window, or the scope of the environment tested are published promptly with a badge saying the review is pending. The response cap and visibility policy is linked from that page. Corrections to anything here are also welcome by email at mblake@everydayai.link.

Version 1.1, dated 2026-10-01, for the measurement run of 2026-06-28. It corrects version 1.0 and replaces it as the current version. This artefact is frozen per dated run: a correction or a re-measurement is published as a new dated version and this one is kept. It is served on the oracle site only while the ADR-009 display gate G_S21 is open, and its publication carries an audit record.

Correction of 2026-10-01. Version 1.0 of this page said: "The measurement method was pre-registered and externally anchored before any run, so that the design could not be adjusted to the result." It also described the protocol as "pre-registered before any run". Neither was accurate. This version corrects those two sentences, one under "What this page is" and one under "Provenance". It also rewords two phrases so that neither implies that the measurement was made after the pre-registration: the first sentence of the second paragraph under "Provenance", and the description of the lognormal parameters under "Reading the columns". The figures themselves are unchanged. Version 1.0 is kept, unaltered, at dim02-authorization-latency.level1.md.

Posture

These figures are a measurement, not a recommendation: no rail is endorsed, no ordering implies a best buy, and no rail is being suggested for use.

Rails are listed alphabetically by rail name. That ordering is fixed and carries no performance meaning.

The same measurement protocol was applied identically to every rail.

No ranking is stated on this page, no winner is named, and there is no route from this page to transact on any rail.

For agents and software

The same facts as data, at these paths.