How It Works
A straightforward payment flow designed for reliability and transparency. From invoice creation to webhook delivery, every step is deterministic.
The Complete Payment Flow
Five steps from invoice creation to payment confirmation. No complexity, no guesswork.
Create Invoice
Merchant sends API request with amount, network, and callback URL
Customer Pays
Customer sends exact USDT amount to the provided wallet address
Blockchain Detection
Our watchers detect the transfer and wait for confirmations
Exact Match
System verifies network, address, and exact amount match
Webhook Sent
HMAC-signed webhook delivered to your callback URL
Create an Invoice via API
Your backend makes a simple POST request to create an invoice. Specify the USDT amount, blockchain network, and where to send the payment confirmation webhook.
- Amount specified to 4 decimal places for exact matching
- Configurable expiry time (5 minutes to 2 hours)
- Custom metadata attached for your reference
{
"reference": "ORDER-12345",
"assetCode": "USDT_TRC20",
"amountUsdt": 150.0000,
"expirySeconds": 1800,
"callbackUrl": "https://your-site.com/webhook",
"metadata": {
"orderId": "12345",
"customerId": "user-001"
}
}
Send exactly
150.0000 USDT
on Tron Network (TRC20)
To address:
TXyz123...abc456
Customer Sends Payment
Redirect your customer to the payment page or embed the payment details in your own UI. The customer sends the exact USDT amount to the provided address.
- QR code for easy mobile wallet scanning
- Copy buttons for address and amount
- Live countdown timer shows remaining time
- Clear network instructions prevent errors
Transaction Detected on Chain
Our blockchain watchers continuously monitor for incoming transfers to your wallet addresses. Once detected, we wait for the required number of confirmations before proceeding.
20
TRC20 confirmations
12
ERC20 confirmations
15
BSC confirmations
Transaction Log
Transfer detected
Block #45,892,341
20 confirmations reached
~60 seconds elapsed
Queued for matching
Processing...
Match Verification
✓ All conditions met - Invoice confirmed
Four-Point Verification
Every payment must pass all four verification checks. This strict matching eliminates ambiguity and ensures you always know exactly which invoice was paid.
Why exact match?
Unlike systems that guess which payment belongs to which order, exact matching provides deterministic results. No underpayment handling, no overpayment refunds, no confusion. The amount either matches exactly, or it doesn't.
Secure Webhook Notification
Once payment is confirmed, we send an HMAC-signed webhook to your callback URL. The signature lets you verify the webhook authenticity.
- HMAC-SHA256 signature in X-Webhook-Signature header
- Automatic retries with exponential backoff
- Up to 10 retry attempts over several hours
- Manual retry available from dashboard
{
"invoice_reference": "ORDER-12345",
"merchant_id": "uuid",
"status": "confirmed",
"asset_code": "USDT_TRC20",
"payout_address": "TXyz123...abc456",
"amount_usdt_exact": "150.0000",
"tx_hash": "abc123...def789",
"metadata": {
"orderId": "12345",
"customerId": "user-001"
},
"paid_at": "2024-01-15T14:32:00Z"
}
Webhook Retry Schedule
If your endpoint is temporarily unavailable, we'll keep trying with increasing delays.
30s
Retry 1
1m
Retry 2
2m
Retry 3
4m
Retry 4
...
Up to 1hr
After 10 failed attempts, the webhook is marked as failed. You can manually retry from the dashboard.
Common Scenarios
Understanding how the system handles different situations.
Invoice Expires
If the customer doesn't pay before the expiry time, the invoice status changes to "expired". Any payment received after expiry will not be matched. The customer should contact you for a new invoice or refund arrangements.
Wrong Amount Sent
If the customer sends a different amount (even by 0.0001 USDT), the payment won't match any invoice. The funds go directly to your wallet, but you'll need to handle reconciliation manually. This is why we emphasize "exact amount" on the payment page.
Wrong Network Used
If a customer sends USDT on the wrong network (e.g., ERC20 instead of TRC20), the payment won't be detected by the correct watcher. The funds may still arrive at your address if the address format is compatible, but won't auto-match. Always verify network clearly.
Multiple Payments
Each invoice can only be confirmed once. If a customer accidentally sends the same amount twice, only the first matching payment confirms the invoice. Subsequent payments go to your wallet but won't trigger duplicate confirmations.
Ready to Accept USDT Payments?
Create your account in minutes and start accepting payments today.