Want crypto too? Our free WHMCS crypto module is the only crypto payment gateway with instant payouts for Solana, Monero, Zcash and Bitcoin. Read the WHMCS crypto guide.
What you need before you start
- A working WHMCS installation and an admin account.
- Access to your server files: FTP/SFTP or your hosting File Manager.
- PHP with the cURL and OpenSSL extensions (standard on WHMCS hosting).
- Your WHMCS System URL set to your real public address with https (Configuration › System Settings › General Settings). Payment confirmations are sent to this address.
- A USDC wallet address on Polygon (starts with
0x). Step 1 shows how.
Check that your business is allowed first: see the prohibited businesses list.
Get your USDC (Polygon) payout wallet
Card payments are paid out to a USDC wallet on the Polygon network. That is a normal wallet address that starts with 0x. Payouts may arrive as USDC, USDT (Polygon or BEP-20), ETH or the POL native token, and the same address receives all of them.
- Use a self-custodial wallet that only you control, for example Trust Wallet, MetaMask, Rabby or a hardware wallet. You can create a free one in a few minutes with the Trust Wallet app on your phone.
- Copy your Polygon address (it starts with
0x, 42 characters).
Never use an exchange deposit address (Binance, Coinbase, Kraken and so on). Exchanges can freeze or lose payouts sent to deposit addresses. Also do not paste the USDC token contract address: it is not a wallet.
Download the module
Download the latest version from our GitHub repository: WHMCS-Instant-Payment-Gateway-main.zip. The module is free and open source; you can read every line of code on GitHub.
Upload the files to WHMCS
WHMCS modules are installed by copying files to your server. You can use an FTP/SFTP program (such as FileZilla) or your hosting control panel’s File Manager (cPanel, Plesk, DirectAdmin and so on).
- Unzip the file you downloaded. You get a folder called
WHMCS-Instant-Payment-Gateway-main. - Open your WHMCS root folder on the server: the folder that contains
configuration.php,init.phpandviewinvoice.php(oftenpublic_htmlorpublic_html/billing). - Upload the
modulesfolder from insideWHMCS-Instant-Payment-Gateway-maininto the WHMCS root folder. When asked, choose to merge or overwrite, so the new files are added next to your existing modules.
WHMCS-Instant-Payment-Gateway-main/ ├─ LICENSE (not needed) ├─ README.md (not needed) └─ modules/ ← upload this folder
<whmcs root>/modules/gateways/
├─ paygatedottohosted.php
├─ paygatedottocustom.php
├─ paygatedotto/ (security library, PayGate key)
├─ paygatedottohosted/ (logo)
├─ paygatedottocustom/ (logo)
└─ callback/
├─ paygatedottohosted.php
└─ paygatedottocustom.phpUpload the modules folder into the WHMCS root, not into modules/gateways. If the files end up one level too deep (for example modules/gateways/modules/gateways/), WHMCS will not find the module and payments cannot be confirmed.
Activate the gateway in WHMCS
The module adds two payment gateways. They appear in WHMCS under their module names:
| Gateway | What the client gets |
|---|---|
| paygatedottohosted Recommended | Hosted multi-provider card page: the client pays by card, Apple Pay, Google Pay and more on a secure page that picks the best provider for their country. |
| paygatedottocustom | Sends the client to one provider you choose (custom provider mode). |
- Log in to your WHMCS admin area.
- WHMCS 8: click the wrench icon Configuration › System Settings › Payment Gateways, then open All Payment Gateways (or Apps & Integrations and search for the name). WHMCS 7: Setup › Payments › Payment Gateways.
- Click the gateway you want to activate:
- paygatedottohosted
- paygatedottocustom (optional)
- The settings appear under Manage Existing Gateways.
Enter your wallet and save
Fill in the gateway settings and click Save Changes:
IllustrationThe fields of the paygatedottohosted gateway, with the values to enter. Field names are exactly as in WHMCS (WHMCS adds Show on Order Form and Display Name to every gateway).
Custom provider mode (optional)
paygatedottocustom has two more fields: Custom Provider Tag (default moonpay, see the provider list) and Minimum Invoice Amount (USD) (default 15). Invoices below the minimum show a message instead of the pay button. Give it a different Display Name so clients can tell the two apart.
Every payment confirmation is signed by PayGate.to. The module checks that signature, and a secret that only your WHMCS knows, before it marks an invoice paid, so a forged or altered confirmation is rejected.
Test with an invoice
Create a small test invoice for a client (or order a product as a client), open the invoice and choose your card payment method. The client clicks Pay Now and is taken to the secure payment page to pay with Visa, Mastercard, Apple Pay, Google Pay and more.
Card minimums range from about $1 to $30 depending on the provider (see the minimums), so test with an amount above the minimum.
The invoice is marked paid automatically
When the payment is confirmed, the module adds the payment to the invoice and WHMCS marks it Paid, activates the order as usual and sends your normal emails. The transaction appears on the invoice with an ID such as paygatedottohosted_payment_0x… (the payout transaction).
Every confirmation is also listed under Billing › Gateway Log: Successful, Underpaid (below your Fees Tolerance, the invoice stays unpaid) or Rejected (not a genuine PayGate.to confirmation).
The payout reaches your wallet at the same time. Follow it with the payout tracker.
All settings explained
| Setting | What it does | Default |
|---|---|---|
| Display Name (WHMCS) | Name of the payment method on invoices and the order form. | Module name |
| Custom Domain | Domain of the hosted payment page. | checkout.paygate.to |
| API Domain | Your dedicated API endpoint or white-label domain. Empty = uses the Custom Domain. | Empty |
| USDC Polygon Wallet Address Required | Receives the payouts. | – |
| Fees Tolerance | How far below the invoice total a payment may be before it is not accepted (10% to 90%, or disabled). | 40% |
| Custom Provider Tag (custom mode) | Provider used for the payment. | moonpay |
| Minimum Invoice Amount (USD) (custom mode) | Smallest invoice total for the provider. | 15 |
Troubleshooting and FAQ
The gateway does not appear in WHMCS.
The files are in the wrong folder. Check that modules/gateways/paygatedottohosted.php exists directly inside your WHMCS root (next to configuration.php), not one level deeper.
The client paid but the invoice is still Unpaid.
The payment confirmation could not reach WHMCS. Make sure the System URL is your real public https address, and that nothing (password protection, IP allow-lists, a firewall or maintenance mode) blocks /modules/gateways/callback/. More fixes in the WHMCS troubleshooting guide.
The invoice shows "Payment could not be processed (wallet address error)".
Check the USDC Polygon Wallet Address: it must be your own Polygon address starting with 0x.
I get "Invoice total must be $15 USD or more" in custom mode.
That is the Minimum Invoice Amount (USD) of the custom provider gateway. Lower it if your provider allows smaller amounts, or use the hosted gateway.
Do I need an account, API key or KYC?
No. Your wallet address is all you need. Never contact or create accounts at any of the payment providers.
What are the fees?
1% plus the provider’s fees, which vary per provider and amount.
Can clients charge back?
No. Payments are final and you will not receive chargebacks.
The client paid but the Gateway Log says Underpaid.
Less than the share set by Fees Tolerance arrived, so the invoice stays unpaid. The funds received are already in your wallet; settle the difference with the client, or allow a larger margin in Fees Tolerance.
How do I update the module?
Download the latest zip and upload the modules folder again, overwriting the old files (include the new paygatedotto folder). Your settings are kept, and invoices created before the update still settle normally.
I used an older PayGate WHMCS module with one gateway per provider.
Deactivate the old gateways in WHMCS after activating the new ones, so clients only see the new payment method.
Other platforms and next steps
The same card gateway is available for every major platform:
Stuck? Our team replies fast.Send us your platform, a screenshot and the order number if you have one.
Chat with support