Evidence that travels with the transaction.
Open Receipt v0.1 defines a small, portable envelope for commercial facts, execution evidence, validation, settlement, and reversals—signed so anyone can verify it without asking Receipt whether the signature is valid.
Receipt Evidence Specification v0.1
One signed event envelope
The specification is intentionally narrow. It does not standardize catalogues, provider routing, wallets, payment rails, mandates, remedies, or scoring.
spec_versionevent_idevent_typeissuerissued_attransaction_idquote_idcommercial_factsevidenceprovenanceassuranceparent_event_hashessigning_key_idsignatureInitial event types
quote.issuedauthorization.grantedexecution.attemptedvalidation.completedsettlement.completedreversal.issuedAssurance
delivered records provider delivery.validated is used only when a bound validator actually ran and passed. v0.1 does not claim a universal guarantee.
Deterministic and inspectable
Events use RFC 8785 JSON canonicalization and a detached compact JWS with Ed25519. Parent hashes bind signed events into a verifiable evidence chain. Issuer metadata supports current and retained historical JWKs.
Inspect issuer metadataprotected = { alg: "EdDSA", kid, typ: "open-receipt+jws" }
payload = RFC8785(event without signature)
input = b64url(protected) + "." + b64url(payload)
signature = Ed25519.sign(input)
event.signature = b64url(protected) + ".." + b64url(signature)Verify without a network call
The TypeScript package verifies schema shape, detached JWS signatures, and parent hashes locally. Supply cached issuer metadata to pin issuer identity; an embedded key proves only that the matching key signed the document.
TypeScript
npm install @receiptprotocol/open-receipt
import { verifyOpenReceipt } from "@receiptprotocol/open-receipt";
const result = await verifyOpenReceipt(receipt, {
issuerMetadata: cachedMetadata
});CLI
npm install --global @receiptprotocol/cli
receipt verify ./receipt.json
# Pin issuer identity from a trusted local metadata copy
receipt verify ./receipt.json \
--issuer-metadata ./issuer.jsonSchemas and test vectors
The v0.1 vectors use a published, non-production test key. They are safe for local verifier tests and must never be treated as production Receipt evidence. A separate completed production Artifact v1 vector is preserved below for compatibility testing; it is not relabeled as an Open Receipt v0.1 event.
JSON Schemas
Completed production compatibility vector
Read-only snapshot of an already-completed signed Receipt. Its legacy signature verifies offline, but the file remains com.receiptprotocol.receipt.v1.
Valid local vectors
Small by design. Open to scrutiny.
Open Receipt v0.1 is an early open specification, not an adopted industry standard. The schemas, verifier, and vectors are public so implementers can inspect, test, and challenge the design without exposing Receipt's commerce engine or score formula.
View source on GitHub
Receipt