What a receipt contains
| Field | Description |
|---|---|
request_id | Unique ID of the request |
tenant_id | Your organization |
actor | The user/key the request is attributed to |
provider / model | Who served it and with what |
prompt_tokens / completion_tokens | Token usage |
cost_usd | Actual cost committed for the request |
checks | Ordered list of policy decisions ({name, result}) — budget, allowlist, guardrails, PII |
ts | Timestamp (RFC 3339, UTC, millisecond precision) |
How the chain works
- The receipt’s fields are serialized in a fixed canonical order.
this_hash = sha256(canonical_receipt || prev_hash)— each receipt’s hash incorporates the previous receipt’s hash.this_hashis signed with the gateway’s ED25519 key.
Chaining and signing happen in an asynchronous writer, off the response path. Receipts
add zero latency to your LLM requests, and the chain only advances after the
receipt is durably stored.
Where to see receipts
- INGRESS — click any request in the live stream to open its receipt drawer (with
RECEIPT | TRACEtabs). - EVIDENCE — chain statistics, a sample verified receipt, and the compliance-framework view.
Verifying programmatically
verified: true means the stored hash equals sha256(canonical || prev_hash) and the ED25519 signature over that hash is valid. Receipts are tenant-scoped — you can only read your own.
Verify your first receipt
If you completed the in-product onboarding wizard, its last step already shows you your first receipt — this is how to confirm it yourself, and how to check any receipt afterward:- Open INGRESS and click the row for your first request (or any request) — the
receipt drawer opens with
RECEIPT | TRACEtabs. - The
RECEIPTtab shows aVERIFIED ✓orUNVERIFIED ✕badge.VERIFIEDmeans Wardin recomputedsha256(canonical || prev_hash)from the stored fields and confirmed the ED25519 signature over it matches — nothing is taken on trust. - To verify programmatically instead, fetch the same receipt by ID (see below) and
check its
verifiedfield, or runverify-chainover a range that includes it.
VERIFIED badge happens on every fetch,
independent of who’s watching.