Title: NoncePay – Crypto Payment Gateway for WooCommerce
Author: swartz13
Published: <strong>November 9, 2026</strong>
Last modified: November 9, 2026

---

Search plugins

![](https://ps.w.org/noncepay-for-woocommerce/assets/banner-772x250.png?rev=3792825)

![](https://ps.w.org/noncepay-for-woocommerce/assets/icon.svg?rev=3792825)

# NoncePay – Crypto Payment Gateway for WooCommerce

 By [swartz13](https://profiles.wordpress.org/swartz13/)

[Download](https://downloads.wordpress.org/plugin/noncepay-for-woocommerce.1.2.0.zip)

 * [Details](https://wordpress.org/plugins/noncepay-for-woocommerce/#description)
 * [Reviews](https://wordpress.org/plugins/noncepay-for-woocommerce/#reviews)
 *  [Installation](https://wordpress.org/plugins/noncepay-for-woocommerce/#installation)
 * [Development](https://wordpress.org/plugins/noncepay-for-woocommerce/#developers)

 [Support](https://wordpress.org/support/plugin/noncepay-for-woocommerce/)

## Description

NoncePay is a crypto payment gateway for WooCommerce. Accept Tether (USDT), USD 
Coin (USDC), Bitcoin, Ethereum, Solana and more than 80 other cryptocurrencies, 
and receive every payment directly in your own wallet.

Customers pick a coin at checkout, see the exact amount, a QR code and a unique 
payment address, and the order updates by itself once the payment is confirmed on
the blockchain.

NoncePay is non-custodial: every payment is forwarded automatically to the wallet
you entered in the settings. We never hold your funds. There is no sign-up, no API
key, no monthly fee and no withdrawal step.

#### How it works

 1. Enter a receiving wallet for each coin you want to accept.
 2. At checkout, the customer chooses a coin and gets a unique payment address with
    a QR code.
 3. Once the payment is confirmed on the blockchain, NoncePay forwards it to your wallet
    and the order is marked paid.

#### Supported cryptocurrencies

 * **Stablecoins:** Tether USDT on Tron (TRC-20), BNB Smart Chain (BEP-20), Ethereum(
   ERC-20) and Polygon; USD Coin USDC on Base, Polygon, Arbitrum, Solana, Ethereum
   and BNB Smart Chain; DAI, PYUSD and more.
 * **Major coins:** Bitcoin (BTC), Ethereum (ETH), Solana (SOL), Litecoin (LTC),
   Tron (TRX), BNB, Dogecoin (DOGE), Bitcoin Cash (BCH), Polygon (POL) and Avalanche(
   AVAX).
 * **Networks:** Bitcoin, Ethereum, BNB Smart Chain, Polygon, Base, Arbitrum, Optimism,
   Avalanche, Tron, Solana, Litecoin, Bitcoin Cash and Dogecoin.

The full list is at https://noncepay.app/accept/.

#### Features

 * Stablecoins and major coins: USDT (Tron, BNB Smart Chain, Ethereum), USDC (Base,
   Polygon, Arbitrum, Solana), BTC, ETH, LTC, TRX, SOL, BNB, DOGE, and every other
   coin NoncePay supports.
 * One wallet per coin, entered in the gateway settings. Only coins with a wallet
   are offered.
 * Works with the classic checkout and the Cart and Checkout blocks.
 * Compatible with High-Performance Order Storage (HPOS).
 * Payment page with amount and address copy buttons, QR code, network warning, 
   quote countdown and a live status (waiting, payment seen, confirmed).
 * Partial payments add up: a customer may pay in several transactions. Underpayments
   put the order on hold, overpayments are noted on the order.
 * Configurable underpayment tolerance, quote validity and paid status (processing
   or completed).
 * Every callback is verified with NoncePay’s RSA signature and processed once, 
   even when callbacks arrive at the same time.
 * Exact decimal math for crypto amounts, never floating point.

#### Fees

NoncePay deducts a 1.25% service fee (lower with volume) and the network cost from
each payment before forwarding it to your wallet. The customer pays the quoted amount;
you receive that amount minus the fee. See https://noncepay.app/docs/fees/.

### External services

This plugin relies on the NoncePay API (https://api.noncepay.app), operated by NoncePay,
to create payment addresses, convert prices, draw QR codes and notify your store
of payments. Without it the payment method cannot work.

What is sent, and when:

 * When a customer places an order with this payment method: the order total and
   your store currency (to convert the price into the chosen coin), your receiving
   wallet address for that coin, and a callback URL on your site that contains the
   order number and a random per-order secret. NoncePay uses the callback URL to
   notify your store of payments. The payment address and amount are then sent back
   to draw the QR code.
 * When the payment page refreshes an expired quote: the order total and store currency
   again.
 * When the settings page or checkout is loaded and the coin list is not cached (
   at most once an hour): a request for the list of supported coins. No store or
   customer data is sent.
 * When the first payment notification arrives, and again when a signature does 
   not match (at most once an hour, and at most once every 15 minutes after a failed
   attempt): a request for NoncePay’s public key, to verify notifications. No data
   is sent.
 * When a payment is confirmed after its quote expired: the order total and store
   currency, to check the payment still covers the order at the current rate.

No customer name, email, postal address or IP address is sent to NoncePay by this
plugin. NoncePay sees the requests of your web server, not of your customers’ browsers.

NoncePay terms of service: https://noncepay.app/terms/
 NoncePay privacy policy:
https://noncepay.app/privacy/

## Screenshots

[⌊Gateway settings: one receiving wallet per coin.⌉⌊Gateway settings: one receiving
wallet per coin.⌉[

Gateway settings: one receiving wallet per coin.

[⌊Coin choice in the Checkout block.⌉⌊Coin choice in the Checkout block.⌉[

Coin choice in the Checkout block.

[⌊Payment page with QR code, amount, address and live status.⌉⌊Payment page with
QR code, amount, address and live status.⌉[

Payment page with QR code, amount, address and live status.

[⌊Order notes after a confirmed payment.⌉⌊Order notes after a confirmed payment.⌉[

Order notes after a confirmed payment.

## Installation

 1. Install and activate WooCommerce 8.0 or later.
 2. Install this plugin from Plugins > Add New, or upload the `noncepay-for-woocommerce`
    folder to `/wp-content/plugins/`, then activate it.
 3. Go to WooCommerce > Settings > Payments > NoncePay.
 4. Enable the gateway and enter your receiving wallet address for each coin you want
    to accept. Use an address you control on that exact network.
 5. Save. The coins with a wallet are now offered at checkout.

Your store currency must be one NoncePay converts (USD, EUR, GBP, CAD, JPY, CHF,
AUD and about thirty others). The settings page warns you when it is not.

## FAQ

### How do I accept crypto payments in WooCommerce?

Install and activate this plugin, go to WooCommerce > Settings > Payments > NoncePay,
enter a receiving wallet for each coin and save. Customers can then pay with those
coins at checkout.

### How do I accept USDT on Tron (TRC-20) or BNB Smart Chain?

Enter your Tron address in the “USDT Tron TRC-20” row, or your 0x address in the“
USDT BNB Smart Chain BEP-20” row. One 0x address works for every EVM network (Ethereum,
BNB Smart Chain, Polygon, Base, Arbitrum, Optimism, Avalanche).

### Is NoncePay custodial? Who holds the funds?

NoncePay is non-custodial. Each payment address forwards what it receives to the
wallet you configured, minus the fee and the network cost. There is no balance to
withdraw.

### Do I need an account or an API key?

No. The callback URL created for each order identifies the payment, and funds go
to the wallets you configure.

### When is an order marked as paid?

When the confirmed payments add up to at least the quoted amount minus the underpayment
tolerance (0.5% by default). The order goes on hold as soon as a payment is seen
on the blockchain, and to processing (or completed, if you choose) once enough is
confirmed and forwarded to your wallet.

### What happens if the customer pays too little, too much or too late?

Too little: the order stays on hold with a note giving the missing amount; the customer
can send the rest to the same address. When the rest is below the coin’s minimum
payment, the payment page asks for the minimum instead, because smaller payments
are not processed. Too much: the order is paid and the excess is noted on the order.
Too late: payment addresses never expire, so a late payment is still credited, but
the order is marked paid only if the coins received still cover the order total 
at the rate of the moment; otherwise it is held for your review. A payment arriving
on an order that was already cancelled always puts it on hold for review. Customers
can also refresh an expired quote from the payment page before paying.

### I changed a wallet: where do pending orders pay?

Orders created before the change keep their payment address, which forwards to the
old wallet. When a customer pays such an order again, a new address forwarding to
the new wallet is created, and payments still arriving on the old address are noted
on the order for review.

### Can a customer pay in several transactions?

Yes. Each transaction is credited once, and the amounts add up.

### My site is behind a reverse proxy or CDN and callbacks are rejected

Callbacks are signed over the exact URL NoncePay called. The plugin rebuilds it 
from the scheme, host and port of the callback URL saved on the order and the request
path received. If your proxy changes the path, or you need another base, set it 
with a filter:

    ```
    add_filter( 'noncepay_callback_base_url', function () { return 'https://shop.example.com'; } );
    ```

Callbacks are delivered to `/wp-json/noncepay/v1/callback`. Make sure security plugins
or firewalls do not block that REST route for anonymous requests.

### Which databases are supported?

Concurrent payment notifications for the same order are serialized with a MySQL/
MariaDB named lock (`GET_LOCK`). It works on a single primary database server, which
is what almost every WordPress host uses. Setups that send queries to several servers(
read/write splitting across replicas, Galera multi-primary clusters, Vitess or PlanetScale)
do not share named locks between servers; on those, make sure WordPress writes and
these locks go to a single primary.

### Can I pin NoncePay’s public key?

Yes. Define `NONCEPAY_PUBLIC_KEY_PEM` in `wp-config.php` with the PEM key from https://
api.noncepay.app/pubkey/. By default the key is fetched from that URL and cached.

### Where are the logs?

WooCommerce > Status > Logs, source `noncepay-for-woocommerce`. Errors are always
logged; enable “Debug log” in the settings for API calls and callbacks. Per-order
secrets are never logged.

### Can I refund from WooCommerce?

No. Payments are already in your wallet: refund the customer from your wallet, then
mark the order refunded.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“NoncePay – Crypto Payment Gateway for WooCommerce” is open source software. The
following people have contributed to this plugin.

Contributors

 *   [ swartz13 ](https://profiles.wordpress.org/swartz13/)

[Translate “NoncePay – Crypto Payment Gateway for WooCommerce” into your language.](https://translate.wordpress.org/projects/wp-plugins/noncepay-for-woocommerce)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/noncepay-for-woocommerce/),
check out the [SVN repository](https://plugins.svn.wordpress.org/noncepay-for-woocommerce/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/noncepay-for-woocommerce/)
by [RSS](https://plugins.trac.wordpress.org/log/noncepay-for-woocommerce/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.2.0

 * Translations: Chinese (China), Dutch, French, German, Indonesian, Italian, Japanese,
   Polish, Portuguese (Brazil), Spanish, Turkish and Vietnamese, with their regional
   variants.
 * Clearer plugin description and supported coin list.

#### 1.1.0

 * TrezorPay is now NoncePay: new plugin name and slug (`noncepay-for-woocommerce`),
   API at https://api.noncepay.app, callback route `/wp-json/noncepay/v1/callback`,
   filters `noncepay_callback_base_url` and `noncepay_api_base_url`, constant `NONCEPAY_PUBLIC_KEY_PEM`.

#### 1.0.0

 * First release.

## Meta

 *  Version **1.2.0**
 *  Last updated **7 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.4 or higher **
 *  Tested up to **7.1.4**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [bitcoin](https://wordpress.org/plugins/tags/bitcoin/)[crypto](https://wordpress.org/plugins/tags/crypto/)
   [cryptocurrency](https://wordpress.org/plugins/tags/cryptocurrency/)[payment gateway](https://wordpress.org/plugins/tags/payment-gateway/)
   [USDT](https://wordpress.org/plugins/tags/usdt/)
 *  [Advanced View](https://wordpress.org/plugins/noncepay-for-woocommerce/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/noncepay-for-woocommerce/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/noncepay-for-woocommerce/reviews/)

## Contributors

 *   [ swartz13 ](https://profiles.wordpress.org/swartz13/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/noncepay-for-woocommerce/)