Plugins
Accept crypto on OpenCart, WooCommerce, WHMCS, PrestaShop, and more. NoHoldPay plugins redirect to the hosted checkout and confirm orders with signed webhooks, with no custody.
Add crypto payments to an existing store without writing code. Every NoHoldPay plugin works the same way the API does:
- The shopper is redirected to the NoHoldPay hosted checkout to pay your wallet directly.
- NoHoldPay watches the chain, matches the payment to the order, and sends a signed webhook.
- The plugin verifies the webhook signature and the amount, then marks the order paid.
- Funds are already in your wallet. There is no payout step and no custody.
Every plugin supports live and test mode, so you can run a full checkout on a testnet before you go live.
Platforms
OpenCart
OpenCart 3 and 4
Available on the OpenCart marketplace. Redirect checkout with signed webhook confirmation.
WooCommerce
WordPress
Classic and block checkout, with a payment gateway per coin group. Available on the WordPress plugin directory.
WHMCS
Self-hosted, 8.13 and 9.0
Take crypto for invoices, renewals, and upgrades on self-hosted WHMCS. Redirect checkout with re-verified signed webhooks.
PrestaShop
Self-hosted, 8.0 to 9.1
Redirect checkout with a payment option per coin group, and signed webhooks that credit the order.
Shopify
Hosted SaaS
Accept crypto alongside your existing Shopify checkout.
Magento 2
Adobe Commerce
Native payment method with signed webhook order updates.
BigCommerce
Hosted SaaS
Redirect checkout with signed webhook confirmation.
Before you install
Create an API key in your dashboard first. See API keys. You will add a webhook endpoint to that key during setup, using the callback URL the plugin shows you. The plugin needs the key to create payments and the shared secret to verify webhooks.
OpenCart
Works with OpenCart 3 and OpenCart 4.
Install the extension
Download the extension from the marketplace and upload it through the OpenCart Extension Installer. Then enable it under Extensions and set its status to enabled. On OpenCart 3, also go to Extensions, then Modifications, and click Refresh after installing (and again after any theme change or upgrade).
Connect your account
Paste your NoHoldPay API key and webhook secret into the extension settings. A pk_test_ key runs against testnets and a pk_live_ key against mainnet, so the key prefix decides the mode. No real funds move while you validate the flow with a test key.
Set the webhook
Point a NoHoldPay webhook endpoint at the callback URL shown in the extension settings. The plugin verifies the X-Webhook-Signature on every delivery and independently re-checks the paid amount before it marks an order complete.
Test a checkout
Place a test order, pay the hosted checkout on a testnet, and confirm the order flips to paid when the confirmed webhook arrives. Switch to a pk_live_ key when you are ready to accept real payments.
WooCommerce
Works with WooCommerce on WordPress, on both the classic and the block-based checkout. It registers a payment gateway per coin group, so shoppers can pick the asset they want to pay with.
Install the plugin
In WordPress go to Plugins, Add New, search for NoHoldPay, then install and activate. You can also download the zip from WordPress.org or GitHub and use Plugins, Add New, Upload Plugin. WooCommerce must already be installed and active.
Connect your account
Go to WooCommerce, Settings, Payments, enable NoHoldPay, then click Manage. Paste your NoHoldPay API key. A pk_test_ key runs against testnets and a pk_live_ key against mainnet, so the key prefix decides the mode.
Set the webhook
Copy the webhook URL shown next to the signing-secret field and add it as the webhook endpoint on your API key in the dashboard. Paste the generated signing secret back into the field and save. The plugin verifies the X-Webhook-Signature on every delivery and independently re-checks the paid amount before it marks an order paid.
Test a checkout
Place a test order, pay the hosted checkout on a testnet, and confirm the order flips to paid when the confirmed webhook arrives. Switch to a pk_live_ key when you are ready to accept real payments.
Optionally build coin groups on the same settings screen. Each enabled group becomes its own payment method at checkout, with its own logo and default coin.
Requires WordPress 5.6 or newer, WooCommerce 5.0 or newer, and PHP 7.4 or newer. Your store must be reachable over HTTPS so NoHoldPay can deliver webhooks.
WHMCS
Take crypto for invoices, renewals, and upgrades on self-hosted WHMCS 8.13 (LTS) and 9.0. The client opens an invoice, clicks Pay with crypto, and is redirected to the hosted checkout. A re-verified signed webhook marks the invoice paid, and the funds are already in your wallet.
Install the module
WHMCS 9 has no install-from-zip, so download the release zip and extract it into your WHMCS root, keeping the modules/gateways structure. Upload every file before activating, then go to Configuration, Apps and Integrations, Payment Gateways, and activate NoHoldPay. Self-hosted WHMCS only, on PHP 7.4 or newer. WHMCS Cloud cannot install third-party modules.
Connect your account
Paste your NoHoldPay API key into the gateway settings. A pk_test_ key runs against testnets and a pk_live_ key against mainnet, so the key prefix decides the mode.
Set the webhook
Copy the callback URL shown on the settings screen and add it as a webhook endpoint on your API key in the dashboard. Paste the generated signing secret back into the module. Until the secret is set the pay button is not offered, because a confirmed payment could not be credited without it. The module verifies the X-Webhook-Signature on every delivery and independently re-checks the paid amount before it marks an invoice paid.
Test a checkout
Raise a test invoice, pay the hosted checkout on a testnet, and confirm the invoice flips to Paid when the confirmed webhook arrives. Switch to a pk_live_ key when you are ready to accept real payments.
Choose which coins to accept with a comma-separated CHAIN:SYMBOL list, for example ETH:USDC,BTC:BTC. Restrict buyers to that list, or use it only to pre-select the coin the checkout opens on. WHMCS binds one payment method per module, so coins are a list rather than separate methods.
Crypto cannot be charged automatically, so a renewal invoice is paid by the client clicking Pay Now. The module never attempts an automatic charge and WHMCS will not either, so run it alongside a card gateway. If a buyer underpays, your dashboard tolerance decides whether it still counts as paid. An overpayment credits the invoice for what it owed and leaves the surplus in your wallet.
Requires self-hosted WHMCS 8.13 or 9.0 and PHP 7.4 or newer. Your store must be reachable over HTTPS so NoHoldPay can deliver webhooks. If the WHMCS "Convert To For Processing" setting is on for the gateway, the module will not render a pay button, because the amount and the invoice would be in different currencies. Clear that setting.
PrestaShop
Take crypto on self-hosted PrestaShop 8.0 through 9.1. The buyer picks a crypto method at the checkout, the order is placed straight away in an Awaiting crypto payment status, and they are redirected to the hosted checkout. A signed webhook credits the order and moves it to Payment accepted, and the funds are already in your wallet.
Install the module
Download the release zip and upload it in Modules, Module Manager, Upload a module. Installing adds four order statuses of its own, so a crypto order is never confused with a card one. To upgrade later, unzip the new version over the old folder and open any back office page: PrestaShop reads the shipped version and upgrades the shop itself.
Connect your account
Paste your NoHoldPay API key into the module configuration. A pk_test_ key runs against testnets and a pk_live_ key against mainnet, so the key prefix decides the mode. Press Test connection to prove the key before you save it.
Set the webhook
Copy the webhook address shown on the configuration page and add it as a webhook endpoint on your API key in the dashboard. Paste the generated signing secret back into the module. Until that secret is stored the module offers no payment method at all, because a confirmed payment could not be credited without it. Press Test webhook URL to check that the address is reachable from the outside.
Test a checkout
Place a test order, pay the hosted checkout on a testnet, and confirm the order moves to Payment accepted when the confirmed webhook arrives. The order page carries a NoHoldPay panel showing what the platform has sent and a Check with NoHoldPay button you can press at any time. Switch to a pk_live_ key when you are ready to accept real payments.
Group the coins you accept into named sets, and each group becomes its own payment option at the checkout, so a buyer can see Bitcoin and Litecoin apart from Stablecoins. A group can be restricted to only its own coins, or used just to decide which coin the checkout opens on. Alongside the groups you can leave a single Pay with cryptocurrency option offering everything your API key allows.
A page of checks on the configuration screen explains why the method is not appearing when it is not, which is the failure that otherwise looks identical to a buyer no matter what caused it. Set a minimum order total to keep crypto off small carts, and map which of your own statuses a cancelled, failed or refunded payment should move an order into.
Requires PrestaShop 8.0 or newer on PHP 7.2 or newer, and no Composer dependencies. Your shop must be reachable over HTTPS so NoHoldPay can deliver webhooks, and the module tells you plainly when it is not. Multistore is supported by design but has only been tested on a single shop.
Don't see your platform?
Tell us which cart or billing system you run and we will prioritize it. If your platform is not listed above, request a plugin and we will follow up.
Request a plugin
Building something custom?
On a headless storefront, a platform not listed above, or your own stack? Use the API directly. Every plugin does the same three things: create a payment, redirect to the hosted checkout, and verify the signed webhook. Start with the Quickstart and Webhooks guides.