EN

Crypto payments for web hosting: WHMCS, BILLmanager, Blesta, WISECP, FOSSBilling, Paymenter and RootPanel

9 min read

Crypto payments for web hosting: WHMCS, BILLmanager, Blesta, WISECP, FOSSBilling, Paymenter and RootPanel

This guide is for hosting companies, VPS providers and resellers who bill customers through a billing system and want to accept crypto for those invoices. Getting paid is only half of it: the invoice should turn paid by itself, so the billing system renews or provisions the service as usual, with no manual matching of transfers.

Why crypto: hosting customers come from many countries, and not all of them have a card your acquirer will accept. SnapEX Pay requires no KYC from you or your customers and has no country restrictions. Crypto rules differ from country to country, so check with a lawyer how they apply to your business.

  • 7billing systems with a ready module, all modules free
  • 1%fee per payment, no monthly or setup fee
  • 70+coins on the payment page, USDT on TRON, Ethereum, BSC, Solana, TON and other networks; you receive USDT

How a hosting invoice gets paid

From an unpaid invoice to a renewed service

Billing invoicethe customer picks SnapEX Pay
Payment pageUSDT or another coin
WebhookHMAC-SHA256 signature
Checkthe module re-reads the invoice from the API
Invoice paidyour billing automation takes over

The module does not trust the webhook body alone: before marking the invoice, it fetches it from the SnapEX Pay API. The same payment is never applied twice, even if the notification arrives again.

Step 1. Pick the module for your billing system

  • Gateway

    WHMCS

    Pay Now leads to the payment page, and the invoice turns Paid by itself. Multi-currency invoices stay in the customer's currency.

    WHMCS 8.x and 9.x · PHP 7.4+ with cURL

  • Payment method

    BILLmanager

    Installed with install.sh, which adds a safety payment check every 5 minutes. The key is verified on save.

    BILLmanager 6, any edition · python3 3.6+

  • Gateway

    Blesta

    Invoices in any currency: the amount is converted to USD at Blesta's rates, and the transaction is recorded in the invoice currency.

    Blesta 6.x · PHP with cURL

  • Gateway

    WISECP

    A customer who comes back before confirmation sees a status page that moves on to "payment successful" by itself. Admin texts in English, Turkish and Russian.

    WISECP 3 and 5 · PHP 8.1+, 8.2 for WISECP 5

  • Adapter

    FOSSBilling

    A single file in library/Payment/Adapter; it shows up in System → Payment gateways.

    FOSSBilling 0.8+ · PHP 8.0+ · HTTPS

  • Extension

    Paymenter

    A native Paymenter v1 gateway: a folder in extensions/Gateways, or /app/extensions in the Docker image.

    Paymenter v1.x · PHP 8.3+ · HTTPS

  • Built in

    RootPanel

    The SnapEX Pay module already ships with RootPanel billing: add the payment system and paste the key and webhook secret.

    Instructions on the RootPanel site

  • API

    Your own billing

    One REST API request creates an invoice and returns a payment page link. A signed webhook reports the status.

    Same docs and test mode as the modules

Step 2. Create a merchant account and an API key

  • Sign up at pay.snapex.pro. A snapex.pro exchange account works too: it is the same account. No documents needed.
  • Create an API key with the invoices.read and invoices.write scopes.
  • Add the webhook URL; the module shows it in the gateway settings. The whsec_… signing secret is shown once, so paste it into the Webhook secret field right away.
  • Every notification is signed with HMAC-SHA256 and a timestamp. If your server does not respond, SnapEX Pay retries, up to 5 attempts in total.

Step 3. Install the module

Download the archive from the module page and copy the files, keeping the paths:

  • WHMCS: archive into the WHMCS root, then System Settings → Payment Gateways → All Payment Gateways → enable SnapEX Pay (Crypto).
  • BILLmanager: unpack the archive as root and run sh install.sh, then Provider → Payment methods → Add → SnapEX Pay (crypto), currency USD.
  • Blesta: archive into the root, Settings → Payment Gateways → Available → Install. Tick USD and every invoice currency under Accepted Currencies, otherwise customers will not see SnapEX Pay on invoices in that currency.
  • WISECP: archive into the root with the path coremio/modules/Payment/SnapexPay/, then enable the module in the payment gateway settings.
  • FOSSBilling and Paymenter: copy the module file or folder into the adapters directory, then install the gateway in the admin area. If the Paymenter gateway does not appear, run composer dump-autoload -o and php artisan optimize:clear.
  • RootPanel: add the "SnapEX Pay" payment system; the webhook is https://your_domain/_rootpay/snapexpay/online.php.

On Blesta the webhook is required: Blesta has no cron for gateways, so without a notification the payment is recorded only when the customer returns from the payment page.

Step 4. Test the payment on a test invoice

Turn on test mode in the gateway settings (in Paymenter, Environment = test) and pay an unpaid invoice with the test method on the SnapEX Pay page. A test invoice confirms itself, and no real money moves. Regular customers do not see the button meanwhile: in WHMCS and WISECP only a logged-in admin sees it, in Blesta a staff member logged in as the client. In BILLmanager, create a separate test payment method available only to a test client.

Check that the invoice turned Paid and the service was renewed, then turn test mode off. In BILLmanager, FOSSBilling and Paymenter test payments are not applied once the gateway is live.

Step 5. Go live and set up withdrawals

  • Invoice currency. SnapEX Pay invoices in USD. If your invoices are in euros, rubles or another currency, keep the USD rate in your billing system current: in WHMCS, Convert To For Processing = USD; in BILLmanager, a USD payment method; in Blesta and WISECP, USD among the currencies with a rate.
  • 1% fee plus the coin's network buffer, deducted from your amount or added on top for the customer, your choice.
  • Coins for low-cost plans. USDT on TRC20, ERC20 and BEP20, plus LTC, ETH and TRX, from $0.50 per invoice. Other coins and USDT on Solana, TON and other networks, on invoices from $8.
  • SnapEX Pay invoice lifetime is 30 minutes by default, from 1 minute to 24 hours; amounts up to $100,000.
  • Withdrawals: the balance is in USDT and goes from the dashboard to a crypto address with no hold. No service fee on withdrawals, only the network fee; the minimum is $0.50 to $10 depending on the coin.

Minimum invoice amount by coin

  • USDT TRC20 / ERC20 / BEP20, LTC, ETH, TRXfrom $0.50
  • Other coins and networksfrom $8

Scale: $0 to $10. A VPS invoice of a couple of dollars is paid in the coins on the first line.

If the webhook does not arrive

The billing server was rebooted, the network blinked, and a notification can get lost. The WHMCS and BILLmanager modules confirm a payment in three independent ways, so a paid invoice does not stay unpaid.

Three ways to mark an invoice paid (WHMCS and BILLmanager)

  1. Right awaySigned webhook. The module checks the signature and re-reads the invoice from the SnapEX Pay API.
  2. When the customer returnsReturn from the payment page. The module requests the invoice status itself.
  3. In the backgroundPeriodic check. In WHMCS, on cron runs, each pending payment at most once every 10 minutes for 5 days; in BILLmanager, checkpay every 5 minutes.

On Blesta and WISECP the payment is recorded by the webhook or when the customer returns, whichever comes first.

If the customer sent less

Exchanges often take their withdrawal fee out of the transfer. The modules never apply a partial payment blindly: in WHMCS it goes to the Gateway Log, in BILLmanager to the log, in Blesta and WISECP to a pending transaction for you to review. The SnapEX Pay invoice itself waits for a top-up to the same address; if none comes, it closes as partially paid and the amount received is credited to your balance. More in the guide What happens when a customer underpays.

Topping up a customer balance

If customers keep a balance in your billing system and top it up in advance, you can give each of them a permanent address through the API, by your customer's customer_id. Networks: USDT TRC20, ERC20, BEP20 and Polygon, USDC Polygon, BTC, LTC, ETH and TRX. A top-up is credited in USDT minus the usual fee, from $0.50, and each one triggers a webhook. The ready modules work with invoices; permanent addresses are connected through the API.

Pre-launch checklist

Before you show customers the crypto option

  • The module is installed for your billing system: WHMCS, BILLmanager, Blesta, WISECP, FOSSBilling, Paymenter or RootPanel.
  • The API key with invoices.read and invoices.write is pasted in and saves without errors.
  • The webhook is set in the SnapEX Pay dashboard to the URL from the gateway settings, and the whsec_… secret is saved. Required on Blesta.
  • The USD rate in your billing system is current if you invoice in another currency.
  • A test invoice was paid: it turned Paid once and the service was renewed.
  • Test mode is off, and all customers see the payment button.
  • A USDT withdrawal address is ready, and you know the withdrawal minimum for your coin.

If you already have a payment method

You do not need to drop it: SnapEX Pay goes into your billing system as a second method next to the current one, and the customer picks how to pay. Step-by-step guides: WHMCS and BILLmanager; what to look at when choosing a gateway: How to choose a crypto payment gateway for hosting. All modules at a glance: Crypto payments for hosting.

Ready to accept crypto?

Create a merchant account and get an API key. 1% per payment, no monthly fee.

← All articles

$200 giveaway

To a random member.

Ends in 12d 06h 53m 30s Subscribe @snapex_pay