Skip to main content
The settlement attestation closes the lifecycle gap between admission-time compliance receipts and post-settlement refund receipts.

Protocol coverage

The AlgoVoi gateway returns a signed settlement_attestation on confirmed payment across all four payment protocols: In ALGOVOI_MODE=standard the field is stripped at the MCP client layer. In ALGOVOI_MODE=substrate (default) it is returned alongside the standard verdict fields. See the MCP server docs for details. It records that a payment has reached a particular settlement state on a particular chain, at a particular instant, under the attesting party’s risk model. It is AlgoVoi-authored, specified in IETF Internet-Draft draft-hopley-x402-settlement-attestation (POSTED on IETF datatracker 2026-05-25, Independent Submission, Informational), and published as a standalone reference implementation: Both packages depend on algovoi-substrate / @algovoi/substrate for the JCS canonicalisation primitive. Apache 2.0.

Lifecycle position

All three formats anchor to the same canonicalisation discipline (urn:x402:canonicalisation:jcs-rfc8785-v1). A verifier walking the audit chain confirms admission → settlement → refund under one byte-deterministic pin.

Why this format

Settlement is the state transition at which a broadcast payment is considered final by the attesting party’s risk model. The operational and regulatory significance is load-bearing:
  • Under MiCA Article 80 (Regulation (EU) 2023/1114) and AMLR Article 56 (Regulation (EU) 2024/1624), operator records of settled crypto-asset transactions must be retained and re-verifiable for the statutory period.
  • Under PSD2 Article 89 (Directive 2015/2366), the unauthorised-payment refund obligation is tied to when the payment was settled, not broadcast. A PENDING_FINALITY state is operationally distinct from SETTLED for refund-window calculation.
  • Under AML Directives 5 and 6, a settled payment that is subsequently REVERSED (by chain reorganisation or court-ordered fraud reversal) requires an audit trail independent of the original settlement event.
The receipt format preserves these distinctions at the canonical-bytes level via a closed three-element enumeration.

Receipt shape

A settlement attestation is an eight-field JSON object canonicalised under RFC 8785 (JCS). Field names are sorted lexicographically by JCS during canonicalisation.

The closed enumeration: settlement_result

Each value produces a byte-distinct content_hash. Score, depth, or confirmation-count representations are not acceptable substitutes.

Multi-chain settlement_chain identifiers

AlgoVoi’s production xChain runs on 8 chain families. Conventional identifiers: The string is opaque under JCS — case-sensitive, no decomposition. Operators requiring richer chain metadata emit it in separate operator-layer audit records, not as nested fields.

Composition

A settlement attestation settled_payment_ref MAY reference a compliance receipt content_hash. A refund receipt original_payment_ref MAY reference a settlement attestation content_hash. The full lifecycle chain:
A verifier walking this chain confirms admission → settlement → refund under one canonicalisation pin.

Conformance vectors

8 byte-level reference vectors + 5 pair invariants + 3 chain invariants at vectors/settlement_attestation_v1/.

Quick start

TypeScript

What this is NOT

  • Not a cryptographic settlement proof. Cryptographic proofs of payment conditions are orthogonal; this format records the operator’s categorical claim at the canonical-bytes level. The two layers compose.
  • Not a chain-specific finality declaration. Chain-specific finality semantics (block depth, validator quorum) are out of scope; verifiers apply them at verification time.
  • Not a cross-chain bridge proof. Cross-asset substitution is permitted in the format; the bridge mechanism is out of scope.

Companion IETF Internet-Draft

draft-hopley-x402-settlement-attestation (Independent Submission, Informational). AlgoVoi-authored, sole authorship. Normatively references draft-hopley-x402-canonicalisation-jcs-v1.

See also