What a USDT withdrawal costs on chain, and how to price yours
A business that pays out USDT on TRON has to set a withdrawal fee, and usually a minimum as well. On chain, each withdrawal costs the sender one of two amounts of energy, 64,285 units or 130,285 (the 6.5 TRX and 13.1 TRX wallets quote, when the energy is burned), and the recipient's USDT balance decides which. A flat fee has to be priced against a mix of the two, and which figure a given recipient will cost can be read before anything is sent.
Two figures, and the recipient picks one
A USDT withdrawal is a call to the USDT contract's transfer function, and the network meters the call in energy. On 7 September 2026 we ran the same transfer against a node's own copy of the chain, broadcasting nothing, to four kinds of recipient. To an address that already held USDT the call used 64,285 units. To an address holding none it used 130,285. The balance alone decided it. Whether the address had ever been activated made no difference, and a balance of one unit, the smallest amount the token can hold, was enough for the lower figure (where the two numbers come from).
The amount sent does not enter into it. On 27 October 2026 we repeated the call from one sender at two amounts, one unit and a thousand USDT, to one recipient holding USDT and one holding none. All four answers came back as the same two figures, to the unit. The one transfer of ours we measured on its receipt, sent on 2 September 2026 to an address with no USDT, spent 130,285 units on chain, the figure the calls predict.
| One USDT transfer | Recipient holds USDT | Recipient holds none |
|---|---|---|
| Energy used, at one unit or a thousand USDT | 64,285 units | 130,285 units |
| That energy burned at the network's 100 sun a unit | 6.4285 TRX | 13.0285 TRX |
| Bandwidth billed, about 345 bytes, burned once the free allowance is spent | 0.345 TRX | 0.345 TRX |
The round figures wallets quote, 6.5 TRX and 13.1 TRX, are the same burn at about 65,000 and about 131,000 units, 715 units above what the call used. Bandwidth is metered on the size of the transaction, which does not change with what the recipient holds. Each account gets 600 bytes a day for free, which covers about one transfer, so a sender making withdrawals all day pays for the bytes of nearly every one of them (energy against bandwidth).
Where the energy comes from sets the floor
The burned figures are the cost from a wallet that holds no energy, where the network takes TRX for every unit. A sender can bring energy of its own instead, by staking or by renting, and the floor under a withdrawal fee is whichever of the three the sender uses.
Staking TRX gives an account a daily share of the network's energy, and the formula is one division, worked through in how much TRX to stake for energy. A stake has no price per transfer. Its cost is the capital it locks, which comes back fourteen days after you unstake, and an allowance that does not carry over: a quiet day's energy is gone at the end of the day.
Renting delivers the same energy to the sending wallet for a few minutes or an hour. Our price for it is one price per lease, recomputed against the market every few minutes, so the live figure is on the pricing page. The table below holds one reading of the API, taken at 21:47 UTC on 27 October 2026.
| Energy for one withdrawal | Recipient holds USDT | Recipient holds none |
|---|---|---|
| Burned by the network | 6.4285 TRX | 13.0285 TRX |
| Rented here on 27 October 2026, five-minute lease | 1.755 TRX | 3.537 TRX |
| Rented here on 27 October 2026, one-hour lease | 1.95 TRX | 3.93 TRX |
| Staked, at the parameters of 7 September 2026: TRX locked to cover one such withdrawal a day, at the nominal 65,000 and 131,000 units | 6770 TRX | 13645 TRX |
The rented rows are the typical_price_trx that GET /v1/tariff gave for each lease on sale. Both leases deliver the same energy and differ only in how long it stays on the wallet. Bandwidth comes on top of every row in the same way. The staked row is capital locked once, and it grows with volume: ten withdrawals a day need about ten times that stake.
One flat fee against two costs
A withdrawal fee is usually one number, and the cost under it is one of two. A flat fee can price the worst case, charging every withdrawal as if it went to an empty balance. That covers every recipient, and it collects too much from each one who already held USDT. Or it can price the mix: the smaller figure, plus the difference between the two times the share of recipients who hold no USDT. That share sets the average, and the payer is the only one who can supply it.
We did not measure that share. The rows below are worked examples at two stated shares, one recipient in ten and one in four, with both ends beside them. They are arithmetic on the figures above and describe no real book.
| Worked example: share of recipients holding no USDT | Average energy burned per withdrawal | Average on the five-minute lease, read 27 October 2026 |
|---|---|---|
| None of them | 6.4285 TRX | 1.755 TRX |
| One in ten | 7.0885 TRX | 1.9332 TRX |
| One in four | 8.0785 TRX | 2.2005 TRX |
| All of them | 13.0285 TRX | 3.537 TRX |
At one in ten, a fee priced on the worst case collects a little over one and four fifths of the average. At one in four it collects about one and three fifths. The ratios hardly change between the two columns, because in both the larger figure is about twice the smaller. Pricing the mix carries the opposite risk: a fee set for one in ten loses money on a payout run where most recipients turn out to hold no USDT, and nothing in the fee shows that it happened.
Reading the kind before you send
POST /v1/estimate takes up to 500 recipients and returns a kind for each: single for an address that holds USDT, double for one that holds none, and custom for a contract. Every item carries its energy_units and price_trx, and the response adds total_trx for the run beside burn_cost_trx, what the same run would burn. The call reserves nothing and charges nothing. For one address at a time, GET /v1/address-check answers with expected_kind.
With two fees, the estimate decides which one applies to each withdrawal. With one fee, counting the double items across a month of estimates gives the share of your own book, which is the number the table above had to assume. A custom item is priced from a dry run of the contract's own transfer, so its energy is neither of the two figures and a flat fee says nothing about it.
The kind is read at one moment, and a recipient can change in between. An address that empties its USDT after the estimate costs the larger figure when the withdrawal lands, and a wallet holding energy for the smaller one burns the difference in TRX (failures that look like nothing). For a whole run, batch payouts, up to 500 at a time covers the estimate and the warnings it returns per recipient.
Why withdrawals have a minimum
The cost is per transfer: one unit and a thousand USDT drew the same energy in our calls. A fee that covers it is therefore a fixed sum on every withdrawal, and as a share of the amount it grows as the amount shrinks. A minimum withdrawal is the amount below which that share is too large to pay out at all. The chain fixes the cost a minimum rests on: one of the two figures above, for a withdrawal of any size. Where the line goes is the payer's choice, and a withdrawal under it is refused outright.
What we did not measure
We have no realistic share of recipients without USDT for any book, our own included. The energy figures come from calls run against the chain's state without broadcasting, and only the larger one has been checked against a receipt of ours, the September transfer above. The two figures were the same on 7 September and on 27 October 2026. They are properties of the USDT contract and of the network's pricing, and either can change. The rented prices are a single reading, and the price follows the market.
Before you set a fee on your next payout run, see which of the two figures each recipient will cost, with nothing reserved: the kind per recipient in POST /v1/estimate →