Accept crypto payments with WHMCS
Add a non-custodial crypto payment gateway to WHMCS with the NoncePay module. Customers pay invoices in USDT, USDC, BTC, ETH, SOL and more, forwarded to your own wallets.
The NoncePay module for WHMCS adds a Pay with crypto button to your invoices. The customer pays on the NoncePay hosted payment page and the invoice is marked paid once the payment is confirmed. Every payment is forwarded to your own wallet, minus our fee. There is no account, no API key and no withdrawal step.
Install
- Download
noncepay-whmcs.zipfrom the latest release and unzip it into the root of your WHMCS installation. It addsmodules/gateways/noncepay.php,modules/gateways/noncepay/andmodules/gateways/callback/noncepay.php. - In the WHMCS admin, go to Configuration > System Settings > Payment Gateways, open All Payment Gateways and click NoncePay (crypto).
- Enter a receiving wallet for each family of coins you accept, then save.
Requires WHMCS 8.x and PHP 7.4 to 8.3 with curl and openssl. Your WHMCS site must be reachable from the internet
so NoncePay can call its callback. The source is on GitHub.
How it works
- The invoice shows Pay with crypto. Nothing is sent to NoncePay until the customer clicks it.
- The module creates a payment link for the invoice balance in the invoice currency, valid 7 days, and redirects the customer to its page. A reload reuses the same link; a new one is created only when the balance changes or the link is about to expire.
- The customer picks a coin and pays. Each payment is forwarded to your wallet as soon as it confirms.
- Once the payments cover the invoice, NoncePay sends the link-paid callback. The module verifies
its
x-ca-signatureagainst the key from/pubkey/, checks the link and the amount, and records the payment with the link id as transaction id, so a repeated callback is recorded once. - The customer is sent back to the invoice, which says the payment is being confirmed. The invoice is only marked paid by the signed callback, never by this redirect.
Callbacks are listed in Billing > Gateway Log.
Settings
| Setting | Default | What it does |
|---|---|---|
| Wallets | empty | One per family: EVM, Tron, Bitcoin, Litecoin, Bitcoin Cash, Dogecoin, Solana; split syntax accepted |
| Coins offered | every coin of your wallets | Optional comma-separated tickers such as trc20/usdt,bep20/usdt,btc |
| Merchant name, logo | company name, none | Shown on the payment page; the logo must be an https URL |
| Underpayment tolerance | 0% | 0 to 1%: how much less than the invoice still marks it paid |
| Pinned public key | empty | Optional PEM key; empty fetches /pubkey/ and caches it |
Limits
- The invoice currency must be one NoncePay prices (USD, EUR, GBP and about thirty others). For another currency, set Convert To For Processing on the gateway to one of them.
- An overpayment is recorded in full and WHMCS adds the surplus to the client's credit. An underpayment beyond the tolerance is asked for again on the payment page.
- A payment made after the link expired is still forwarded to your wallet and shows in the gateway log, but it does not mark the invoice paid: add it by hand.
- Refunds are sent from your wallet: NoncePay holds nothing to refund from.
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.
Accept crypto payments with PrestaShop
Add a non-custodial crypto payment module to PrestaShop with NoncePay. Customers pay their orders in USDT, USDC, BTC, ETH, SOL and more, forwarded to your own wallets.