Monero Wallet Guide Best Monero wallets

How to accept Monero payments

Small sellers can accept Monero with any wallet by giving each customer a new subaddress. Online shops usually run BTCPay Server with its community Monero plugin or MoneroPay, which watch a view-only wallet on their own node, so payments go straight to the merchant without a middleman.

Your options at a glance

MethodBest forWho holds fundsEffort
Wallet plus a subaddress per customerFreelancers, donations, occasional salesYouMinimal
BTCPay Server with Monero pluginOnline shops (WooCommerce and other integrations), point of saleYouServer with Docker, a Monero node
MoneroPayDevelopers building custom checkouts, kiosks, scriptsYouRun a service with an HTTP API
Your own code on monero-wallet-rpcTeams with developersYouHigh

All of these are self-hosted. We do not cover custodial payment processors here, and we have no commercial relationship with any of the tools listed.

The simple way: a wallet and subaddresses

If you get a handful of payments a week, you do not need software. In Cake Wallet, Feather, Monerujo or the GUI, create a new subaddress for each customer or invoice and label it with the order number. When funds arrive, the label tells you who paid. Customers cannot see each other's payments or link them to your main address.

To let a bookkeeper or partner see incoming payments without being able to spend, give them a view-only wallet. See Monero view key.

BTCPay Server and the Monero plugin (status in 2026)

BTCPay Server is free, open-source, self-hosted payment software. With BTCPay Server 2.0 it moved altcoin support into plugins, and Monero support now lives in a community-maintained plugin rather than BTCPay's core.

  • How it works. You set xmr in BTCPay's Docker deployment, which starts a Monero node (pruned by default) and a wallet RPC container. You then install the Monero plugin under Manage Plugins and enter your primary address, private view key and restore height. The plugin creates a view-only wallet on the server, generates a subaddress per invoice and watches for payments. Your spend key never touches the server.
  • Funding and progress. A Community Crowdfunding System proposal dated 6 January 2025 raised 273 XMR to rework the plugin. By mid-2026 two of four milestones were complete: core infrastructure (June 2025) and a UI refactor for a v0.1.0 release (completed 13 April 2026, paid out 19 June 2026). Multi-wallet support with monero-lws and the final polished release had not started, according to the proposal page in October 2026.
  • Known limitation. A guide updated in July 2026 notes that one Monero wallet is shared across all stores on a BTCPay server.

Bottom line: it works and is widely used, but treat it as community software still being improved. Test the full checkout on a staging store before going live.

MoneroPay

MoneroPay is a standalone backend that sits on top of Monero Wallet RPC and stores data in PostgreSQL or SQLite. It exposes a simple HTTP API to create receive requests, check balances and send transfers, and it can call your server back when a payment arrives, with an optional zero-confirmation mode. It suits custom shops, vending machines, ticketing and scripts rather than off-the-shelf store plugins. Because it can send funds, protect the wallet RPC carefully.

Building your own on monero-wallet-rpc

monero-wallet-rpc ships with the official Monero CLI. A common design is a view-only wallet on the web server that creates a subaddress per order and polls for incoming transfers, while the spending wallet stays offline. Run it against your own node: see how to run a Monero node. Never expose the wallet RPC to the internet without authentication.

How many confirmations to require

Order valueReasonable policy
Very small, digital goodsAccept on seeing the transaction in the mempool (0-conf), accepting a small risk
Typical orders1 to 10 confirmations, roughly 2 to 20 minutes
High valueMore than 10 confirmations; after the 18-block reorganisation of 14 September 2025, the Monero Research Lab advised waiting beyond 10 for large transfers

Remember that received funds cannot be spent for 10 blocks, so plan refunds and payouts accordingly. Details in how to send Monero.

Pricing, refunds and volatility

  • Quote prices in your local currency and convert at checkout, with a short payment window, usually 15 to 60 minutes. BTCPay does this automatically.
  • Decide what happens with underpayments and late payments before you go live.
  • For refunds, ask the customer for a fresh address. Monero has no return address on-chain.
  • If you do not want price exposure, you will need a legal way to convert XMR to fiat. Options have shrunk since the exchange delistings; see how to sell Monero and the delisting tracker.

Accepting crypto is legal in many countries but is regulated or restricted in some. Sales in XMR are normally taxable like any other sale, and you need records of each payment and its value in your currency at the time. Keep your view-only wallet export and invoice data. Read Monero taxes, is Monero legal and your country page, and ask a local accountant.

Frequently asked questions

Does BTCPay Server still support Monero in 2026?

Yes, through a community-maintained Monero plugin installed from BTCPay's plugin manager. A crowdfunded rework had completed two of four milestones by mid-2026, with multi-wallet support still to come.

Does a payment processor need my Monero spend key?

No. BTCPay's Monero plugin needs only your primary address, private view key and a restore height to watch for payments. Keep the spend key and seed offline.

How do I tell which customer paid?

Give each order its own subaddress. Wallets and payment tools show which subaddress received funds, so you can match payments to orders without payment IDs.

Is it safe to accept Monero with zero confirmations?

It is a risk you accept for small orders only. A payment seen in the mempool could still fail. For normal orders wait at least one confirmation and, for large ones, more than 10.