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.

1

Create Invoice

Merchant sends API request with amount, network, and callback URL

2

Customer Pays

Customer sends exact USDT amount to the provided wallet address

3

Blockchain Detection

Our watchers detect the transfer and wait for confirmations

4

Exact Match

System verifies network, address, and exact amount match

5

Webhook Sent

HMAC-signed webhook delivered to your callback URL

1 Invoice Creation

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
POST /invoices
{
  "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

Expires in 29:45
2 Customer Payment

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
3 Blockchain Detection

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

Confirmed

20 confirmations reached

~60 seconds elapsed

Complete

Queued for matching

Processing...

In Progress

Match Verification

Network
USDT_TRC20
To Address
TXyz...456
Amount
150.0000
Not Expired
15:23 remaining

✓ All conditions met - Invoice confirmed

4 Exact Match Verification

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.

5 Webhook Delivery

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
Webhook Payload
{
  "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.