Home How it works Features Payouts API docs Help
Log In Get Started
USDT (BEP-20) on BNB Smart Chain — mainnet & testnet

Accept USDT. Settle on-chain.

A crypto payment gateway for merchants and developers. Create an invoice with one API call, we watch the chain for the exact payment, then fire a signed webhook the moment it confirms. Pay out to any address through the same API.

USDT BEP-20 only
REST Invoices & payouts
HMAC Signed webhooks
POST /api/v1/invoices
curl -X POST https://novapayments.online/api/v1/invoices \
  -H "Authorization: Bearer $NOVA_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"amount":"100.50","order_id":"order_123",
       "network":"mainnet",
       "ipn_callback_url":"https://shop.example/hooks"}'
201 Created
{
  "invoice_id": "inv_8f2c…",
  "pay_address": "0x7a1f…9c04",
  "amount": "100.50",
  "currency": "USDT",
  "status": "pending"
}
pending chain match confirmed webhook

How it works

Live in four steps

No SDK to install, no contract to deploy. An account, a token, and one HTTP call.

01

Open your wallet

Generate a BSC wallet in the dashboard. The private key is shown once — it is yours to keep.

02

Issue an API token

Create a bearer token and copy your webhook signing secret from the Developer API page.

03

Create an invoice

Post an amount and your order_id. Show the returned pay address to your customer.

04

Get the callback

We match the exact on-chain amount and POST a signed invoice.confirmed event.

What you get

Everything the payment flow needs

Deposits, payouts, custody choice and reconciliation — all against one wallet and one token.

Invoices matched on-chain

Each invoice waits for an exact-amount USDT transfer to your wallet. Unique order_id per account keeps your ledger clean.

Payouts with a safety net

Nothing broadcasts during your request. Payouts queue as pending, so a duplicate reference returns the original instead of paying twice.

Auto-forward, zero custody

Turn custody off and set a destination address. Every deposit forwards there automatically — no API call, exactly once per transaction.

Verifiable webhooks

Every callback carries X-Nova-Signature, an HMAC-SHA256 of the raw body keyed with your signing secret. Retries are tracked and replayable.

Gas without leaving

Swap USDT to BNB in the wallet via PancakeSwap, with a live quote and slippage floor, so payouts never stall for gas.

Testnet, same API

Send "network":"testnet" and build the whole flow on BSC Testnet before a single real USDT moves.

Payouts

Send USDT out
with a status you can trust.

Request a payout and a background worker takes it from there — broadcasting, then watching the receipt until the chain confirms it. Your integration only has to read one status field.

  • Idempotent by reference — safe to retry on a timeout
  • Cancel anything still pending; once broadcast it is locked
  • Gross amount, fee and net amount returned on every payout
  • Final states fire withdrawal.confirmed, .failed or .cancelled
Payout endpoint reference
wd_4b91…
50.00 USDT
confirmed
  1. pending
    Queued, nothing broadcast yet — still cancellable
  2. processing
    Fee split applied, transaction signed
  3. sent
    tx 0x9d3e…41af
  4. confirmed
    Receipt verified on chain, webhook delivered

The API

Eight endpoints.
That's the whole surface.

Everything is versioned under /api/v1 and authenticated with a bearer token. Reads are throttled at 300/min, invoice creation at 60/min, payout creation at 30/min.

Webhook verification
X-Nova-Signature: hmac_sha256(raw_body, signing_secret)
Full documentation
GET
/me
Account identity and wallet address
POST
/invoices
Create a deposit invoice
GET
/invoices
List invoices, paginated
GET
/invoices/{id}
Fetch one invoice and refresh chain sync
POST
/withdrawals
Request a USDT payout
GET
/withdrawals
List payouts, filter by status or network
GET
/withdrawals/{id}
Fetch by public id or your own reference
POST
/withdrawals/{id}/cancel
Cancel a payout that has not been sent

You hold the key

Your wallet's private key is displayed once at creation and never again. Keep custody in the dashboard, or switch it off and auto-forward every deposit to an address you control.

One transparent fee

A flat 2% of the amount you send, taken out of the total and shown as fee_amount and net_amount before anything leaves. No subscription, no per-invoice charge.

Runs without you

A minute-by-minute scheduler matches deposits, broadcasts payouts and drives auto-forward — so payments confirm whether or not anyone has the app open.

Start taking USDT today

Create an account, generate a wallet, and run the whole flow on testnet in minutes. Switch one field to go live.

Questions? Read the API docs or the Help Center.