Step-by-Step Guide: Accept Monero (XMR) Payments via BTCPay

Accept Monero Payments

Option 1: Use a Crypto Conversion Plugin (e.g., CryptoConvert)

1. Set Up BTCPay Server

  • Deploy BTCPay Server or Follow official docs.
  • Create a store and configure Bitcoin (BTC) as the primary currency.

2. Install the CryptoConvert Plugin

  • In BTCPay Server’s Plugins section, install CryptoConvert (supports altcoin conversions).

3. Configure Exchange Integration

  • Sign up for an exchange that supports XMR/BTC pairs (e.g., Kraken, Binance).
  • Generate API keys with trade and withdraw permissions.
  • Enter API keys in CryptoConvert’s settings.

4. Enable Monero Payments

  • In your store’s Checkout Settings, add Monero (XMR) as a payment method.
  • Set a conversion rate (e.g., XMR → BTC via exchange rates).

5. Test Transactions

  • Create a test invoice. Customers pay in XMR, which converts to BTC via the exchange.

Option 2: Self-Hosted Monero Wallet + Custom Script

1. Set Up BTCPay Server

  • Deploy BTCPay and configure your store.

2. Deploy a Monero Wallet/Node

  • Run a Monero node using monerod (Monero Node Guide).
  • Use monero-wallet-rpc to create a wallet for receiving payments.

3. Build a Payment Gateway Script

  • Write a script (Python/Node.js) to:
    • Generate unique XMR subaddresses for each BTCPay invoice.
    • Monitor the wallet for incoming XMR payments.
    • Use BTCPay’s API to mark invoices as paid when XMR is received.

Example API Call (Mark Invoice Paid):
bash curl -X POST "https://your-btcpayserver.com/invoices/INVOICE_ID/status" \ -H "Authorization: Basic YOUR_API_KEY" \ -d '{"status": "paid"}'

4. Host the Script

  • Deploy the script on a server (e.g., AWS, DigitalOcean) and set up cron jobs for payment checks.

Option 3: Use a Third-Party Gateway (e.g., NOWPayments)

1. Sign Up for NOWPayments

  • Create an account at NOWPayments.io.
  • Enable Monero (XMR) as a payment option.

2. Generate API Key

  • In NOWPayments’ dashboard, create an API key for BTCPay integration.

3. Configure BTCPay Server

  • Install NOWPayments’ plugin (if available) or use their API to sync invoices.
  • Set up webhooks to notify BTCPay when XMR payments are received.

Key Considerations

  • Privacy: Option 2 (self-hosted) is best for privacy; third-party tools (Options 1/3) expose transaction data.
  • Fees: Exchanges and gateways charge conversion fees (~1–5%).
  • Technical Skill: Option 2 requires coding; Options 1/3 are plug-and-play.

Final Step: Update Your Website
Embed BTCPay’s payment button or API into your site. For XMR-specific instructions, add a note:
“Pay with Monero (XMR): Send XMR to [address] and email receipt to [email] for confirmation.”


Note: Always test transactions before going live!