Accept USDT payments
on any website — automatically

A self-hosted payment gateway for USDT (TRC20 & BEP20). Customers pay, the page turns Successful by itself, and your site gets a signed callback. No monthly fee, no paid API.

▶ Try Live DemoRead Integration Docs
✅ Auto confirmation🔐 HMAC-signed API & webhooks💸 No fees to us🌐 Works with PHP, Node, Python, any stack

Everything you need

Built for small businesses and developers who want full control.

⚡ Auto success / failed

Payment detected on-chain → page shows Successful. Time out → Failed, with a webhook for both.

🔗 Multi-network

USDT on TRON (TRC20) and BNB Smart Chain (BEP20). Customer picks, or you decide per invoice.

🧩 Simple integration

One signed POST creates an invoice. Drop-in PHP SDK and ready examples for Node & Python.

📊 Advanced admin

Charts, invoices, transactions, webhook logs, merchants, settings and quick payment links.

🔁 Reliable webhooks

Signed with timestamp, retried 6 times, idempotent-friendly. Resend with one click.

🛡️ Non-custodial

Only your public wallet address is stored. We never hold funds or private keys.

How it works

Four steps from checkout to confirmed order.

1

Create invoice

Your server calls /api/create.php with order id and amount.

2

Customer pays

Redirect to the hosted pay page: QR, address, exact amount, timer.

3

Auto detect

The gateway watches the blockchain (free public APIs) and matches the unique amount.

4

You get a webhook

Signed invoice.paid or invoice.failed hits your site; credit the wallet/order.

Integrate in minutes

This is all the code to start a payment from your site.

$fields = ['api_key'=>KEY, 'order_id'=>'ORDER-1001', 'amount'=>'10.50'];
$fields['sign'] = hash_hmac('sha256', KEY.'|ORDER-1001|10.50', SECRET);
$res = json_decode(file_get_contents('http://x.smboostzone.shop/api/create.php', false,
  stream_context_create(['http'=>['method'=>'POST','content'=>http_build_query($fields),
  'header'=>'Content-Type: application/x-www-form-urlencoded']])), true);
header('Location: ' . $res['pay_url']);
Full documentation → See it working