
HMAC-SHA256 over a deterministic canonical payload.
Attach product, buyer, seller and warranty terms to a single signed document that travels with the purchase.
Sorted keys, no whitespace: byte-identical across any language.
Issue, transfer, revoke and verify with a typed TypeScript SDK.
Non-custodial sign-in with MetaMask, Trust Wallet, Rabby and more.
Every handoff appends a signed entry, so the ownership history stays intact.
Checksummed wallets and case-folded ids always resolve to one owner.
Move ownership to a wallet or id, with an optional reference such as gift.
Refund, chargeback or cancelled access: a revoked receipt cannot be transferred.
Non-custodial sign-in with MetaMask, Trust Wallet, Rabby and more.

ReceiptRegistry.sol stores only the hash, issuer, owner and revoked flag.
Checksummed wallets and case-folded ids always resolve to one owner.
Share a /receipt/id link showing status, history and live proof.
GET /api/receipts/:id/verify checks the signature and the on-chain anchor.
Non-custodial sign-in with MetaMask, Trust Wallet, Rabby and more.

