Accept crypto payments with WooCommerce
Add a non-custodial crypto payment method to your WooCommerce store with the NoncePay plugin. USDT, USDC, BTC, ETH, SOL and more, forwarded to your own wallets.
The NoncePay plugin for WooCommerce adds a crypto payment method to your store. Customers pick a coin at checkout, see the exact amount, a QR code and a payment address, and the order updates by itself once the payment is confirmed. Every payment is forwarded to your own wallet, minus 1.25%. There is no account, no API key and no withdrawal step.
Install
- In WordPress, go to Plugins > Add New, search for NoncePay, then install and activate NoncePay – Crypto Payment Gateway for WooCommerce.
- Go to WooCommerce > Settings > Payments > NoncePay, enable it and enter a receiving wallet for each coin you want to accept. Only coins with a wallet are offered at checkout.
Requires WordPress 6.4+, WooCommerce 8.0+ and PHP 7.4+. The plugin is translated into 12 languages. Without access to
the plugin directory, download noncepay-for-woocommerce.zip from the
latest release and upload it in
Plugins > Add New > Upload Plugin. The source is on GitHub.
What it does
- Coins: USDT on Tron, BNB Smart Chain and Ethereum; USDC on Base, Polygon, Arbitrum and Solana; BTC, ETH, LTC,
TRX, SOL, BNB, DOGE, and every other coin from
/info/. - Checkout: works with the classic checkout and the Cart and Checkout blocks, and with High-Performance Order Storage.
- Payment page: amount and address with copy buttons, QR code, a warning to send on the right network, a quote countdown, and a live status that moves from waiting to payment seen to confirmed.
- Order status: the order goes on hold as soon as the payment is seen on chain, and to processing (or completed) once it is forwarded to your wallet. Each step adds an order note with the transaction ids.
- Edge cases:
- Partial payments add up.
- An underpayment beyond your tolerance keeps the order on hold.
- A payment made after the quote expired is checked against the current rate before the order is marked paid.
- A payment to a cancelled order goes on hold for review.
- Security: every callback is verified with the RSA signature and a per-order secret, and processed once even when callbacks arrive together. Amounts use exact decimal math.
Settings
| Setting | Default | What it does |
|---|---|---|
| Wallets | empty | Your receiving address per coin; a coin is offered when set |
| Underpayment tolerance | 0.5% | How much less than the quote still marks the order paid |
| Quote validity | 30 minutes | How long the converted amount is honoured |
| Paid status | processing | Status given to a paid order |
| Debug log | off | Writes to WooCommerce > Status > Logs |
Your store currency must be one NoncePay converts (USD, EUR, GBP and about thirty others); the settings page warns you when it is not.
Behind a proxy or CDN
The plugin checks each callback's signature against the URL it registered for the order, so it keeps working with a
CDN in front of WordPress. A proxy that rewrites the host or path before WordPress sees it needs the
noncepay_callback_base_url filter: return the public scheme and host of your site.
Not on WooCommerce? The PHP guide and the runnable examples show the same flow in plain PHP and Laravel.
Build with AI
Integrate NoncePay with an AI coding agent. One prompt.md covers every endpoint, the callback signature, errors, idempotency and a ready-made test suite.
Accept crypto payments with Node.js
Create USDT, USDC or ETH deposit addresses and verify NoncePay callbacks in a Node.js (Express) app.