USDT payout API on TRON: send many TRC-20 payouts with one signature each
Short answer: each payout is a USDT transfer() your hot wallet signs. TRON charges it energy: about 65,000 if the recipient already holds USDT and about 131,000 if it never has, so payouts to new wallets cost about twice as much. With TronTransfer's prepaid API you sign only the transfer, POST it with an API key, and the fee (about 5.48 TRX, or 10.76 TRX to a new wallet) comes off one TRX balance, 15% less after 100 transfers in 30 days and 30% less after 500.
Payroll in USDT, affiliate commissions, marketplace settlements, user withdrawals: once you send more than a handful of TRC-20 payouts a week, the network fee stops being a rounding error and starts being a line item. It also becomes an operations job, because every payout needs energy or TRX in the sending wallet. Here is how payout costs work on TRON, how to budget them, and how to run payouts through an API with one signature each.
What one payout costs
A USDT payout is a smart-contract call, and TRON bills it to the sending wallet in two resources:
| Recipient | Energy | Burned with no energy | Through TronTransfer |
|---|---|---|---|
| Already holds USDT | ~65,000 | ~6.5 TRX | ~5.48 TRX |
| Never held USDT | ~131,000 | ~13.1 TRX | ~10.76 TRX |
Swipe the table sideways to see every column.
Bandwidth adds about 345 bytes per transfer. Each activated wallet gets a small free daily allowance, which a busy hot wallet uses up after its first payout of the day.
Budgeting payouts
- Split your list by recipient type. Repeat payees, such as staff and long-term affiliates, usually already hold USDT. First-time withdrawals usually don’t, and cost about twice as much.
- Multiply by the live fee. For example, 400 payouts a month where a quarter go to new wallets: 300 at about 5.48 TRX plus 100 at about 10.76 TRX, before volume pricing.
- Apply the volume tier. At TronTransfer, accounts with 100 or more transfers in the last 30 days pay 15% less, and 500 or more pay 30% less.
- Set a minimum payout. A payout of a few USDT can cost more than a third of its value in fees. Many platforms set a minimum withdrawal or pass the network fee on.
How the prepaid API works
- Get a key at trontransfer.com/account and deposit TRX with your memo code.
- Sign the payout: build the USDT
transfer(recipient, amount)from your hot wallet, extend its expiration to about 5 minutes, sign it, and don’t broadcast it. - POST it to
/v1/transferswithAuthorization: Bearer <key>. We charge the fee from your balance, rent the energy, delegate it to your hot wallet, and broadcast once it’s on-chain. - Record the answer: the USDT transaction ID, what was charged, and your remaining balance.
There is no separate fee transaction, so each payout needs one signature and skips the fee-confirmation wait. The API docs have a complete Node.js example.
The answers to handle
| Answer | What it means | What to do |
|---|---|---|
ok: true | Broadcast and in a block | Mark the payout sent and store the transaction ID |
402 INSUFFICIENT_BALANCE | Balance below the current new-wallet fee. Nothing charged | Top up, then resend the same signed transaction if it hasn’t expired |
DUPLICATE | That exact transaction was already submitted | Look up its result; it’s never charged twice |
ENERGY_UNAVAILABLE | Energy couldn’t be supplied in time. Nothing was sent | Sign a fresh payout and retry later |
| No answer / timeout | Unknown | Look up the transaction ID before doing anything else. Never sign a second payout for the same person blindly |
Swipe the table sideways to see every column.
Safety checks before you pay
- Screen the recipient. The /recipient endpoint flags addresses on Tether’s blacklist and address-poisoning wallets. USDT sent to a blacklisted address can be frozen there.
- Compare the whole address. Look-alike addresses copy the first and last characters. Store payout addresses once and compare the full string, not the ends.
- Check larger payees. Run an AML check on new high-value recipients.
When an API is worth it
If you send a few payouts a week by hand, the web app is simpler: connect the wallet, enter the address and amount, and approve. Once payouts run from a backend, a bot or a payroll job, the prepaid API removes the fee transaction, the TRX top-ups and the energy management from every one of them. Your keys stay in your systems either way.
See TronTransfer for business or get an API key.
Frequently asked questions
Why do some USDT payouts cost twice as much?
A transfer to a wallet that has never held USDT has to create its balance in the USDT contract, which uses about 131,000 energy instead of about 65,000. User withdrawals often go to fresh wallets, so budget them at the higher price.
Can several hot wallets share one prepaid account?
Yes. Any wallet can sign the USDT transfer, and the fee always comes off the account balance, not the signing wallet.
What happens if a payout request times out?
Don't sign a new payout. Look up the transaction ID you already signed (for example with the /receipt endpoint or an explorer). A signed transaction can land only once, and resubmitting the same one is answered as a duplicate and never charged twice, but a newly signed transaction would pay the person again.
What if a payout fails?
If it never goes out and nothing was bought for it, the full charge returns to your balance automatically. Once energy or bandwidth was bought for it, or it was broadcast and failed on-chain, only the network cost we paid is kept and the rest is returned.
Do you hold our hot wallet keys?
No. Your system signs each payout and sends us the signed transaction. We rent the energy and broadcast exactly what you signed; we can't change the recipient or the amount.