A self-hosted crypto payment gateway for SaaS. Generate a unique deposit address per invoice, track confirmations on-chain, and activate subscriptions automatically — on Ethereum and TRON.
Batteries-included payment processing without a third-party processor taking a cut or holding your funds.
A fresh deterministic deposit address (BIP-44) for every invoice, derived from a single seed you control.
Accept USDT on Ethereum (ERC20) and TRON (TRC20). Customers pick the cheaper, faster chain.
Confirmed payments activate or extend a user's subscription instantly — accumulation, over- and under-payment handled.
Push events (invoice.paid, subscription.activated) with HMAC-SHA256 signatures and automatic retries.
Funds are swept to your cold wallet on a schedule, with deposit addresses auto-funded for gas.
You run it, you hold the keys. No processor, no custody, no per-transaction fees.
Four REST calls and the gateway handles the blockchain for you.
POST the user, network and amount. Get back a unique deposit address valid for 30 minutes.
Show the address & QR. The customer sends USDT from any wallet or exchange.
We detect the transfer, wait for network confirmations, and mark the invoice paid.
The subscription is created or extended automatically and a webhook fires to your app.
Pick mainnet defaults out of the box, or point at your own contracts and RPC.
Create a user, open an invoice, then poll the status or listen for a webhook.
POST /api/v1/users — once per customer.POST /api/v1/invoices — returns the deposit address & expiry.GET /api/v1/invoices/:id until paid, or receive a webhook.GET /api/v1/subscriptions/:user_id — gate features by end_at.X-API-Key on every /api/* request when auth is enabled.# 1. Create a customer
curl -X POST https://api.crypto-payment-gateway.slonix.dev/api/v1/users \
-H 'Content-Type: application/json' \
-H 'X-API-Key: YOUR_KEY' \
-d '{"email":"customer@app.com"}'
# 2. Open an invoice for 25 USDT on TRON
curl -X POST https://api.crypto-payment-gateway.slonix.dev/api/v1/invoices \
-H 'Content-Type: application/json' \
-H 'X-API-Key: YOUR_KEY' \
-d '{"user_id":"USER_ID","network":"TRC20","amount":25}'
# 3. Poll the status
curl https://api.crypto-payment-gateway.slonix.dev/api/v1/invoices/INVOICE_ID \
-H 'X-API-Key: YOUR_KEY'const API = 'https://api.crypto-payment-gateway.slonix.dev';
const H = { 'Content-Type': 'application/json', 'X-API-Key': KEY };
// create an invoice
const inv = await fetch(`${API}/api/v1/invoices`, {
method: 'POST', headers: H,
body: JSON.stringify({ user_id, network: 'TRC20', amount: 25 }),
}).then(r => r.json());
// poll until paid
const t = setInterval(async () => {
const s = await fetch(`${API}/api/v1/invoices/${inv.id}`, { headers: H }).then(r => r.json());
if (s.status === 'paid') { clearInterval(t); unlock(user_id); }
}, 5000);import requests, time
API = 'https://api.crypto-payment-gateway.slonix.dev'
H = {'X-API-Key': KEY}
inv = requests.post(f'{API}/api/v1/invoices', headers=H, json={
'user_id': user_id, 'network': 'TRC20', 'amount': 25,
}).json()
while True:
s = requests.get(f'{API}/api/v1/invoices/{inv["id"]}', headers=H).json()
if s['status'] in ('paid', 'expired'): break
time.sleep(5)The essentials about networks, custody, confirmations and integration.
X-API-Key header on /api/* requests when authentication is enabled.Open the dashboard to create your first invoice, or dive into the integration docs.