How to Accept Crypto Payments in WooCommerce
You can accept crypto payments in WooCommerce with a free plugin: customers pay in Bitcoin, USDT or USDC, and the money lands in your own wallet. This guide sets it up step by step, the way we did on a real WooCommerce store on November 7, 2026, and then follows a real payment through to the end.
We use OpenReceive, the safe way to receive bitcoin and stablecoin payments for websites and apps. It's a free, open-source plugin from the WordPress.org directory, it runs inside your own store, and it takes no cut. No approval necessary: there's no payment company to apply to.
What You Need
- A WooCommerce store: WordPress 6.6 or newer and WooCommerce 9 or newer. We tested on WordPress 7.1.4 and WooCommerce 11.2.2.
- PHP 8.2 or newer with the GMP and sodium extensions, and MySQL 8 or MariaDB 10.5+. Most hosts have everything except GMP: see If the Plugin Says "OpenReceive Is Not Running".
- A wallet that gives you a receive-only NWC code. We used Rizful, which works in a browser (how to get the code). Alby Hub works too, and so does any wallet on OpenReceive's list.
- Optional: a Lightning Swap Connect code, if customers should be able to pay in stablecoins. We used one from lightning-swap.com.
Step 1: Install the OpenReceive Plugin
- In your WordPress dashboard, go to Plugins, then Add Plugin.
- Search for OpenReceive. The result is "OpenReceive – Bitcoin Lightning Payments for WooCommerce & Easy Digital Downloads", by openreceive.
- Click Install Now, then Activate.
We installed version 0.4.31, the current release on WordPress.org that
day. With WP-CLI, wp plugin install openreceive --activate does the same two steps.
Step 2: Paste Your Wallet Code
- Under Payments in the sidebar (or WooCommerce → Settings → Payments), click Manage next to OpenReceive.
- In your wallet, copy the receive-only code. In Rizful: Menu → NWC Codes → Copy receive-only code.
- Paste it into NWC code.
This code can take payments into your wallet, but it can never spend them. The plugin refuses to save a code that can send payments, unless you explicitly override that check. The field shows dots, and never displays a saved code.
Step 3: Add Stablecoins (Optional)
Paste your Lightning Swap Connect code into the field under it. That's what lets customers pay in USDT, USDC, ETH or SOL. Skip it and checkout still takes Bitcoin. OpenReceive's swap provider page lists the providers.
Step 4: Enable and Save
Tick Enable OpenReceive, then click Save changes. Saving checks your wallet first, so it takes a few seconds. When it says "Your settings have been saved", you're done: checkout now offers Bitcoin & stablecoins (OpenReceive) (or Bitcoin Lightning (OpenReceive) without a swap code).
Or Let a Coding Agent Do It
If your store runs on a server a coding agent can reach, OpenReceive's WooCommerce page has agent directions under "With a coding agent": copy them into Claude Code, Codex or Cursor, and the agent installs the plugin, asks you for the two codes, and saves them. We tested it on a second, fresh store: it ended with the plugin active, both codes saved and the gateway enabled. On managed hosting with no shell, use the four steps above.
What a Real Payment Looks Like
We placed a real $3.00 order (one Halo) on our test store on November 7, 2026, and paid it in Bitcoin over Lightning:
- At checkout, the customer picks Bitcoin & stablecoins (OpenReceive) and places the order.
- The next page offers Bitcoin, USDT, USDC, SOL and ETH. Picking Bitcoin shows a Lightning invoice for 3,960 sats ($3.00), which any Lightning wallet can pay.
- We paid it from Alby Hub. The store's page changed to "Payment received" right away.
- Our Rizful wallet went from 45,975 to 49,935 sats.
- In WooCommerce, the order moved to Processing. The plugin marks orders paid the normal WooCommerce way, so stock and order emails work as usual.
Taking USDT and USDC
On a $21.00 order, picking USDT on Tron gave a real quote: 21.63 USDT to a deposit address. That included 0.63 USDT (3.0%) of swap and network fees, charged by the Lightning Swap Connect provider, not by OpenReceive. We stopped there and didn't pay it. Quotes change, so check yours at checkout. The same page also offers USDT on Solana and Ethereum, USDC on Solana and Ethereum, SOL and ETH.
Whatever a customer pays with, you receive Bitcoin. OpenReceive doesn't hold USDT or USDC for you, so if you want to keep stablecoins, this isn't the right tool.
If the Plugin Says "OpenReceive Is Not Running"
The plugin activates on any WordPress site, but it only runs with 64-bit PHP, the GMP and sodium extensions, and a MySQL or MariaDB database. If something is missing, the Plugins screen says "OpenReceive is not running" and names it. GMP is the usual one: many hosts leave it off. OpenReceive's hosting guide explains how to check your site and what to ask your host for.
Watch It on the OpenReceive Channel
OpenReceive's own short video shows the same install: Bitcoin & Stablecoin Payments for WooCommerce: Install the Free WordPress Plugin.
FAQ
Does OpenReceive charge a fee?
No. Its FAQ on WordPress.org says "OpenReceive is free software and takes no cut." Your wallet's Lightning fees still apply, and a stablecoin payment includes the swap provider's fee, which the customer sees in the quote.
Can I keep the USDT my customers pay?
No. Every payment arrives in your wallet as Bitcoin over Lightning.
Do I need my own Lightning node?
No. A browser wallet like Rizful is enough to start. If your store gets busy, Alby Hub gives you your own Lightning node, with Megalith as its channel partner.
How do refunds work?
The wallet code is receive-only, so the plugin can't send refunds: send them from your own wallet.
Does it work with Easy Digital Downloads?
Yes, the same plugin adds a payment gateway to Easy Digital Downloads. OpenReceive also works with Laravel, Next.js and more than twenty other platforms.