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 Solana 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: a zero-lamport transfer to the registry PDA plus a memo holding the record. No program to deploy, no owner, no admin key — and the whole registry reads back in a single RPC call.
| Pair | Receipt fingerprint | Signed by | When | Tx |
|---|---|---|---|---|
| Reading the registry off Solana… | ||||
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 sits in the public Solana memo registry — so a spent fingerprint is refused by anyone reading the chain, 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 signs one Solana transaction: a zero-lamport transfer to the registry PDA — derived from the memo program, so nobody holds its key — plus a memo instruction carrying RCPT1|MERCHANT|$TICKER|fingerprint|date|total|name. The fee is about 0.000005 SOL. There is no program of ours in the path, so there is nothing to upgrade, pause or rug: the claim is a signed message in a block, and getSignaturesForAddress hands the whole registry to anyone who asks.
Your side. Name, ticker, supply, and when it opens. The merchant side was decided at the till.