Accepting Monero in an Online Store
The payment-processor pattern: BTCPay, a fresh subaddress per invoice, a watch-only wallet, e-commerce plugins and confirmation handling.
Adding Monero to an online store is mostly about choosing the right payment processor and letting it do the heavy lifting. You do not need to write cryptography or watch the blockchain by hand — a good processor generates invoices, detects payments, and tells your store when an order is paid. This lesson explains the standard pattern, the pieces involved, and the edge cases every merchant should handle.
The Payment-Processor Pattern
Almost every online Monero integration follows the same shape:
- The customer reaches checkout and chooses to pay with Monero.
- Your store asks a payment processor to create an invoice for the order total.
- The processor returns a fresh address, an amount, and a QR code, and shows a countdown.
- The customer pays; the processor watches the network and detects the incoming transaction.
- Once it has enough confirmations, the processor notifies your store, which marks the order paid and fulfils it.
This same request-and-callback flow is described from a developer's angle in Receiving Payments Integration. As a merchant you mostly configure it rather than code it.
Self-Hosted vs Hosted
BTCPay Server is the most common choice and comes in two flavours:
- Self-hosted. You run BTCPay yourself (or on a managed host), connected to your own Monero node. You hold your keys, pay no per-transaction cut, and no third party sits between you and your money. It takes more setup and maintenance. The full walkthrough is in Accepting Monero with BTCPay.
- Hosted. A provider runs the processor for you. It is faster to start, but you are trusting them and possibly sharing more information. Choose one that lets you keep control of your funds.
Self-hosting best matches Monero's ethos of not relying on intermediaries, but a hosted option can be a reasonable first step.
A Fresh Subaddress Per Invoice
Just as at the counter, each online invoice should use a fresh subaddress. This lets the processor tell which payment settled which order without any shared identifier, keeps your records clean, and preserves privacy. The processor derives these subaddresses automatically from your wallet — you do not manage them by hand. If subaddresses are new to you, review Subaddresses and Accounts.
Watch-Only Wallets: Detect Without Spending
Here is the security keystone. Your web server should never hold your spend key. Instead, the processor uses a watch-only wallet built from your wallet's public view key. A watch-only wallet can see incoming payments and confirm they arrived, but it cannot spend anything. So even if your server is breached, an attacker learns of payments but cannot move your funds. You spend from a separate, secured wallet that holds the spend key offline or on a trusted machine — the hot/cold split we return to in Converting Monero & Managing Cash Flow.
E-Commerce Plugins
If you run a common platform, there is likely a ready-made connector:
- WooCommerce (WordPress) has well-maintained BTCPay and Monero plugins.
- Shopify, Magento, PrestaShop and others integrate through BTCPay or dedicated gateways.
- Custom stores use the processor's API and webhooks directly.
A plugin turns "accept Monero" into a checkbox and a few settings — pointing the store at your processor and choosing how many confirmations to require.
Confirmations, Expiry, and Underpayment
Three settings decide how robust your checkout is:
- Confirmations. Decide how many blocks to wait before treating an order as paid. Higher is safer but slower; many stores accept a low count for modest orders and require more for large ones — the same 0-conf trade-off from Point of Sale & In-Person Payments.
- Invoice expiry. Each invoice is valid for a fixed window (locking the XMR amount against rate movement). If the customer does not pay in time, the invoice expires and they start over at the current rate.
- Underpayment and overpayment. If a customer sends too little, the processor can mark the invoice partially paid and ask for the balance; if they send too much, you may need to refund the difference. Decide your policy and configure the tolerance.
With a processor handling invoices, a watch-only wallet detecting payments, and sensible confirmation and expiry settings, an online Monero checkout is reliable and low-maintenance. Once payments are flowing in, the next question is what to do with the XMR — converting it and managing your cash flow.
Comments
Log in or create a free account to comment.
No comments yet — be the first.