① Compose the invoice
Everything below is sealed into a tamper-evident descriptor in the next step. Amounts are grain-exact.
Line items
| Description | Amount (PRL) |
|---|
Guards: empty line items are refused · totals under the 333-grain dust floor are refused · an invalid address is refused loudly.
② Tamper-evident descriptor
Share this descriptor alongside the invoice. Anyone can re-hash the invoice JSON and prove it matches — edit one character and verification fails.
Descriptor
Canonical invoice JSON (the hashed payload)
SHA-256:
Publish checklist
- ☐ Send the descriptor + canonical JSON to the payer
- ☐ Send the receiving address and the exact PRL total (Step 3 makes a QR)
- ☐ Tell the payer to pay the exact amount in one or more txs — partial payments are tracked
- ☐ Keep your own copy of the commitment file for your books
Optional: fresh per-invoice address (from your own BIP-86 mnemonic)
Derives a fresh receiving address under your invoicing account m/86'/{coin}'/9001'/0/<index> using the audited Sign core. The mnemonic lives in page memory only — wipe it when done. Nothing is broadcast, ever.
Fresh address:
Path:
③ Receive
The payer scans this with any Pearl wallet. The amount is exact to the grain.
Pay to:
Amount due:
④ Watch for payment
GET-only Blockbook reads. This page never signs, never broadcasts, never moves funds.
| txid | Received | Confirmations |
|---|---|---|
| No payments to this address yet. | ||
Air-gapped check
Paste a txid you obtained elsewhere — the page fetches only that one transaction and analyzes it against the invoice. No address scan.
⑤ Receipt
Once paid, stamp a hash-bound receipt: it ties the invoice hash to the settling txid and the exact grains paid.
Receipt record
Hand the receipt string to the payer together with the invoice descriptor — the Verify tab confirms both.