{"id":403364,"date":"2026-11-09T15:52:31","date_gmt":"2026-11-09T15:52:31","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/trezorpay-for-woocommerce\/"},"modified":"2026-11-09T16:56:20","modified_gmt":"2026-11-09T16:56:20","slug":"noncepay-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/noncepay-for-woocommerce\/","author":23604042,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.2.0","stable_tag":"1.2.0","tested":"7.1.4","requires":"6.4","requires_php":"7.4","requires_plugins":null,"header_name":"NoncePay \u2013 Crypto Payment Gateway for WooCommerce","header_author":"NoncePay","header_description":"Accept crypto payments (USDT, USDC, BTC, ETH, SOL and more) sent straight to your own wallets. Non-custodial, no account, no API key.","assets_banners_color":"0d0d0d","last_updated":"2026-11-09 16:56:20","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/Nonce-pay\/noncepay-woocommerce","header_author_uri":"https:\/\/noncepay.app\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":32,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1.0":{"tag":"1.1.0","author":"swartz13","date":"2026-11-09 15:52:05","revision":3792825},"1.2.0":{"tag":"1.2.0","author":"swartz13","date":"2026-11-09 16:56:20","revision":3792900}},"upgrade_notice":{"1.2.0":"<p>Adds translations in 12 languages.<\/p>","1.1.0":"<p>TrezorPay is now NoncePay. This is a new plugin slug: deactivate and delete TrezorPay for WooCommerce, install this one and enter your wallets again. Finish or cancel open crypto orders first.<\/p>","1.0.0":"<p>First release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3792825,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3792825,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3792825,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3792825,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3792825,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3792900,"resolution":false,"location":"assets","locale":"","contents":"{\"$schema\":\"https:\\\/\\\/playground.wordpress.net\\\/blueprint-schema.json\",\"meta\":{\"title\":\"NoncePay \\u2013 Crypto Payment Gateway for WooCommerce\",\"description\":\"WooCommerce with NoncePay installed, opened on the payment method settings.\",\"author\":\"swartz13\",\"categories\":[\"WooCommerce\",\"Payments\"]},\"landingPage\":\"\\\/wp-admin\\\/admin.php?page=wc-settings&tab=checkout&section=noncepay\",\"preferredVersions\":{\"php\":\"8.2\",\"wp\":\"latest\"},\"features\":{\"networking\":true},\"login\":true,\"steps\":[{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"woocommerce\"},\"options\":{\"activate\":true}},{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"noncepay-for-woocommerce\"},\"options\":{\"activate\":true}},{\"step\":\"setSiteOptions\",\"options\":{\"blogname\":\"NoncePay demo store\",\"woocommerce_currency\":\"USD\",\"woocommerce_coming_soon\":\"no\",\"woocommerce_task_list_hidden\":\"yes\",\"woocommerce_onboarding_profile\":{\"skipped\":true}}}]}"}},"all_blocks":[],"tagged_versions":["1.1.0","1.2.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3792825,"resolution":"1","location":"assets","locale":"","width":2210,"height":3290},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3792825,"resolution":"2","location":"assets","locale":"","width":2560,"height":2298},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3792825,"resolution":"3","location":"assets","locale":"","width":1496,"height":934},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3792825,"resolution":"4","location":"assets","locale":"","width":2498,"height":2680}},"screenshots":{"1":"Gateway settings: one receiving wallet per coin.","2":"Coin choice in the Checkout block.","3":"Payment page with QR code, amount, address and live status.","4":"Order notes after a confirmed payment."}},"plugin_section":[],"plugin_tags":[1886,21057,12611,6593,204245],"plugin_category":[45],"plugin_contributors":[291676],"plugin_business_model":[],"class_list":["post-403364","plugin","type-plugin","status-publish","hentry","plugin_tags-bitcoin","plugin_tags-crypto","plugin_tags-cryptocurrency","plugin_tags-payment-gateway","plugin_tags-usdt","plugin_category-ecommerce","plugin_contributors-swartz13","plugin_committers-swartz13"],"banners":{"banner":"https:\/\/ps.w.org\/noncepay-for-woocommerce\/assets\/banner-772x250.png?rev=3792825","banner_2x":"https:\/\/ps.w.org\/noncepay-for-woocommerce\/assets\/banner-1544x500.png?rev=3792825","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/noncepay-for-woocommerce\/assets\/icon.svg?rev=3792825","icon":"https:\/\/ps.w.org\/noncepay-for-woocommerce\/assets\/icon.svg?rev=3792825","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/noncepay-for-woocommerce\/assets\/screenshot-1.png?rev=3792825","caption":"Gateway settings: one receiving wallet per coin."},{"src":"https:\/\/ps.w.org\/noncepay-for-woocommerce\/assets\/screenshot-2.png?rev=3792825","caption":"Coin choice in the Checkout block."},{"src":"https:\/\/ps.w.org\/noncepay-for-woocommerce\/assets\/screenshot-3.png?rev=3792825","caption":"Payment page with QR code, amount, address and live status."},{"src":"https:\/\/ps.w.org\/noncepay-for-woocommerce\/assets\/screenshot-4.png?rev=3792825","caption":"Order notes after a confirmed payment."}],"raw_content":"<!--section=description-->\n<p>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.<\/p>\n\n<p>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.<\/p>\n\n<p>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.<\/p>\n\n<h4>How it works<\/h4>\n\n<ol>\n<li>Enter a receiving wallet for each coin you want to accept.<\/li>\n<li>At checkout, the customer chooses a coin and gets a unique payment address with a QR code.<\/li>\n<li>Once the payment is confirmed on the blockchain, NoncePay forwards it to your wallet and the order is marked paid.<\/li>\n<\/ol>\n\n<h4>Supported cryptocurrencies<\/h4>\n\n<ul>\n<li><strong>Stablecoins:<\/strong> 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.<\/li>\n<li><strong>Major coins:<\/strong> Bitcoin (BTC), Ethereum (ETH), Solana (SOL), Litecoin (LTC), Tron (TRX), BNB, Dogecoin (DOGE), Bitcoin Cash (BCH), Polygon (POL) and Avalanche (AVAX).<\/li>\n<li><strong>Networks:<\/strong> Bitcoin, Ethereum, BNB Smart Chain, Polygon, Base, Arbitrum, Optimism, Avalanche, Tron, Solana, Litecoin, Bitcoin Cash and Dogecoin.<\/li>\n<\/ul>\n\n<p>The full list is at https:\/\/noncepay.app\/accept\/.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>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.<\/li>\n<li>One wallet per coin, entered in the gateway settings. Only coins with a wallet are offered.<\/li>\n<li>Works with the classic checkout and the Cart and Checkout blocks.<\/li>\n<li>Compatible with High-Performance Order Storage (HPOS).<\/li>\n<li>Payment page with amount and address copy buttons, QR code, network warning, quote countdown and a live status (waiting, payment seen, confirmed).<\/li>\n<li>Partial payments add up: a customer may pay in several transactions. Underpayments put the order on hold, overpayments are noted on the order.<\/li>\n<li>Configurable underpayment tolerance, quote validity and paid status (processing or completed).<\/li>\n<li>Every callback is verified with NoncePay's RSA signature and processed once, even when callbacks arrive at the same time.<\/li>\n<li>Exact decimal math for crypto amounts, never floating point.<\/li>\n<\/ul>\n\n<h4>Fees<\/h4>\n\n<p>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\/.<\/p>\n\n<h3>External services<\/h3>\n\n<p>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.<\/p>\n\n<p>What is sent, and when:<\/p>\n\n<ul>\n<li>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.<\/li>\n<li>When the payment page refreshes an expired quote: the order total and store currency again.<\/li>\n<li>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.<\/li>\n<li>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.<\/li>\n<li>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.<\/li>\n<\/ul>\n\n<p>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.<\/p>\n\n<p>NoncePay terms of service: https:\/\/noncepay.app\/terms\/\nNoncePay privacy policy: https:\/\/noncepay.app\/privacy\/<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate WooCommerce 8.0 or later.<\/li>\n<li>Install this plugin from Plugins &gt; Add New, or upload the <code>noncepay-for-woocommerce<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, then activate it.<\/li>\n<li>Go to WooCommerce &gt; Settings &gt; Payments &gt; NoncePay.<\/li>\n<li>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.<\/li>\n<li>Save. The coins with a wallet are now offered at checkout.<\/li>\n<\/ol>\n\n<p>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.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20i%20accept%20crypto%20payments%20in%20woocommerce%3F\"><h3>How do I accept crypto payments in WooCommerce?<\/h3><\/dt>\n<dd><p>Install and activate this plugin, go to WooCommerce &gt; Settings &gt; Payments &gt; NoncePay, enter a receiving wallet for each coin and save. Customers can then pay with those coins at checkout.<\/p><\/dd>\n<dt id=\"how%20do%20i%20accept%20usdt%20on%20tron%20%28trc-20%29%20or%20bnb%20smart%20chain%3F\"><h3>How do I accept USDT on Tron (TRC-20) or BNB Smart Chain?<\/h3><\/dt>\n<dd><p>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).<\/p><\/dd>\n<dt id=\"is%20noncepay%20custodial%3F%20who%20holds%20the%20funds%3F\"><h3>Is NoncePay custodial? Who holds the funds?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"do%20i%20need%20an%20account%20or%20an%20api%20key%3F\"><h3>Do I need an account or an API key?<\/h3><\/dt>\n<dd><p>No. The callback URL created for each order identifies the payment, and funds go to the wallets you configure.<\/p><\/dd>\n<dt id=\"when%20is%20an%20order%20marked%20as%20paid%3F\"><h3>When is an order marked as paid?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20the%20customer%20pays%20too%20little%2C%20too%20much%20or%20too%20late%3F\"><h3>What happens if the customer pays too little, too much or too late?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"i%20changed%20a%20wallet%3A%20where%20do%20pending%20orders%20pay%3F\"><h3>I changed a wallet: where do pending orders pay?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"can%20a%20customer%20pay%20in%20several%20transactions%3F\"><h3>Can a customer pay in several transactions?<\/h3><\/dt>\n<dd><p>Yes. Each transaction is credited once, and the amounts add up.<\/p><\/dd>\n<dt id=\"my%20site%20is%20behind%20a%20reverse%20proxy%20or%20cdn%20and%20callbacks%20are%20rejected\"><h3>My site is behind a reverse proxy or CDN and callbacks are rejected<\/h3><\/dt>\n<dd><p>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:<\/p>\n\n<pre><code>add_filter( 'noncepay_callback_base_url', function () { return 'https:\/\/shop.example.com'; } );\n<\/code><\/pre>\n\n<p>Callbacks are delivered to <code>\/wp-json\/noncepay\/v1\/callback<\/code>. Make sure security plugins or firewalls do not block that REST route for anonymous requests.<\/p><\/dd>\n<dt id=\"which%20databases%20are%20supported%3F\"><h3>Which databases are supported?<\/h3><\/dt>\n<dd><p>Concurrent payment notifications for the same order are serialized with a MySQL\/MariaDB named lock (<code>GET_LOCK<\/code>). 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.<\/p><\/dd>\n<dt id=\"can%20i%20pin%20noncepay%27s%20public%20key%3F\"><h3>Can I pin NoncePay's public key?<\/h3><\/dt>\n<dd><p>Yes. Define <code>NONCEPAY_PUBLIC_KEY_PEM<\/code> in <code>wp-config.php<\/code> with the PEM key from https:\/\/api.noncepay.app\/pubkey\/. By default the key is fetched from that URL and cached.<\/p><\/dd>\n<dt id=\"where%20are%20the%20logs%3F\"><h3>Where are the logs?<\/h3><\/dt>\n<dd><p>WooCommerce &gt; Status &gt; Logs, source <code>noncepay-for-woocommerce<\/code>. Errors are always logged; enable \"Debug log\" in the settings for API calls and callbacks. Per-order secrets are never logged.<\/p><\/dd>\n<dt id=\"can%20i%20refund%20from%20woocommerce%3F\"><h3>Can I refund from WooCommerce?<\/h3><\/dt>\n<dd><p>No. Payments are already in your wallet: refund the customer from your wallet, then mark the order refunded.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Translations: Chinese (China), Dutch, French, German, Indonesian, Italian, Japanese, Polish, Portuguese (Brazil), Spanish, Turkish and Vietnamese, with their regional variants.<\/li>\n<li>Clearer plugin description and supported coin list.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>TrezorPay is now NoncePay: new plugin name and slug (<code>noncepay-for-woocommerce<\/code>), API at https:\/\/api.noncepay.app, callback route <code>\/wp-json\/noncepay\/v1\/callback<\/code>, filters <code>noncepay_callback_base_url<\/code> and <code>noncepay_api_base_url<\/code>, constant <code>NONCEPAY_PUBLIC_KEY_PEM<\/code>.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release.<\/li>\n<\/ul>","raw_excerpt":"Crypto payment gateway for WooCommerce. Accept USDT, USDC, Bitcoin, Ethereum and Solana straight to your own wallet. Non-custodial, no account.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/403364","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=403364"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/swartz13"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=403364"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=403364"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=403364"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=403364"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=403364"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=403364"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}