Point of Sale & In-Person Payments
A fresh subaddress and QR per sale, confirmations vs zero-conf risk, the 10-block lock, receipts, and POS apps and appliances.
Taking Monero in person — at a market stall, a café counter, or a shop till — is fast and cheap once you have a simple routine. The challenge is different from online sales: the customer is standing in front of you, waiting, and you need to know the payment is real before they walk out the door. This lesson covers generating a payment request per sale, how confirmations work at the counter, and the edge cases to plan for.
A Fresh Subaddress and QR Per Sale
For every transaction, generate a fresh subaddress and show its QR code with the exact amount encoded. Never reuse one static address for all customers. Using a new subaddress each time keeps your incoming payments cleanly separated, makes it obvious which payment belongs to which sale, and preserves privacy. Monero wallets can generate effectively unlimited subaddresses at no cost — the concept is explained in Subaddresses and Accounts.
The customer scans the QR with their wallet, the amount is pre-filled, and they confirm. Encoding the amount in the request removes the risk of them typing the wrong figure.
Confirmations and the 10-Block Lock
When the customer's wallet broadcasts the payment, it appears in the mempool within seconds and then gets included in a block — roughly every two minutes on average. A payment becomes progressively more secure with each additional block mined on top of it. There is one Monero-specific detail to know: received funds are locked for 10 blocks (about twenty minutes) before you can spend them. That lock does not mean the payment is unconfirmed — it means the incoming amount is not yet re-spendable. For accepting a sale, what you care about is that the transaction has confirmed, not that you can immediately re-spend it.
0-Conf Risk and Small Amounts
Waiting for a full confirmation takes a couple of minutes, which can feel long at a busy counter. Whether to accept a payment on zero confirmations — the moment it hits the mempool, before it is in a block — is a risk-based judgement:
- For a
$3coffee to a customer you can see, the practical risk of accepting 0-conf is tiny, and most small merchants do. - For a high-value item, wait for at least one confirmation before handing over goods.
A seen-in-mempool payment is very likely to confirm, but it is not guaranteed until it is in a block. Set a threshold that matches your comfort and your average sale size.
Receipts
Give the customer something — a printed or on-screen receipt showing the amount in fiat and XMR, the date, and ideally the transaction reference. It reassures the buyer and gives you both a record to reconcile later. Good record-keeping habits are covered in Refunds, Records & Day-to-Day Operations.
POS Apps and Node Appliances
You do not need to hand-build any of this. Options range from simple to full-featured:
- Merchant POS apps connect to a watch-only view of your wallet, generate the QR, and beep when the payment lands — no need to expose your spend key on the counter device.
- Self-hosted processors such as BTCPay Server include point-of-sale screens alongside online invoicing; see Accepting Monero with BTCPay.
- Node appliances — a small dedicated box running your own Monero node — let your POS confirm payments against your own copy of the blockchain rather than trusting a third party.
Whatever you use, the till device should hold at most a watch-only wallet so a stolen or compromised tablet cannot spend your funds.
Offline and Edge Cases
The counter will not always behave. Plan for the awkward moments:
- No internet. A POS that cannot reach the network cannot confirm payments. Keep a mobile-data fallback, or agree with the customer to verify once you are back online.
- Underpayment. If a customer sends slightly too little (perhaps mis-scaling the amount), decide in advance whether to accept, ask for a top-up, or refund.
- Rate drift. Re-quote the XMR amount if the customer takes a while, using a short lock window as described in Pricing in Monero & Handling Volatility.
- Slow confirmation. Occasionally a block takes longer than average. Have a friendly "give it a moment" line ready.
In-person Monero payments come down to a fresh QR, a clear confirmation threshold, and a watch-only device at the till. Get that routine smooth and taking XMR is no harder than taking cash. Next we move online and wire Monero into a web store's checkout.
Comments
Log in or create a free account to comment.
No comments yet — be the first.