Verify a Tessaliq receipt

Paste a receipt JWT below, or drop a file. The verification is done entirely in your browser — only the public JWKS endpoint is fetched, the receipt contents never leave your machine.

See the receipt spec v1 for the full format. The verifier logic used here mirrors @tessaliq/receipt-verifier (MIT).

Verifying against api.tessaliq.com

Drop a receipt file here or paste the JWT below

Accepts a plain .jwt or .txt file containing a single JWT string.

Re-verify this receipt yourself, in your terminal

The browser-side verification on this page mirrors the @tessaliq/receipt-verifier library (MIT). Drop the JWT into a file and verify with:

# Option A — npx (when published to npm)
echo "<your-jwt>" | npx @tessaliq/receipt-verifier

# Option B — clone the open-core repo
git clone https://github.com/Tessaliq/tessaliq-open.git
cd tessaliq-open
pnpm install && pnpm -F @tessaliq/receipt-verifier build
echo "<your-jwt>" | node packages/receipt-verifier/dist/cli.js

For fully air-gapped verification, fetch the public JWKS once and pass it to verifyReceipt(jwt, { jwks }) from the lib. The repo bundles a real receipt + matching JWKS snapshot under examples/real-receipt.json as a reproducible reference.

What the verification proves

Cryptographic integrity

The JWT was signed by the private key whose public counterpart is currently published at the JWKS endpoint (kid: tessaliq-receipt-v1), and the claims have not been tampered with since signature.

What Tessaliq attested

The receipt records the policy applied, the result, the timestamps and, if applicable, the proof hash. These are declarations signed by Tessaliq — they are non-repudiable if the key is uncompromised.

What this page cannot prove

Whether the session exists in Tessaliq's database (no public lookup in v1), whether the internal verifier logic applied the policy correctly (see public OIDF plans for that), or the identity of the wallet user (by design — double anonymity).