Mental model
- receipt + JWKS + optional UBL
- ↓
- local verifier
- ↓
- VERIFIED / INVALID
Checks
| Check | Pass condition |
|---|---|
| receipt_schema | spec fiscal402.receipt and spec_version 1.0.0 |
| canonical_payload | recomputed hash equals stored hash |
| signing_key | JWKS kid matches signature.key_id |
| signature | Ed25519 valid over the hex digest string |
| ubl_sha256 | SHA-256 of exact UBL bytes matches, if UBL provided |
| settlement_reference | network and tx_hash present |
VERIFIED means cryptographic integrity under these rules. It does not mean tax-authority approval, legal identity of a wallet, or complete regulatory compliance.
Server convenience endpoint
limited
POST https://api.fiscal402.com/v1/compliance/receipts/verify
Content-Type: application/json
{ "hashes": { "canonical_payload_sha256": "…" }, "signature": { "value": "…" } }
→ { "valid": true }
This endpoint checks the Ed25519 signature of the stored hash against this node's keys.
It does not re-canonicalize the payload or re-hash UBL bytes. Independent verification is local.