Skip to main content
An offline-verifiable agent payment receipt is one that a third party can check without contacting the issuer, the sender, or any online service. AlgoVoi authored the canonicalisation discipline that makes this hold: pin RFC 8785 (JCS) as the preimage form, hash with SHA-256, and every receipt recomputes from its raw fields on any machine, fully offline.

Offline means no service call

A receipt carries its own fields. A verifier canonicalises those fields under JCS, hashes the bytes with SHA-256, and compares the result to the receipt’s content_hash. If they match, the receipt is intact and authentic to its preimage. If a single field changed, the hash diverges and the tamper is detected. Nothing in that loop touches the network. The verifier needs a JSON parser, a JCS implementation, and a SHA-256 function, all of which ship in standard libraries. There is no issuer endpoint to call, no registry to resolve, and no AlgoVoi runtime in the trust path. Because the rule is pinned in-band as canon_version: jcs-rfc8785-v1, a receipt retained for a statutory period re-verifies under the exact rules it was issued under, with no dependence on an external rule registry that may have moved or changed.

Proven without AlgoVoi’s code

The published values are not an artefact of AlgoVoi’s canonicalizer. The conformance corpus ships a first-principles check that rebuilds the JCS bytes by hand and hashes them with stdlib SHA-256 only:
git clone https://github.com/chopmob-cloud/algovoi-jcs-conformance-vectors
cd algovoi-jcs-conformance-vectors
pip install algovoi-substrate
python composition/first_principles_check.py
# FIRST-PRINCIPLES RESULT: 11/11 checks PASS ... No AlgoVoi canonicalizer was invoked
The same construction is directly executed across eight independent reference implementations (Python, TypeScript, Go, Rust, Java, PHP, .NET, Ruby) at 880/880 cumulative agreements, including the RFC 8785 author’s own Java implementation. Eight implementations that share no code agreeing on the same bytes makes the result a property of the standard.

Which receipts are offline-verifiable

Every receipt in the AlgoVoi lifecycle recomputes the same way, because they all anchor to one canonicalisation pin:
ReceiptRecords
Compliance receiptAdmission-time screening decision
Settlement attestationSettlement state on a given chain
Refund receiptRefund outcome, chained to settlement
execution_refExecuted action bound to the decision that authorized it
A verifier walking the chain confirms admission, settlement, and refund under a single byte-deterministic discipline, offline.

Do it yourself

git clone https://github.com/chopmob-cloud/algovoi-jcs-conformance-vectors
cd algovoi-jcs-conformance-vectors
pip install algovoi-substrate
python composition/verify_corpus.py
# ALL RUN SETS + COMPOSITION KEYSTONE REPRODUCE BYTE-FOR-BYTE
Each vector set also ships a runner_node.js alongside its runner_python.py, both checking the same expected hashes, so a pass in each language is byte-for-byte Python and TypeScript parity rather than two separate claims.

Specification and authorship

The discipline is AlgoVoi-authored and specified in IETF Internet-Draft draft-hopley-x402-canonicalisation-jcs-v1, identified by urn:x402:canonicalisation:jcs-rfc8785-v1. Reference implementations are Apache-2.0: algovoi-substrate and @algovoi/substrate.

See also