WHMCS Module

Let your hosting customers pay their WHMCS invoices in crypto. The official Payid19 module adds a Pay Now button to every unpaid invoice, sends the customer to a Payid19 payment page, and marks the invoice paid by itself once the payment completes. Your balance is credited in USDT.

  Download the module (v1.0.0)

Requirements

  • WHMCS 8.0 or newer (PHP 7.2 or newer)
  • A Payid19 account and your API keys (Settings page)

Installation

  1. Upload the files. Unzip the download and upload the modules folder to your WHMCS root directory, so the files land in modules/gateways/. Nothing is overwritten; the module only adds its own files.
  2. Activate it. In the WHMCS admin area go to System Settings → Payment Gateways, open All Payment Gateways and click Payid19 (Crypto).
  3. Connect your account. Paste the public and private keys from your Payid19 Settings page, pick a payment page design and save. The name your customers see can be changed in Display Name.
  4. Test it. Switch on Test mode, open any unpaid invoice from the client area and press Pay Now. Keep the payment page open: the test payment completes by itself within about a minute, you are taken back to the invoice, and it shows Paid.
  5. Go live. Switch Test mode off. From now on only real payments mark invoices paid.
While test mode is on, any customer can mark an invoice paid without sending crypto. Keep it on only while you are testing. Test payments are ignored once it is off.

Settings

Public key / Private key
Your API keys. The private key stays on your WHMCS server: it is used to call the Payid19 API, to check that webhooks really come from Payid19, and to sign the payment links the module creates.
Payment page design
Classic, Slate, Paper or Mint. The same designs as the template parameter of the API.
Customer pays the fee
Adds the Payid19 fee to what the customer pays, so you receive the full invoice amount. Off by default: a round total usually converts better.
Test mode
Creates test payments that complete on their own, without any crypto being sent. See the warning above.

How a payment is recorded

  1. The customer presses Pay Now. Only then does the module create a Payid19 payment page for the invoice balance. Pressing it again for the same invoice reuses that page instead of opening a new one.
  2. The customer pays on the Payid19 page. Payid19 then sends a webhook to modules/gateways/callback/payid19.php and redirects the customer back to the invoice.
  3. Whichever arrives first, the webhook or the returning customer, the module asks the Payid19 API whether the payment is really complete, and only then adds the payment to the invoice. It is recorded exactly once, with a transaction ID like P19-372910.
If a firewall or Cloudflare rule blocks the webhook, the invoice is still marked paid when the customer returns from the payment page. Every step is written to Billing → Gateway Log.

Currencies

Invoices can be in any of 160+ currencies (USD, EUR, GBP, TRY, INR, BRL and more). Common local codes such as TL are recognised as TRY. If your WHMCS currency is not accepted, set Convert To For Processing on the gateway settings page to USD: the customer pays the converted amount and the invoice is still paid in full in its own currency.

Files

  • modules/gateways/payid19.php: the gateway itself (settings and the Pay button)
  • modules/gateways/payid19/lib/: shared code
  • modules/gateways/callback/payid19.php: the Pay endpoint, the webhook and the return from the payment page

On first use the module creates one small table, mod_payid19, which links each payment page to its invoice.