Paste a GateCore signed action receipt below. Your browser recomputes the signed bytes, checks the hash, and checks the Ed25519 signature. Nothing you paste here reaches GateCore, or anyone else.
Finance teams at month-end: every agent purchase has a receipt; paste it and settle "did we authorize this?" in seconds.
Sellers in a dispute: the receipt shows exactly what was delivered, under which terms, and proves the record was never altered.
Security reviewers before a contract: test the audit claim yourself in thirty seconds instead of trusting a PDF.
Every vendor says trust us. This page is how you check.
The same check a receipt would get from the standalone Python verifier GateCore publishes at examples/verify_receipt.py, ported to run in a browser tab instead of a terminal.
GET /v1/receipts/{request_id}Works with the full envelope from GET /v1/receipts/{request_id}: {receipt, payload_sha256, signature, signing_key_id, alg}.
GateCore's API blocks cross-origin browser requests by design (see below), so this page cannot live-fetch the current key list. The active production key ships embedded above. If you're checking a receipt signed under a rotated or retired key, paste that key set instead.
Optional. GateCore receipt_version 2 carries request.request_sha256, the hash of the exact bytes the agent's own signature covers. If you also hold the original signed request JSON, paste it here to check that binding, and optionally the agent's Ed25519 public key to check the agent's own signature.
GET /v1/receipts/keys is unauthenticated on purpose. Anyone verifying a receipt needs the public key, with no account. What it does not do is answer cross-origin browser requests: GateCore's CORS policy allows only its own applications to call the API from a browser tab. Confirmed directly against the live endpoint before this page shipped: a preflight from this origin comes back 400 Disallowed CORS origin. That is a locked-down security posture, not an oversight, so this page embeds the key instead of fetching it.
Call api.gatecoreai.com/v1/receipts/keys yourself, from a terminal or server, and paste what it returns into "Use a different key" above. Or skip this page entirely and run examples/verify_receipt.py, the same reference verifier this page's canonicalization was checked against.
Read the full model, including the ledger's hash chain and off-box checkpoint anchoring, on the security page.
GET /v1/receipts/{request_id} on your gateway returns the exact envelope this page expects: {receipt, payload_sha256, signature, signing_key_id, alg}. The Operator Console's Activity view links a transaction to its receipt for download.payload_sha256, signature, or signing_key_id). A genuine tamper produces the same failure, which is the point.Every governed transaction gets one of these. Ask us for a live one against your own use case.
Request early access