The standard
A schema for payment receipts whose disclosed linkage can be independently recomputed, and a sober record of what each agent-payment protocol actually supplies. Draft 0.1; the canonical schema and a real evidence bundle live in the public repository, Apache-2.0. Corrections are welcome and made in public.
A receipt records what a control plane decided. It does not make the decision and the settlement one atomic step, and it does not prove the ledger agreed. Where that boundary sits, and where it should sit, is on the architecture page.
The receipt, in brief
Every event in a payment's life is one receipt: sequence, event type, actor, payload, and a hash over RFC 8785 canonical JSON that binds the previous receipt. Amounts travel as fixed-point strings, never JSON numbers, so canonicalisation is exact by construction. Receipts are append only; a correction is a new receipt. A payment that violates its mandate or policy is refused before construction, and the attempt itself is receipted.
The division of proof is deliberate. Cartulary records the authority and reasoning it says it applied, and the receipt chain makes that disclosed record internally checkable; it does not independently prove the authority existed or that the reasoning was followed. The ledger proves what authorised parties executed and what state changed. The receipt chain references the prepared transaction hash and the ledger's own identifiers; it never duplicates transaction detail that the ledger deliberately partitions.
What verification proves, exactly: recomputing every hash proves no disclosed receipt was altered, reordered, or removed from the interior of the chain, relative to the hashes in hand. Three limitations are stated rather than hidden. Self-consistency is not authorship: without a signed head or an external anchor, a holder of the whole chain could rewrite an event and every subsequent hash, and the result would still verify. Truncation at the tail and whole-chain omission are invisible to recomputation. Organisation-level anchoring, on the roadmap, closes both. And partial disclosure verifies less, and says so: disclosed receipts verify by recomputation, withheld receipts are opaque commitments verified by linkage alone. The repository ships a dependency-free verifier and adversarial test vectors that run on every change.
What each protocol supplies, and what it does not
These efforts are not equivalents and should not be flattened into a slogan. This table records, per protocol: the authority object it supplies, what it does not supply, how Cartulary normalises it, what is verified cryptographically, and what remains a policy assertion. Each external row links to that protocol's own specification and is maintained against it. The last row is our own design fixture and has no specification, which its heading says.
The Verified column describes what each protocol makes cryptographically verifiable, not what Cartulary currently verifies. The protocol adapters are not built, so nothing in that column is running here.
x402Machine-payment mechanism (HTTP 402)specification
- Supplies
- A per-request payment requirement and a signed payment payload: scheme, network, asset, and amount for one call.
- Does not supply
- Durable delegation, daily caps, counterparty scoping, and any notion of the principal behind the payer.
- Normalised as
- A session becomes a mandate with a per-payment cap; the daily cap and counterparty scope are Cartulary policy, not protocol fields.
- Verified
- The payment payload and its settlement.
- Asserted
- Caps, scope, and principal binding.
ACPAgent-commerce checkout interfacespecification
- Supplies
- A checkout flow and a scoped, time-bound, amount-limited payment token for a merchant interaction.
- Does not supply
- Multi-merchant treasury authority, screening, holds, and examiner-grade evidence.
- Normalised as
- The token becomes a mandate scoped to a vendor allowlist with its amount limit carried over.
- Verified
- Token validity with its issuer.
- Asserted
- Everything beyond the token's own bounds.
AP2Mandates and payment evidencespecification
- Supplies
- Cryptographically signed mandates for intent and cart, role separation, and an evidence trail by design. The richest authority object of the five.
- Does not supply
- In-flow sanctions screening, hold and investigation semantics, and organisation policy.
- Normalised as
- The mandate maps nearly one to one; its signature is kept and shown beside the normalised form.
- Verified
- The mandate signature.
- Asserted
- Policy evaluation and screening verdicts.
MPPMachine-payment sessionsspecification
- Supplies
- Sessions with a pre-authorised spending limit, streamed micropayments, and settlement in stablecoins or fiat.
- Does not supply
- Counterparty screening, receipt chains, and dispute or investigation semantics.
- Normalised as
- A session becomes a mandate with its authorised limit; streamed payments aggregate against it.
- Verified
- Session authorisation with its issuer.
- Asserted
- Scope and screening.
Illustrative ledger-native mandateA design fixture of ours, not an external protocolno specification: ours
- Supplies
- A hypothetical mandate held on a shared institutional ledger, with need-to-know distribution of transaction detail. There is no specification to cite because there is none: this row exists to test whether the model below holds for an authority object that lives on a ledger rather than in an HTTP exchange.
- Does not supply
- Any claim to be a real protocol, and any implementation. If a genuine ledger-native standard emerges we will replace this row with it.
- Normalised as
- The mandate maps one to one; its disclosure model matches this standard's per-leg disclosure.
- Verified
- Would be verified by ledger validation; not implemented.
- Asserted
- Off-ledger policy and screening.
Adapter note: settling on a shared ledger
Institutional settlement networks such as Canton permit compliance checks inside multi-step transfers, and support preparing a transaction for inspection before an external party signs it. That gives a decision layer two distinct gates. Gate one, before preparation: may this action be attempted at all, under this agent's mandate, the organisation's policy, and screening? Gate two, after preparation and before signature: is this prepared transaction exactly the one that was approved, with the sender, receiver, instrument, and amount matching the approved intent and the transaction hash independently recomputed? The external signature commits to the prepared transaction hash, and to nothing else; off-ledger metadata is not covered merely by appearing in a receipt. The adapter therefore has a design requirement: the prepared transaction must contain or reference the mandate identifier, the policy version, and the rules hash, so that the signature binds them to the resulting ledger action. Signing keys stay with the wallet or custodian; Cartulary authorises and verifies, and is never a custodian.
Draft 0.1 · Apache-2.0 · A standard that overstated its own proofs would fail its own test.