How to Accept Crypto Payments in FOSSBilling

Let clients pay invoices with Bitcoin, Solana, Monero, Zcash, USDT and many more coins, on the hosted multi-coin page or with a QR code in your own client area. Every payment is forwarded instantly to your wallet.

Updated October 2026 · Free and open source · Works with the latest FOSSBilling release

SolanaMoneroZcashBitcoin

The only crypto payment gateway with instant payouts for Solana (SOL), Monero (XMR), Zcash (ZEC) and Bitcoin (BTC).

Every coin your customer sends is forwarded straight to your own wallet the moment the payment is confirmed, with no holds, no sign up and no KYC. It works the same in all our plugins and modules: WooCommerce, Easy Digital Downloads, WHMCS, FOSSBilling, Paymenter, OpenCart, PrestaShop and Magento.

Setup timeAbout 10 minutes
You needFTP or File Manager + wallets
Fees1.5% + blockchain fees
PayoutsInstant, to your wallet

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 0x address 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.

  1. Unzip the file you downloaded. You get a folder called FOSSBilling-Crypto-Payment-Gateway-main.
  2. Open your FOSSBilling folder on the server: the folder that contains config.php, index.php and ipn.php.
  3. Go into library/Payment/Adapter/ (you will see PayPalEmail.php and Stripe.php there) and upload the PayGateCrypto folder into it.
Inside the downloaded zip
FOSSBilling-Crypto-Payment-Gateway-main/
├─ LICENSE        (not needed)
├─ README.md      (not needed)
├─ screenshots/   (not needed)
└─ PayGateCrypto/   ← upload this folder
Result on your FOSSBilling server
<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

  1. Log in to your FOSSBilling admin area.
  2. Open System › Payment gateways and click New payment gateway.
  3. Under Available Adapters, click the install button next to PayGateCrypto.
  4. 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:

CheckoutHow the client pays
Hosted multi-coin page RecommendedThe 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 pageThe 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.

PayGateCrypto settings in FOSSBilling: checkout mode, one wallet per network, coins, network fee, tolerance and confirmations
The crypto gateway settings: one wallet per network.
SettingWhat it does
Coins on the invoice pageOptional, 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 feeWho pays the estimated blockchain fee for forwarding the payment: you (default) or the client.
Underpayment tolerancePayments 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 URLOptional. 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:

FOSSBilling invoice payment page asking the client to choose a coin: BTC, USDT, USDC, ETH, SOL, LTC and more
The client chooses the coin.

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.

FOSSBilling invoice payment page with the exact BTC amount, the payment address and a QR code
The amount, address and QR code, right in your client area.

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.

All settings explained

SettingWhat it doesDefault
CheckoutHosted multi-coin page, or address and QR code on the invoice page.Hosted page
Network walletsEVM, Bitcoin, Litecoin, Solana, Tron, Bitcoin Cash, Dogecoin, Monero, Zcash, TON. Empty = not accepted.Empty
Coins on the invoice pageCoin ids offered on the invoice page.Common coins of your networks
Network feeWho pays the forwarding fee.You
Underpayment tolerance0%, 1%, 2%, 3%, 5% or 10%.2%
Confirmations (invoice page)1, 2, 3 or 6.1
Dedicated API endpointYour free DDoS-protected API endpoint.api.paygate.to
Checkout domain, colour, logo URLBranding 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