Veyto

Verifying a receipt

Anyone holding a Veyto receipt can check it. No account, no API key, no access to the instance that issued it — verification needs only the receipt's own bytes and a published list of signing keys.

bash
curl -X POST https://verify.veyto.io/api/verify-receipt \
  -H 'content-type: application/json' \
  -d '{"body_canonical":"…","signature":"…"}'

Or paste the receipt into the page at verify.veyto.io.

The four answers

verdictmeaning
verified_trusted_keysignature valid and the key is one of Veyto's. The only accepting result.
verified_unrecognized_keythe bytes are intact, but the key is not in the published history — a forgery looks exactly like this
signature_invalidthe receipt was altered, or the signature is not its own
malformednot a receipt the verifier can read

⚠️ Switch on verdict, never on signature_valid alone. A well-formed forgery sets signature_valid to true; what it cannot do is present a key Veyto published.

What verification proves

That these bytes are the bytes that were signed, by the holder of that key. Nothing was altered afterwards — not the amount, not the payee, not the policy_digest.

What it does not prove

  • that the goods arrived;
  • that settlement is final;
  • that anyone is who they claim to be;
  • that the payment was lawful or appropriate.

Those are separate questions with separate evidence. A signature is a statement about bytes, and treating it as a statement about the world is the most common way cryptographic evidence gets misread.

Verifying it yourself

The receipt is self-describing: sig.alg, sig.kid, sig.pub and canon_v are inside the signed body, so a receipt can be checked years later with nothing but Ed25519 and Veyto's published key history.