What you need before you start
- FOSSBilling 0.7.2 or newer and an admin account (tested on 0.7.2 and 0.8.8).
- Access to your server files: FTP/SFTP or your hosting File Manager.
- FOSSBilling reachable at its public https address. Payment confirmations are sent to
https://your-site/ipn.php. - A wallet address for each network you want to accept. Step 1 explains which ones.
Prepare your payout wallets
Crypto is forwarded to your own wallet addresses, one for each coin or network you want to accept. Prepare them before you start:
- Bitcoin (BTC): your Bitcoin address (usually starts with
bc1). - Solana (SOL and Solana tokens such as USDC and USDT on Solana): your Solana address.
- Monero (XMR) and Zcash (ZEC): your Monero and Zcash addresses.
- Ethereum and EVM networks (ETH, ERC20, BEP20, Polygon, Arbitrum, Base, Optimism, Avalanche-C): one
0xaddress covers all of them. - Any other coin you want, for example Litecoin, Dogecoin, Bitcoin Cash, Tron (TRC20 USDT) or TON.
Use self-custodial wallets that only you control (Trust Wallet, Exodus, Phantom for Solana, Cake Wallet for Monero, a hardware wallet and so on). Never use exchange deposit addresses, and always paste the address for the right network: a Bitcoin address in the Bitcoin field, a Solana address in the Solana field.
Download the module
Download the latest version from our GitHub repository: FOSSBilling-Crypto-Payment-Gateway-main.zip. It is free and open source; the code is on GitHub.
Upload the folder to FOSSBilling
FOSSBilling payment gateways are single folders copied to your server. Use an FTP/SFTP program (such as FileZilla) or your hosting control panel’s File Manager.
- Unzip the file you downloaded. You get a folder called
FOSSBilling-Crypto-Payment-Gateway-main. - Open your FOSSBilling folder on the server: the folder that contains
config.php,index.phpandipn.php. - Go into
library/Payment/Adapter/(you will seePayPalEmail.phpandStripe.phpthere) and upload thePayGateCryptofolder into it.
FOSSBilling-Crypto-Payment-Gateway-main/ ├─ LICENSE (not needed) ├─ README.md (not needed) ├─ screenshots/ (not needed) └─ PayGateCrypto/ ← upload this folder
<fossbilling>/library/Payment/Adapter/
├─ PayPalEmail.php
├─ Stripe.php
└─ PayGateCrypto/
├─ PayGateCrypto.php
├─ logo.png
└─ keys/ (PayGate.to public key)Upload the PayGateCrypto folder itself, not only the files inside it, and not one level deeper. The file must end up at library/Payment/Adapter/PayGateCrypto/PayGateCrypto.php.
Install the gateway in FOSSBilling
- Log in to your FOSSBilling admin area.
- Open System › Payment gateways and click New payment gateway.
- Under Available Adapters, click the install button next to PayGateCrypto.
- The gateway now appears in the list of payment gateways. Click its title to open the settings.
Choose the checkout and enter your wallets
Set Payment Gateway Title to the name your clients see, for example “Crypto (Bitcoin, USDT, Solana…)”. Then choose how clients pay:
| Checkout | How the client pays |
|---|---|
| Hosted multi-coin page Recommended | The client picks any coin of your networks on the secure hosted page. Monero, Zcash and TON are only available here. |
| Address and QR code on the invoice page | The client picks a coin in your client area and gets the exact amount, a unique address and a QR code there. |
Fill in a wallet for each network you want to accept and leave the others empty: an empty network is not offered.

| Setting | What it does |
|---|---|
| Coins on the invoice page | Optional, for the invoice-page checkout: coin ids such as btc, erc20_usdt, trc20_usdt, sol_sol. Empty = the common coins of the networks you filled in. |
| Network fee | Who pays the estimated blockchain fee for forwarding the payment: you (default) or the client. |
| Underpayment tolerance | Payments this much below the amount due still pay the invoice (crypto prices move, some wallets round). Default 2%. |
| Confirmations (invoice page) | Blockchain confirmations before the invoice is paid. Default 1. |
| Dedicated API endpoint, Checkout domain, colour, logo URL | Optional. See the custom domain guide. |
At the bottom of the page, switch on Enabled and Allow One Time Payments, then click Update Gateway (Update on FOSSBilling 0.7). Leave Enable Test Mode off: there is no test mode, small real payments are the way to test.
Test with an invoice
Open a small test invoice in the client area and choose the crypto payment method. With the hosted page, the client picks a coin there. With the invoice-page checkout, the client picks a coin first:

and then sees the exact amount, a unique address and a QR code. A Choose another coin link lets them switch before paying. The amount is valid for 3 hours; a payment that arrives later, or after you change the invoice total, is checked against the current rate.

Each coin has its own minimum. If the invoice is below it, the client is asked to choose another coin. See the minimum per coin.
The invoice is paid and you are paid out
When the payment is confirmed on the blockchain, the crypto is forwarded instantly to your wallet and the invoice is marked Paid. Every confirmation is listed under Invoices › Transactions:
| Transaction | Meaning |
|---|---|
| Processed, status Paid | The invoice was paid. The note shows the amount and the blockchain transaction ids. |
| Code 3001 | Underpaid beyond your tolerance: the invoice stays unpaid and the funds are already in your wallet. Settle the difference with the client. |
| Code 3002 | A different coin or token than the one quoted was sent. It was forwarded to you; check it before releasing the order. |
| Code 3003 | Extra payment: the invoice was already paid (for example the client paid twice) or was cancelled. The funds are in your wallet; refund the client or add the amount to their balance. |
| Code 3004 | The payout did not go to your configured wallet, so the invoice was not paid. Contact support if you see this. |
| Processed, status Duplicate | PayGate.to sent the same confirmation again. Nothing more was credited. |
| Status Error, PayGate.to callback rejected | Not a genuine PayGate.to confirmation, or one that was changed. Nothing was paid. |

All settings explained
| Setting | What it does | Default |
|---|---|---|
| Checkout | Hosted multi-coin page, or address and QR code on the invoice page. | Hosted page |
| Network wallets | EVM, Bitcoin, Litecoin, Solana, Tron, Bitcoin Cash, Dogecoin, Monero, Zcash, TON. Empty = not accepted. | Empty |
| Coins on the invoice page | Coin ids offered on the invoice page. | Common coins of your networks |
| Network fee | Who pays the forwarding fee. | You |
| Underpayment tolerance | 0%, 1%, 2%, 3%, 5% or 10%. | 2% |
| Confirmations (invoice page) | 1, 2, 3 or 6. | 1 |
| Dedicated API endpoint | Your free DDoS-protected API endpoint. | api.paygate.to |
| Checkout domain, colour, logo URL | Branding for the hosted page. | checkout.paygate.to |
Building your own integration instead? The PHP SDK gives you coin lists, addresses, QR codes and signed callback checks in a few lines.
Troubleshooting and FAQ
Are Monero, Zcash and Solana really supported with instant payouts?
Yes. PayGate.to is the only crypto payment gateway with instant payouts for Solana (SOL), Monero (XMR), Zcash (ZEC) and Bitcoin (BTC). Monero, Zcash and TON are offered on the hosted multi-coin page.
PayGateCrypto is not in the New payment gateway list.
The file must be at library/Payment/Adapter/PayGateCrypto/PayGateCrypto.php inside your FOSSBilling folder. FOSSBilling 0.7.2 or newer is required.
Clients see "not fully configured".
No network has a wallet yet. Fill in the wallet of at least one network and click Update Gateway.
The client paid but the invoice is still unpaid.
Open Invoices › Transactions. No transaction means the confirmation could not reach https://your-site/ipn.php (maintenance mode, password protection, IP allow-lists). Code 3001 means it was underpaid beyond your tolerance.
The client sent too little.
The transaction gets code 3001 and the invoice stays unpaid. The funds received are already in your wallet; settle the difference with the client, or allow a larger Underpayment tolerance.
What are the fees?
1.5% flat rate plus blockchain fees. Set Network fee to the client to let them cover the blockchain fee.
Do I need an account, API key or KYC?
No registration and no KYC for you or your clients. Your wallet addresses are all you need.
How do I update the module?
Download the latest zip and upload the PayGateCrypto folder again, overwriting the old files. Your settings are kept.
Other platforms and next steps
The same crypto 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