Crypto Payments for Gaming, VPN and Hosting Businesses
A practical guide to crypto payments for gaming, VPN and hosting businesses. Take USDT and TRX for subscriptions, top-ups and renewals with fast settlement.

Gaming, VPN and hosting are digital services sold to a global audience, and that makes crypto payments a natural fit for them. This guide shows how to accept USDT and TRX on TRON (TRC20) for subscriptions, top-ups and renewals, and how to wire it up so your service activates the moment a payment is final.
Why these industries suit crypto payments
Game servers, VPN providers and hosting companies share a common problem: their customers are spread across many countries. Card payments bring uneven approval rates, currency conversion costs and chargeback risk. Crypto addresses most of that:
- Global reach: anyone with a TRC20-capable wallet or exchange account can pay, wherever they are.
- No chargebacks: a confirmed blockchain transfer cannot be reversed unilaterally, which removes the "use the service, then dispute the charge" pattern.
- Fast finality: on MercanPay a payment is credited after 20 block confirmations, usually about a minute, so you can provision immediately.
- Stable pricing: USDT tracks the US dollar, so your subscription price stays put.
New to the basics? Start with what a crypto payment gateway is.
Legitimate use only: who this guide is for
This article is for lawful businesses: game server operators, developers selling premium memberships or cosmetic items, privacy-focused VPN services, and VPS, shared hosting and domain resellers. Merchants apply to MercanPay with a short business questionnaire and are approved after review. Accepting crypto doesn't change your terms of service or your obligations, and you still need to follow the rules that apply where you operate.
Payment scenarios by industry
| Industry | Typical sale | Suggested invoice type | What triggers fulfilment |
|---|---|---|---|
| Gaming | Premium membership, in-game bundles, server slots | USD-priced, customer picks TRX/USDT | invoice.paid webhook |
| VPN | Monthly / yearly subscription | USD-priced, a new invoice each period | invoice.paid → extend subscription |
| Hosting | VPS, shared hosting, account top-ups | USD-priced or fixed USDT | invoice.paid / invoice.overpaid → provision |
Gaming: memberships and bundles
The common flow is simple: a player picks a bundle, pays, and it appears on their account. Put the player ID in the invoice metadata. It is never shown to the customer and comes back unchanged in the webhook, so you always credit the right account. The minimum invoice is 10 USD, so bundles or balance top-ups work better than tiny micro-payments.
VPN: subscriptions and renewals
Crypto isn't pulled from a customer's wallet the way a card is charged. You create a new invoice for each billing period. A clean flow is to create the invoice a few days before expiry, send the payment link by email or in-app, and extend access when invoice.paid arrives. Use a unique order_id per renewal (e.g. vpn-4821-2026-11). Repeating a request with the same order_id returns the existing invoice instead of creating a duplicate.
Hosting: provisioning and top-ups
Hosting companies usually either charge per order or let customers top up an account balance. Top-ups make overpayments harmless: when an invoice is overpaid, MercanPay credits the full amount and reports the excess in overpaid_amount, which you can add to the customer's hosting credit. For shortfalls, see our guide to underpayments, overpayments and late payments.
Integration: panel or API?
If you only take a handful of orders, create invoices in the merchant panel and send the payment link. For automation, use the REST API or the official libraries. Much hosting and game software runs on PHP, so the PHP client is often the quickest route:
use MercanPay\MercanPay;
$zp = new MercanPay('https://mercanpay.com', getenv('MERCANPAY_API_KEY'));
// USD-priced invoice: the customer picks TRX or USDT on the payment page
$invoice = $zp->createUsdInvoice('12.00', [
'order_id' => 'vps-9912',
'description' => 'VPS - 1 month',
'metadata' => ['client_id' => 9912, 'plan' => 'vps-s'],
'return_url' => 'https://yourhost.com/panel',
]);
header('Location: ' . $invoice['payment_url']);
We don't ship a ready-made plugin for WooCommerce or hosting billing panels. Integration goes through the API or the PHP library, and building your own module on top of it is straightforward. See the PHP integration guide, the Python integration guide, and the full documentation.
When to activate the service
The golden rule for digital services: provision from the signed webhook, never from the browser redirect. After paying, the customer's browser goes to your success_url, but a redirect can be faked. Only spin up the server, create the VPN account or deliver the bundle when a verified invoice.paid or invoice.overpaid event arrives. Our webhook signature guide covers verification in detail.
A few more habits worth adopting:
- De-duplicate: the same event can arrive more than once. Store the event
idororder_idand never provision twice. - Check the amount: make sure the coin and amount in the webhook match your order.
- Answer fast: push long jobs like server setup to a background queue. Requests that don't get a 2xx within 10 seconds are retried with increasing delays.
Pricing and costs
MercanPay's commission starts from 0.4% and is set per merchant. The withdrawal fee is between 1 and 3 USD, and both the minimum invoice and the minimum withdrawal are worth 10 USD. USDT invoices include a 1 USDT network fee paid by the customer. With no chargebacks, and compared with the higher rates some large providers charge, this gives internationally focused digital services a predictable cost base.
With USD-priced invoices the rate is locked once the customer picks a coin, so TRX volatility doesn't eat into your price. More on that in crypto payment exchange rate risk.
Security: protect your revenue
Digital service businesses attract attackers. MercanPay uses two-step login (email code or authenticator). Every panel withdrawal needs both an email code and an authenticator (TOTP) code. API withdrawals can only go to addresses you've marked as trusted, and withdrawals lock for 24 hours after a password reset. Give API keys only the scopes they need: a server that creates invoices doesn't need withdrawals. See our account security guide.
FAQ
Can I run auto-renewing subscriptions?
Crypto can't be pulled from a customer's wallet. You create a new invoice each period and send the link, a flow you can fully automate through the API.
What if the customer pays after the invoice expires?
Invoices stay open for at most 24 hours. A payment that arrives after expiry is still credited to your balance, and data.payment.late in the webhook flags it as late. Whether to provision is your call.
Which coins can I accept?
TRX and USDT on the TRON network (TRC20). With a USD-priced invoice the customer picks one of the two.
Is there a ready-made hosting panel module?
Not at the moment. You can build one quickly on the REST API and the PHP or Python libraries.
Get started with MercanPay
Accept USDT and TRX from anywhere for your game server, VPN or hosting business. Fill in a short application, and once you're approved you can create your first invoice in minutes: open a merchant account.


