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

  1. In WordPress, go to Plugins > Add New, search for NoncePay, then install and activate NoncePay – Crypto Payment Gateway for WooCommerce.
  2. 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

SettingDefaultWhat it does
WalletsemptyYour receiving address per coin; a coin is offered when set
Underpayment tolerance0.5%How much less than the quote still marks the order paid
Quote validity30 minutesHow long the converted amount is honoured
Paid statusprocessingStatus given to a paid order
Debug logoffWrites 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.

On this page