zkSVM

App

Litepaper

Documentation

Links

DocsUse the app

Receipts

Show that you paid, without opening the payment.

2 min read

A private payment leaves nothing public to point at. A receipt fixes that on your terms: it shows one person that you paid a specific recipient at least a specific amount — and nothing else about you or the payment.

Writing a receipt sends no transaction and costs nothing.

Write a receipt

  1. Open Prove → A payment.
  2. Choose the payment under Payment. The list holds what you have sent from this browser.
  3. Under At least, enter the amount to show. All fills in the full amount — or enter less: for a 1 SOL payment, at least 0.5 is a valid receipt that keeps the exact figure to yourself.
  4. Under For, say what it is for: invoice 1042, March rent.
  5. Press Write receipt, then Copy receipt.

The result is a block of text starting with zkreceipt. Send it however you like.

Check a receipt

  1. Open Prove → Check one.
  2. Paste the receipt.
  3. Optionally type the purpose you expect under For.
  4. Press Check.

A valid result reads "At least 0.4 SOL was paid to CZ92nGCx…3LjWqU", with the note's position in the pool and the stated purpose. The check runs in your browser: the proof is verified, the recipient is recomputed from the address the receipt names, and the note is looked up among the pool's notes.

What a receipt shows

ShownNot shown
The recipientThe exact amount, unless you chose to
A floor on the amountWho the payer is
The purpose you wroteAny of your other payments
That the note exists in the poolAnything that lets the reader track the note

That last row is the point. You could prove a payment by handing over the note's raw details — but those details would let the reader watch for the moment the note is spent. A receipt proves the same thing and gives away none of it.

Good to know

  • The payments list lives in this browser's storage. Write receipts from the browser you paid from; the payments themselves are unaffected if the list is lost.
  • A receipt shows that the payment exists. Either side of a payment can write one, so treat it as proof of the payment, not of who is holding the receipt.
  • For a returnable payment the check also shows the return date, so the reader can tell whether it could still go back.