You choose the coin.
Your receipt chooses the pair.
The thesis
Every launchpad lets you type any ticker you want and point it at any brand you feel like. Nothing behind it. No claim, no history, no cost.
Recit removes the choice. Upload a real receipt from a real purchase — the merchant on that receipt becomes the other side of your market, and nothing else will.
You can't walk in and pick Nike.
You have to be able to prove: I actually bought Nike.
After that, your side of the pair is yours — name it, ticker it, launch it. The merchant side is already locked by the paper you uploaded.
The primitive
Something you already did. A pair of shoes, a laptop, a coffee. The purchase happens off Recit, in the real economy.
Drop the receipt — photo, screenshot, PDF export or pasted order mail. It's read in your browser; the image never has to leave it.
Merchant, order reference, date and total are extracted and fingerprinted. One receipt, one fingerprint, one launch.
The merchant is matched against the registry and locked as the quote side. You don't get to change it. That's the point.
You name your side, sign once, and the pair is written to Robinhood Chain mainnet as $YOURS / MERCHANT — bound to that receipt's fingerprint.
Live
Everything below runs in this tab. OCR, merchant matching and the receipt fingerprint are computed locally in your browser — nothing is uploaded.
Images are OCR'd on device. First image takes a few seconds while the model loads.
receiptpad ~ waiting for input — $ receiptpad read ..
On-chain
A claim is a real mainnet transaction: zero ETH to the registry address, the record in the calldata. No contract to trust, no owner, no admin key — and anyone can read the whole registry straight off the chain.
| Pair | Receipt fingerprint | Claimed by | When | Tx |
|---|---|---|---|---|
| Reading the registry from the chain… | ||||
Worked examples
You bought shoes at Nike — your receipt is launch permission. You bought an iPhone — your receipt opens the Apple pair. You bought coffee — you can build a market against Starbucks. Receipts stop being proof of purchase. They become market credentials.
Verification
Merchant, order reference, date and total are normalised and hashed with SHA-256. The hash is what the market carries — the image stays on your device.
The same receipt produces the same fingerprint every time, and every claim is public on-chain — so a spent fingerprint is refused by anyone reading the registry, not just by us.
Merchant strings are matched against a public registry with one canonical symbol per brand. Off-registry merchants queue instead of launching against the wrong ticker.
No account, no name, no card number. Card digits and personal lines are dropped before hashing — a receipt is a credential, not an ID.
$ recit verify --receipt 78CJ-119203 merchant NIKE matched: registry/nike normalised nike|78cj119203|2026-09-04|129.00 fingerprint f3a6…c81d sha-256, 32 bytes replay none first use of this fingerprint quote side NIKE locked base side open caller names it → permission granted for 1 launch
Registry
One brand, one canonical quote symbol. If your merchant isn't listed, the receipt still verifies — the pair opens when the brand is added.
| Merchant | Quote symbol | Reads as | Status | On-chain |
|---|
Questions
No. That's the whole product. The quote side of every market is written by a receipt, and the only receipts that work are ones from a purchase that actually happened.
A till slip, an emailed order confirmation, an app order screen, a bank-level itemised receipt — anything carrying a merchant, a reference and a total. Photos, screenshots and pasted text all read the same.
The fingerprint. Identical inputs hash identically, and a spent fingerprint is refused — including on a re-cropped or re-photographed version of the same slip.
No. The read happens in your browser; what leaves is the fingerprint and the matched merchant symbol. Card digits and personal lines are stripped before hashing.
No, and it never claims to be. The quote symbol is a registry entry that tracks a brand, not an endorsement, a share, or a claim on the company.
Your wallet sends one transaction on Robinhood Chain mainnet (chain 4663): zero ETH, addressed to the registry address 0x5265636974000000…, carrying RCPT1|MERCHANT|$TICKER|fingerprint|date|total|name as calldata. Gas is a fraction of a cent. There is no contract in the path, so there is nothing to upgrade, pause or rug — the claim is just a signed message in a block.
Your side. Name, ticker, supply, and when it opens. The merchant side was decided at the till.