A receipt for every decision

Every verification comes back with what it decided and why: the score for each step, the required threshold, the model version and the media hashes, signed with your organization's key.

Anatomy of a receipt

  • The resultApproved, rejected or human review — never a hidden "maybe".
  • Each checkWith the score it got and the threshold it needed.
  • The yardstick usedThe hash of the policy in force at that exact second.
Decision receipt5b0e…
Approved
  • Quality0.99 / 0.60
  • Liveness0.97 / 0.80
  • Randomized gestures3 of 3
  • Same face throughout the video0.92 / 0.70
  • Face × ID0.74 / 0.70
face-engine 2026.09.20 · ISO/IEC 30107-3 profile
Ed25519 · 9f3a…c21d
  • The engine and versionSo you know, months later, which model decided.
  • The signatureYour organization's Ed25519 key. Check it with the public key.
  • The hashesOf the video, the best frame and the ID.

Nine states, none ambiguous

The status tells you what to do: proceed, reject, send to a person or try again. Only an engine error retries on its own.

SESSION_OPEN PROCESSING APPROVED REJECTED INCONCLUSIVE RETRY_ALLOWED human review new attempt, with the reason

Verifiable without Catalisa

Months later, in an audit or a dispute, anyone can check the signature with your organization's public key.

Download the public key

Your organization's, at GET /evidence-keys.

Get the receipt

At GET /sessions/:id/evidence, with the signature.

Verify

openssl pkeyutl -verify — on your own machine, with Catalisa offline.

Run your first verification and read the receipt.