MonkStash Pay for WooCommerce is a coming Monero WordPress plugin that adds "Monero (XMR)" to your WooCommerce checkout. Each order gets its own address and a price held in your shop currency, the customer pays from any wallet, and the order marks itself paid. The money goes straight to your wallet: nothing in the chain can spend it but you.
- A fresh Monero address for every order, matched by address, never by amount.
- Prices in your shop currency, converted at a live rate and held for 30 minutes.
- Orders complete themselves; partial and late payments go on hold for you.
- Works with block and classic checkout, and with HPOS order tables.
What the plugin does
The plugin is the bridge between WooCommerce and MonkStash Pay, the self-hosted payment server that watches for payments with a view-only wallet. WooCommerce handles your shop; MonkStash Pay handles Monero; the plugin keeps the two in step.
How an order gets paid
Install and connect it
- Run MonkStash PayOn your server, with your shop wallet's address and view key. See the gateway guide.
- Install the pluginUpload it in WordPress under Plugins, Add New, Upload Plugin, then activate it.
- Enter three settingsIn WooCommerce, Settings, Payments, MonkStash Pay (Monero): the server address, API key and webhook secret. Saving tests the connection and shows the sync height.
- Point the webhook at your shopThe settings page shows your webhook address (ending in
/wp-json/monkstash-pay/v1/webhook). Put it in MonkStash Pay'sPAY_WEBHOOK_URL. - Test on stagenetPlace a test order with free stagenet coins before taking real money.
What happens to your orders
| Payment | Order becomes |
|---|---|
| Paid and confirmed | Processing (paid), with a note of the XMR received and any overpayment |
| Seen, waiting for confirmations | A note on the order |
| Partly paid | On hold, with how much is still owed |
| Arrived after the price hold ended | On hold, for you to accept or refund |
| Expired unpaid | Cancelled |
If a customer comes back to pay an unpaid order, the plugin sends them to the same open invoice instead of making a new one.
Why a fake webhook cannot fool it
A payment plugin is only as safe as its "this order is paid" message. This one checks three things before it changes an order:
- The signature. Every webhook is signed with your secret (HMAC-SHA256). Unsigned, wrongly signed or stale messages are rejected.
- The order. The invoice must belong to that exact order.
- The real status. Even with a valid signature, the plugin asks your MonkStash Pay server for the invoice status and acts on that, so a replayed message cannot mark an order paid.
A check every five minutes catches anything a missed webhook would have changed.
Compared to the older Monero plugin
The long-standing WooCommerce gateway for Monero (monerowp) has served shops for years, but its open issues include payments that are not detected and orders matched by amount, and one of its modes checks payments through a third-party block explorer using your view key. MonkStash Pay for WooCommerce takes a different route:
- Your view key stays on your own server, never on a third-party site.
- Every order has its own subaddress, so same-priced orders cannot be confused.
- Prices in your shop currency are converted from several exchanges, not one.
Status
Any shop can call MonkStash Pay's API directly. Selling at a counter? Use cashier mode.
Frequently asked questions
Is there a Monero WordPress plugin?
For WooCommerce stores, yes: the older monerowp gateway exists today, and MonkStash Pay for WooCommerce is built and tested on stagenet. Its code is open source; a ready-to-install download is not released yet.
Can I download the plugin now?
Not as a ready-to-install zip yet. The plugin code is already in the open-source MonkStash repository (BSD-3-Clause), next to MonkStash Pay, so you can read it today. The download comes after it has been tested on a real WordPress shop. MonkStash Pay itself is available to read and self-host now; it is built and tested on stagenet, has not had an independent security review yet, and you should start with small amounts.
How do I accept Monero on WooCommerce?
Once it is released: run MonkStash Pay on your server, install the MonkStash Pay for WooCommerce plugin, and enter the server address, API key and webhook secret in WooCommerce, Settings, Payments.
Does it work with the WooCommerce block checkout?
Yes. It supports both the block checkout (the default for new stores since WooCommerce 8.3) and the classic checkout, and WooCommerce's order tables (HPOS).
Is the plugin custodial?
No. Payments go straight to your wallet. The plugin only has an API key for your own MonkStash Pay server, which itself only has a view-only wallet.
Can I keep prices in euros or dollars?
Yes. The order total in your shop currency is converted to XMR at a live rate and held for 30 minutes by default.
What if a webhook is missed?
The plugin checks open Monero orders every five minutes, so orders still update if a webhook never arrives.
Sources
Primary sources behind the facts in this guide.
- WooCommerce docs: Cart and Checkout blocks (default for new stores since 8.3)
- WooCommerce docs: High-Performance Order Storage (HPOS)
- WordPress documentation: Manage plugins (upload a plugin zip)
- monerowp, the older Monero WooCommerce gateway: open issues (GitHub)
- RFC 2104: HMAC, keyed hashing for message authentication (IETF)