How to Accept Bitcoin Payments on WooCommerce
WooCommerce has no native crypto support, and most Bitcoin plugins route the payment through a custodial processor that holds your coins until payout. The WordPress Plugin does the opposite: it creates a hosted invoice for each order and derives a fresh receiving address from your own xPub, so the customer pays your wallet directly and WooCommerce just listens for the webhook.
- Integration method
- Plugin
- Time needed
- About 15 minutes
- Skill level
- Beginner
Before you start
- •A free Jamesinvoicing account.
- •Your Bitcoin extended public key (xPub / zPub) from a wallet you control — Sparrow, Electrum, BlueWallet, Trezor or Ledger all export one.
- •Admin access to your store or billing panel.
- •WordPress 6.0+ with WooCommerce 8.0+ installed.
An extended public key only lets software watch addresses and derive new ones — it can never move funds. Never paste a private key or seed phrase anywhere, including here.
Step-by-step setup
- 1
Create your API key
In Jamesinvoicing open Dashboard → API keys and generate a key. Copy it once — it is only shown at creation time.
- 2
Add your xPub
Go to Profile → Bitcoin settings and paste your extended public key. Jamesinvoicing verifies it derives valid addresses before saving, and never asks for a private key or seed phrase.
- 3
Install the plugin
Download the WordPress Plugin from your dashboard, then in WordPress go to Plugins → Add New → Upload Plugin, choose the zip and activate it.
- 4
Connect the plugin
Open WooCommerce → Settings → Payments → Jamesinvoicing, paste the API key, and save. The plugin pings the API and shows a green connected state when the key is valid.
- 5
Review order status handling
Detected, confirming and underpaid payments remain On hold. After server verification, the plugin calls WooCommerce's normal payment completion method instead of forcing every order to Completed.
- 6
Place a test order
Run a small real order end to end. Confirm detection holds the order and a confirmed payment follows the normal WooCommerce fulfilment lifecycle.
What you get
- •Customers pay in BTC, ETH or USDT and you keep custody of every payment.
- •Orders update automatically from webhooks — no manual reconciliation.
- •Prices stay in your store currency; the crypto rate is locked at checkout.
- •No monthly plugin fee and no rolling reserve on your revenue.
Troubleshooting
Orders stay in Pending after the customer pays
Your site is not receiving webhooks. Check that the store URL is publicly reachable over HTTPS and that a security plugin or firewall is not blocking POST requests to the WooCommerce API endpoint.
The gateway does not appear at checkout
WooCommerce hides gateways that fail their availability check. Confirm the API key is saved and that your account has a verified xPub — without one there is no address to derive.
Frequently asked questions
Does the WooCommerce Bitcoin plugin hold my funds?
No. Each order gets a unique address derived from your own xPub, so the payment goes from your customer straight to your wallet. Jamesinvoicing never has a balance to withhold.
Can I accept USDT on WooCommerce too?
Yes. Enable the coins you want in your Jamesinvoicing settings and the hosted invoice lets the customer choose at checkout.
What happens if a customer underpays?
The invoice records the shortfall and notifies you with both the USD and BTC amounts. You decide whether to release the order or request the difference.
Ready to take your first crypto payment?
Create an account, add your xPub, and send a test invoice — most merchants are live the same day.
Other platform guides
See all platform integrations, browse industry guides, or compare us against other gateways.