CChainPay
Sign in

How to accept USDT (BEP20, BNB Smart Chain) payments

USDT on BNB Smart Chain is popular because transfers are fast and network fees are low. This guide shows the minimal integration with ChainPay: no registration and no API key.

The model

  1. Your backend asks ChainPay for a deposit address for each order or user.
  2. The payer sends USDT (BEP20) to that address.
  3. After 15 confirmations (the default on BSC) ChainPay sweeps the funds to your own wallet and calls your webhook.

You keep custody: the destination is your forwardAddress.

Create the address

curl -X POST https://api.chainpay.site/deposit-address \
  -H 'content-type: application/json' \
  -d '{
    "ticker": "bep20/usdt",
    "callbackUrl": "https://shop.example.com/crypto-webhook?token=SECRET",
    "forwardAddress": "0xYourOwnBscWallet...",
    "externalReference": "order-123"
  }'

Handle the webhook

When the deposit is confirmed, ChainPay sends a POST to your callbackUrl:

{
  "status": "confirmed",
  "externalReference": "order-123",
  "chain": "bsc",
  "tokenSymbol": "USDT",
  "tokenAddress": "0x55d398326f99059fF775485246999027B3197955",
  "isNative": false,
  "amount": "25.000000000000000000",
  "txHash": "0x…"
}

Tell the payer the network

Show the network next to the address: BNB Smart Chain (BEP20). A token sent on a different network does not arrive as a BEP20 deposit, so a clear label prevents most support requests.

Fees

The fee is 1% plus a small flat part priced from the real gas cost of the network. BSC gas is low, so smaller payments are practical than on TRON. See Pricing for current numbers and Networks for minimum values.

Related