Why a receipt is the best proof of purchase online
Screenshots can be edited and card data is hard to reach. The email your merchant already sends you carries a signature anyone can check. Here is how RECEIPT uses it.
Every reward program has to answer one question before anything else: did this purchase really happen? Loyalty apps usually solve it by owning the checkout, by reading your bank account, or by asking for a photo of a paper slip. Each option is either closed to newcomers, heavy on your privacy, or easy to fake with a photo editor.
RECEIPT starts from something you already have. When you pay Apple, Amazon or Starlink online, they send you an email receipt. That email is more than text. It carries a cryptographic signature added by the sender's mail servers, and that signature is what we check.
What DKIM is
DKIM stands for DomainKeys Identified Mail. It is an email standard that large senders use so inboxes can tell real mail from spoofed mail. When a merchant sends your receipt, its server computes a fingerprint of the message body and of selected headers such as From, Date and Subject, then signs that fingerprint with a private key. The matching public key is published in the merchant's DNS records, where anyone can read it.
To verify a receipt, we fetch that public key, recompute the fingerprint and check the signature. If a single character of the signed content has changed, the check fails. If the signature is valid, the message was signed by a server holding that domain's key.
Why this beats a screenshot
- A screenshot proves that someone had pixels on a screen. A DKIM signature proves which domain signed the content.
- Editing the amount or the date breaks the signature, so a changed receipt is rejected instead of rewarded.
- Verification needs no access to your bank, your card or your merchant account. The proof travels inside the email.
- The check is the same for every user and every merchant, so the normal case needs no manual review.
What we check on every receipt
A valid signature is necessary, but it is not enough. RECEIPT only accepts a receipt when several conditions hold at the same time:
- The signing domain is in our brand registry, and the sender matches the exact address that brand uses for receipts. Big domains also send account alerts and form notifications, so a domain alone does not prove a purchase.
- The receipt was sent to one of the email addresses you verified with a one-time code, so nobody can claim receipts that were sent to someone else.
- The receipt is at most 7 days old when it reaches us. Rewards are for new purchases, not for years of history.
- The order has never been claimed before, anywhere. Each order produces a unique fingerprint that can be used once.
- The amount we read appears, exactly as written, in the signed part of the email.
The forwarding question
Receipts reach RECEIPT through a Gmail filter that forwards messages from registry brands to your personal RECEIPT address. Forwarding is where the method gets tested. Some paths keep the original message byte for byte, and the merchant's signature survives. Others rebuild the message on the way, which breaks it. Microsoft documents that Outlook rules and forwarding rebuild messages, so Outlook stays unsupported unless our tests find a path that keeps the signature.
That is why the first step of our roadmap is a feasibility spike on real receipts from real merchants, forwarded the way you will forward them. For each brand we measure whether the signature survives and which domain signs it. Brands that fail the test do not go live.
If the signature does not check out, the receipt does not count. There is no manual override for a nice-looking email.
What it means for you
For you, the whole thing takes one filter. After setup, receipts arrive, get checked in seconds and either count or come back with a clear reason. You never share a password, you never grant inbox access, and a receipt you did not really receive can't be turned into a reward.