stabltap/ gateway
BSC USDT today · more chains coming

USDT payments. You hold the keys.

A multi-merchant payment gateway that routes stablecoin payments straight to your treasury. Hosted checkout, signed webhooks, sweep-direct settlement. No custody account, no monthly fee.

01 / FLOW

Three steps from invoice to settled.

Every payment touches only the chain and a per-invoice address derived from your account. There's no Stabltap-controlled holding account collecting your customers' money.

STEP 01

Create an invoice

POST a USDT amount to /v1/invoices with your secret key. We return a unique BSC address and a hosted checkout URL — no JS to embed.

STEP 02

Customer pays

Customer scans the QR (EIP-681 deep-link) or copies the address. The gateway watches the chain and tracks confirmations live on the checkout page.

STEP 03

Swept to your treasury

After 12 confirmations we deliver a signed webhook and sweep the USDT to the treasury address you set. Network gas passed through; nothing held.

02 / WHAT YOU GET

Everything a real merchant needs. Nothing you don't.

Production-grade primitives without the multi-coin sprawl. Built around the rails most merchants actually use.

Sweep-direct settlement

Funds land at a per-invoice address and are swept on confirmation to the treasury address you control. We don't operate a pooled custody account.

BSC USDT today

BEP-20 USDT live on day one. Tron next, then ETH and TON. We'd rather ship one chain well than fifty chains badly.

Signed webhooks

HMAC-SHA256 with a per-merchant secret, replay-safe timestamps, six-attempt retry, dead-letter, and a one-click replay from the dashboard.

Hosted checkout

Server-rendered, mobile-ready, QR with EIP-681 wallet deep-link, live polling. No JavaScript SDK to integrate or version-pin.

Per-merchant routing

HD wallet derivation isolates every merchant under their own derivation branch. No mixed deposits, no shared address pool.

Operator console

Token-gated dashboard for hot wallet balance, sweep health, webhook deliveries, and recent errors. Enough to run the gateway without grepping logs.

03 / API

One curl away.

Bearer auth with your secret key, JSON in, JSON out. The hosted checkout URL comes back in the response — point your customer there.

POST /v1/invoices
# create an invoice curl https://stabltap.com/v1/invoices \ -H "Authorization: Bearer sk_live_…" \ -H "Content-Type: application/json" \ -d '{"amount_usdt":"49.99","description":"Order #1042"}' # 201 Created { "id": "inv_8f2a3c…", "amount_usdt": "49.99", "address": "0x9c1d4e…", "chain": "bsc", "status": "waiting", "expires_at": 1746234567000, "checkout_url": "https://stabltap.com/checkout/inv_8f2a3c…" }
04 / PRICING

Flat. Published. No sales call.

No monthly subscription, no setup fee. You pay only when you get paid.

Per-transaction
0.5%

Drops to 0.3% above $100k/month rolling volume — automatically, no negotiation.

  • 0.5% standard rateCharged on each settled invoice in USDT.
  • 0.3% above $100k / moRolling 30-day volume; tier change is automatic.
  • Network fees pass throughBSC gas to fund sweeps deducted from the payment, no markup.
  • No monthly fee, no minimumsRun zero volume one month, owe zero dollars.
05 / FAQ

Questions worth answering.

Including the ones most gateways skip.

What does "non-custodial" actually mean here?

You configure a treasury address per chain. After a payment confirms, the gateway sweeps the USDT to that address. You hold the keys to it; we never do.

Honest footnote: between confirmation and the next sweep tick, USDT sits at a per-invoice address derived from a Stabltap-managed seed — typically minutes. During that window the funds technically touch a Stabltap-controlled key. We sweep on a tight cadence, but it's not "your keys for every second." If that distinction matters to you, run BTCPay self-host.

Which chains and coins do you support?

BSC USDT (BEP-20) is the only rail today. Tron USDT is the next one we're shipping, then ETH and TON. We'd rather support a small set of stablecoin rails properly than carry 350 coins most merchants never touch.

How do you handle confirmations?

Twelve BSC blocks (~36 seconds) before an invoice is marked paid. The hosted checkout polls live and shows the customer the current confirmation count. Reorgs in that depth are vanishingly rare on BSC; we'll re-evaluate per chain when others come online.

What does the integration look like?

One POST /v1/invoices from your backend with the amount and an optional reference. We return a hosted checkout URL — redirect your customer there. We deliver a signed invoice.paid webhook to your endpoint when it confirms. No JavaScript SDK.

How are webhooks signed?

HMAC-SHA256 over timestamp.body, with a per-merchant secret you regenerate from the dashboard. The header is X-Stabltap-Signature: t=<unix>,v1=<hex>. Stale timestamps are rejected. Failed deliveries retry six times over ~7 hours, then dead-letter — replayable from the dashboard.

Do I need KYC?

Not in our current testing posture. Before we onboard real third-party merchants we'll bring KYC, sanctions screening, and tiered volume caps online. Treat the current build as closed beta: friendly merchants, small volumes, full transparency.

How do you compare to Cryptomus / NOWPayments / Coinbase Commerce?

Cryptomus and NOWPayments hold customer funds in pooled accounts under their own keys; Coinbase Commerce settles to a Coinbase wallet. We sweep direct to the treasury you control — closer to BTCPay's posture than to a custodial gateway. Pricing is in the same neighborhood as Cryptomus's headline (0.4–0.5%); we just don't make you negotiate to get there.

Is there a self-host option?

Not today. The hosted SaaS is the product. White-label deployments are something we'll quote on request once we're past closed beta — but we're not promising an open-source release. If self-host is a must-have, BTCPay Server is the right call.

Get started in two minutes.

Sign up, set a treasury address, generate an API key. The first invoice is one curl away.