An x402 payment receipt — or a facilitator settlement payload — proves protocol facts: amount, asset, payTo, transaction. It does not bind a tax treatment, a ruleset, or an accounting artifact.
Payment receipt ≠ fiscal receipt
| Object | Binds |
|---|---|
| x402 payment / settlement proof | Protocol requirements and that an exact transfer settled |
| UBL invoice | Accounting document bytes (parties, tax lines, EUR) |
| fiscal402.receipt/1.0.0 | Settlement + determination + ruleset + artifact hashes + signature |
What fiscal402.receipt binds
- Settlement evidence: network, tx hash, asset, amount, payer, payTo, time.
- Fiscal determination: regime, rate, taxing country, provenance.
- Ruleset and engine versions.
- Artifact hash: SHA-256 of exact UBL UTF-8 bytes.
- Canonical payload hash under
fiscal402.sorted-json/1. - Ed25519 signature, key id published in JWKS.
Verification model
Recompute the canonical payload, check the digest, verify Ed25519 against JWKS, optionally match the UBL hash. VERIFIED means cryptographic integrity under Fiscal402 rules. It does not mean tax-authority approval, a correct VAT rate in law, or that a wallet is a legal person.
Limitations
- Receipt v1 is frozen, including
amount_usdc. - Receipt v2 is experimental. Production EU issuance remains v1.
- The verifier is source-only. It is not published to npm or PyPI.