Verify a receipt
Verification answers whether the available evidence matches the hash committed onchain. It does not decide whether the underlying commercial statements are true.
Public receipt
Open:
https://app.proofrails.com/verify/{receipt_id}
A completed hosted receipt should display anchored, the bundle hash, the anchor transaction and the evidence download.
Verification API
curl --fail-with-body --request POST https://app.proofrails.com/v1/iso/verify --header 'Content-Type: application/json' --data '{
"bundle_url": "https://app.proofrails.com/files/{receipt_id}/evidence.zip",
"bundle_hash": "0xEXPECTED_SHA256"
}'
You may provide bundle_url, bundle_hash, or both. When a URL is supplied, ProofRails downloads the ZIP and computes its SHA-256.
{
"matches_onchain": true,
"bundle_hash": "0x...",
"flare_txid": "0x...",
"anchored_at": "2026-07-29T10:13:26Z",
"errors": []
}
Independent checks
For higher assurance:
- Download
evidence.zipyourself. - Compute
sha256(evidence.zip)and add the0xprefix. - Read
manifest.jsonand recompute every listed file hash and byte size. - Verify
manifest.sigagainstpublic_key.pemusing Ed25519. - Fetch the Flare transaction receipt for
flare_txid. - Decode
EvidenceAnchored(bytes32,address,uint256)from the configured EvidenceAnchor contract. - Require exact equality between the event
bundleHash, the downloaded ZIP hash and the receiptbundle_hash.
A signature only shows that the manifest was signed by the included key. Trust in the signer still depends on how your project obtained and protected that key.