WooCommerce Crypto Payments Plugin Setup Guide
How to add crypto payments to a WooCommerce store, from choosing a gateway and installing the plugin to webhooks, a live test and fixing orders stuck on pending.

To accept crypto in WooCommerce, install a crypto payment gateway plugin, paste the API key and secret from your gateway account, copy the plugin's webhook URL into the gateway's store settings, and run one small live payment. The whole setup usually takes 15–30 minutes, and you do not need to run a node or hold customers' private keys.
The part most guides skip is what happens after the checkout button: the order sits in "Pending payment" until the gateway sends a signed webhook, and most problems (orders stuck on pending, "invalid signature" in logs) come from that one link. This guide covers the setup step by step and then the troubleshooting.
Screens differ between plugins and versions, so the steps below stay at the level that is true for any well-built gateway plugin. Check your provider's own instructions for exact field names.
How crypto checkout works in WooCommerce
Almost every gateway plugin follows the same flow:
The customer places an order and picks "Pay with crypto" at checkout.
The plugin creates an invoice through the gateway's API, priced in your store currency.
WooCommerce redirects the customer to the gateway's hosted payment page, where they choose a coin and network, scan a QR code and pay.
The gateway waits for the required blockchain confirmations.
The gateway sends a signed webhook to your site, and the plugin marks the order as paid.
WooCommerce takes over as usual: stock is reduced, emails go out, downloads unlock.
Because the invoice is priced in fiat and converted at payment time, you keep your product prices in your normal currency. The gateway also gives each invoice its own deposit address, so payments are matched to orders automatically.
Step 1: Choose a gateway
Before installing anything, decide where the money goes. The main differences between providers are the fee, the coins and networks supported, what documents they ask for, and how payouts work.
| Provider | Merchant fee (as of October 2026, per their pricing page) | Notes |
|---|---|---|
| NOWPayments | 1% starting fee with loyalty discounts; network fees extra | Hosted service |
| CoinGate | 1% processing | EU-regulated, business verification (KYB) |
| Plisio | 0.5% via API, 1.5% white label | Hosted service |
| Cryptomus | 2% for new users, down to 0.4% on request | KYC mandatory since around March 2025 |
| CoinPayments | 3% on incoming payments plus network fee | Hosted service |
| BTCPay Server | No processing fee | Free and self-hosted; you run and maintain the server |
| Zypher | 1% on the Start tier, falling to 0.25% with 30-day volume | No setup or monthly fees; no documents needed to open a store |
Fees change often, so open each pricing page before deciding. If you are moving from another provider, our article on Cryptomus alternatives compares the options in more depth.
Also check which networks your customers actually use. USDT on TRON, BSC or TON is cheap to send; USDT on Ethereum can be expensive at peaks. The breakdown of USDT TRC20 vs BEP20 vs ERC20 vs TON vs Solana helps you pick which ones to enable.
Step 2: Create your merchant store and API keys
In your gateway account, create a store (some providers call it a project or a merchant) for your WooCommerce site. You will get two values:
an API key, which identifies the store;
an API secret, which signs requests and verifies webhooks.
In Zypher, sign-up takes a minute with an email code, Telegram or a passkey, and opening a store and getting API keys needs no documents. One account can hold several stores, which is handy if you run more than one site.
While you are in the account, turn on 2FA and, if available, a withdrawal-address whitelist. Your store's balance is only as safe as the login that controls it.
Step 3: Install the plugin
Download the plugin from your gateway (for Zypher, from the WooCommerce plugin page) or install it from the WordPress plugin directory if your provider publishes there.
In WordPress, go to Plugins → Add New → Upload Plugin, choose the zip and activate it.
Make sure WooCommerce itself is up to date, and check the PHP and WordPress versions the plugin lists as required.
If you use a staging copy of your site, install there first. Just remember that webhooks must reach a publicly accessible URL.
Step 4: Paste the keys and set the webhook
Open the gateway's settings under WooCommerce → Settings → Payments. Every plugin differs in detail, but you will typically:
Enable the payment method and set the title customers see, for example "Pay with crypto (USDT, BTC, ETH and more)".
Paste the API key and API secret.
Copy the webhook URL the plugin shows. With Zypher the webhook URL comes from the plugin; paste it into the webhook field of your store in the merchant dashboard.
Save.
Optional but useful in the gateway's store settings:
Success and fail redirect URLs, so customers return to your thank-you page or cart.
Auto-convert, if you want every payment converted into one coin. In Zypher, each incoming payment (net of commission) can be swapped automatically into, for example, USDT, so your balance is not exposed to the paid coin's price after the swap.
IP allowlist, if your hosting has a fixed outgoing IP.
Step 5: Run a live test
Some gateways offer a sandbox and some do not; Zypher has no test mode. Either way, the test that proves the whole chain works, webhook included, is a real payment of a few dollars:
Create a cheap hidden product, or temporarily set a product's price to $1–5.
Check out as a customer, choose crypto, and pay from your own wallet on a low-fee network.
Watch the order. It should move from Pending payment to Processing (or Completed for virtual downloadable products) once the confirmations are in.
Confirm the payment appears in your gateway dashboard.
Confirmation counts vary by chain. In Zypher, for example, TON needs 1, BTC 2, BSC 5, Ethereum 6 and TRON 10, so funds are credited from a few seconds to a few minutes after the customer sends them.
What customers see on the payment page
A good hosted page saves you support tickets. Zypher's page has QR codes, a live countdown and clear states for underpaid, overpaid and expired invoices, and it is available in 11 languages. A few rules are worth putting in your checkout description or FAQ:
Time limit. With fiat-priced invoices, customers get 60 minutes to choose a coin and then 30 minutes to pay. A payment that arrives up to 30 minutes after expiry can still be matched.
Exact amount. 98% or more of the amount counts as paid. Below that the invoice is UNDERPAID and the customer can top up the remainder. Above 102% it is marked overpaid.
Exchange fees. Customers paying from an exchange should make sure the amount received matches the invoice, because some exchanges deduct their withdrawal fee from the sent amount.
Network. The customer must send on the network shown on the page. Our guide on TRON energy and USDT TRC20 fees explains why TRC20 costs vary for the payer.
Troubleshooting
Orders stay on "Pending payment"
This almost always means the webhook did not arrive or was rejected.
Check the webhook URL in the gateway's store settings. It must match the one the plugin shows, including
httpsand anywww.Firewalls and security plugins. Cloudflare rules, Wordfence, "bot fight" modes or a maintenance-mode plugin can block POST requests from the gateway. Allow the webhook path.
Caching. Full-page caching should not apply to the webhook endpoint.
Look in the logs. WooCommerce keeps logs under WooCommerce → Status → Logs; many plugins write there if you enable debug logging.
Zypher retries a failed delivery, up to 5 attempts, so once you fix the cause, new payments will flow. For orders already stuck, check the invoice status in the gateway dashboard before marking anything paid by hand.
"Invalid signature" errors
The plugin computes an HMAC of the webhook body with your API secret and compares it with the signature header. A mismatch means the secret in WooCommerce is not the current one (for example, you regenerated the key), or something between the gateway and WordPress altered the request body. Paste the secret again and test.
The customer paid but the order is on hold or failed
Check the invoice in your dashboard. An underpaid invoice needs the customer to top up the rest, and an expired one may need a new order. Decide in advance how you handle these, and say it in your FAQ.
Refunds
Crypto payments cannot be reversed by the customer, and refunds are not automatic. To refund, you send the coins back from your balance to an address the customer gives you, paying the network fee. Confirm the address and network in writing first.
Launch checklist
Keys pasted, payment method enabled, title and description set
Webhook URL copied into the gateway store settings
One live test order moved to Processing automatically
Security and caching plugins allow the webhook path
2FA and withdrawal whitelist on the gateway account
Checkout text explains the time limit, exact amount and network
Refund and underpayment policy written down
Crypto payments raise their own accounting and tax questions, which depend on your country. This guide is general information; check local rules or ask an accountant.
For the broader picture of selling online with crypto, see crypto payments for e-commerce, When you are ready, create a store, grab your keys and install the Zypher WooCommerce plugin.
FAQ
- Is there a free crypto payment plugin for WooCommerce?
Most gateway plugins are free to install; the provider charges a fee per payment instead. BTCPay Server has no processing fee but is self-hosted, so you pay for and maintain the server yourself. Compare per-payment fees and the networks you need rather than the plugin price.
- Do I need a crypto wallet to accept payments in WooCommerce?
Not necessarily. With a hosted gateway, payments land on your merchant balance, and you withdraw to your own wallet or exchange when you want. You do need a wallet or exchange account to receive withdrawals.
- Can I keep my prices in USD or another fiat currency?
Yes. Gateway plugins typically create the invoice in your store currency (check which fiat currencies your gateway supports) and the customer chooses which coin to pay with on the payment page. The conversion happens at payment time, so you do not need crypto prices in your catalogue.
- How long does a crypto payment take to confirm?
It depends on the network. Fast chains such as TON or TRON confirm in seconds to about a minute, while Bitcoin needs two blocks, which usually takes around 20 minutes. The order switches to processing automatically after the gateway's webhook arrives.
- Why is my WooCommerce crypto order stuck on pending?
In most cases the webhook from the gateway did not reach your site or was rejected. Check that the webhook URL in the gateway settings matches the plugin's, that no firewall or security plugin blocks it, and that the API secret is current. Then look at the WooCommerce logs for the exact error.
- Can I avoid price volatility when accepting crypto?
Yes. Encourage stablecoins such as USDT or USDC, and turn on auto-conversion if your gateway offers it. With auto-convert, each payment is swapped into one chosen coin as it arrives, so your balance stays in the asset you want.