Accepting Monero with BTCPay Server
Advanced: run your own self-hosted BTCPay Server to accept Monero payments directly — no processor, no middleman, full self-custody.
If you want to accept Monero for a business, store, or donations without handing control to a payment processor, the gold standard is to run your own BTCPay Server. It's free, open-source, self-hosted software that lets you receive Monero (and other coins) directly into wallets you control — no middleman, no fees to a third party, and no one able to freeze your funds. This is an advanced lesson: you'll be running server software, but the payoff is true payment self-custody.
What BTCPay Server is
BTCPay Server is a self-hosted payment gateway: a piece of software you run on your own machine (or a rented server) that generates invoices, shows customers a QR code to pay, watches the blockchain for the payment, and notifies your website when it confirms. Think of it as your own private "Stripe for crypto" — except you own every part of it. With the Monero integration, it accepts XMR straight into a wallet you control.
Why self-host instead of using a processor
- No middleman, no cut. Payments go directly to your wallet; nobody takes a percentage or can withhold your money.
- Self-custody. You hold the keys, in the spirit of "not your keys, not your coins." A processor that custodies funds can freeze or lose them.
- Privacy. No third party builds a profile of your sales, and you can run everything over Tor.
- Censorship resistance. No account that can be closed for selling the "wrong" thing.
What you need
- A server. A small VPS or a home machine that's online whenever you want to accept payments. (Privacy vendors are listed at Monerica.)
- A Monero wallet for the store. BTCPay's Monero integration needs your wallet so it can detect incoming payments — typically you supply the wallet's view key and primary address so the server can watch for funds without holding spend ability (see public & private keys and watch-only wallets).
- A Monero node. BTCPay runs a
monerodnode so it can verify payments itself rather than trusting anyone — the same idea as running your own node.
How a deployment works
- Deploy BTCPay Server. The common route is the official Docker deployment, which bundles BTCPay and the Monero components together. You can self-host it on your own server or use a one-click hosting option, but self-hosting keeps you fully in control.
- Enable Monero and sync. BTCPay spins up a Monero node and wallet; the node downloads the blockchain and syncs (this takes a while the first time).
- Connect your store wallet. Add your Monero view key + address so BTCPay can detect payments to fresh subaddresses it generates per invoice — great for privacy.
- Create a store and invoices. Plug BTCPay into your website (it has plugins for common platforms and a simple API), and it generates a Monero payment request for each order.
- Get paid. Customers scan the QR, pay in XMR, and once the payment hits the required confirmations, BTCPay marks the invoice paid — straight into your wallet.
For the full, current setup steps, follow the official BTCPay Server documentation at btcpayserver.org, and the Monero project's own guidance at getmonero.org.
Security and best practices
- Keep spend keys off the server. Give BTCPay only what it needs to watch for payments (view key); keep your spend key elsewhere so a compromised server can't drain funds.
- Harden the server. Firewall, updates, SSH keys, and ideally run the public-facing parts behind Tor.
- Back up. Back up your BTCPay configuration and your store wallet seed.
- Sweep to cold storage. Move accumulated revenue to cold storage rather than leaving it on the hot store wallet.
Own your payments end to end
Running BTCPay Server is the most sovereign way to accept Monero: direct, private, censorship-resistant, and entirely yours. It takes more effort than a hosted processor, but you never give up custody or trust a middleman. If you're not ready to self-host yet, start by getting comfortable paying with Monero and running a node — then graduate to accepting it on your own server.
Comments
Log in or create a free account to comment.
No comments yet — be the first.