Accept Monero payments easily
The simplest way to accept XMR payments. Developer-friendly API, instant setup, and automatic payouts to your wallet — completely free. Start accepting private payments in minutes.
$ curl -X POST https://your-server.com/api/charges \
-H "x-api-key: rp_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{"amount": 49.99, "currency": "USD"}'
{
"id": "ch_1737001234567",
"amount": 49.99,
"currency": "USD",
"amount_xmr": 0.284521,
"subaddress": "8A1h3x...",
"status": "pending",
"expires_at": "2026-01-16T02:00:00.000Z"
}
True Privacy
Monero's ring signatures, stealth addresses, and RingCT ensure complete transaction privacy. No blockchain analysis possible.
Fast Confirmations
2-minute block times with 10-confirmation finality. Your payments confirm in ~20 minutes.
Zero Fees
Free payment processing. No monthly costs, no setup fees, no transaction fees. Self-host and keep every satoshi.
Zero JavaScript
Every page works without JavaScript. CSP header blocks all scripts. Auditable, secure, Tor-native.
Tor Native
Built for Tor Browser "Safest" mode. Access via .onion address for maximum anonymity.
API-First
Simple REST API with webhooks. Create charges, track payments, integrate anywhere with curl.
How It Works
Create a Charge
POST to /api/charges with amount and currency. We generate a unique Monero subaddress.
Customer Pays
Show the payment page with QR code. Customer sends XMR from any wallet.
Get Notified
Webhook fires when payment confirms. Funds arrive in your wallet automatically.
Simple, transparent pricing
Free and open source. Self-host on your own terms.
Self-Hosted
Run your own instance
Zero transaction fees
Unlimited transactions
Your keys, your coins
REST API & webhooks
MIT licensed
Auto-Swap
Optional add-on
XMR to USDC/USDT
Instant conversion
Multi-chain payout
Configurable provider
Reduce volatility risk
Hosted
We run it for you
Managed instances
Zero server maintenance
Automatic updates
99.9% uptime SLA
Priority support
Built for Auditors
Our Content-Security-Policy header proves zero JavaScript:
Content-Security-Policy: script-src 'none'
Every page is server-rendered HTML. View source and verify.