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.
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"}'
{
"invoice_id": "inv_8f2c…",
"pay_address": "0x7a1f…9c04",
"amount": "100.50",
"currency": "USDT",
"status": "pending"
}
How it works
Live in four steps
No SDK to install, no contract to deploy. An account, a token, and one HTTP call.
Open your wallet
Generate a BSC wallet in the dashboard. The private key is shown once — it is yours to keep.
Issue an API token
Create a bearer token and copy your webhook signing secret from the Developer API page.
Create an invoice
Post an amount and your order_id. Show the returned pay address to your customer.
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,.failedor.cancelled
-
pendingQueued, nothing broadcast yet — still cancellable
-
processingFee split applied, transaction signed
-
senttx 0x9d3e…41af
-
confirmedReceipt 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.
X-Nova-Signature: hmac_sha256(raw_body, signing_secret)
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.