How to sweep USDT (TRC-20) from many deposit wallets: what it costs and four ways to pay for the energy
Short answer: every sweep is a normal USDT transfer() signed by the deposit address, and TRON charges it energy (about 65,000 to a treasury that already holds USDT) and bandwidth. Without energy the address burns about 6.5 TRX, so it needs TRX first. You can fund each address and burn, stake TRX and delegate energy, rent energy per sweep, or send the signed sweep to a relay such as TronTransfer, which rents the energy and charges the fee from one prepaid balance.
If you run a payment gateway, an exchange-style platform or a card program, each customer gets their own TRON deposit address. The USDT arrives there, and then you have to move it to your treasury. That second step is the expensive and fiddly one: every deposit address has to pay for its own transfer, in TRX, before a single USDT can move. Here is what a sweep actually costs, the four ways to pay for it, and how to keep the operations simple.
What a sweep is, and why it costs TRX
A sweep is an ordinary USDT (TRC-20) transfer() from a deposit address to your treasury. USDT is a smart-contract token, so the network charges each transfer two resources, both billed to the sender, which here is the deposit address:
- Energy: about 65,000 when the destination already holds USDT (your treasury), about 131,000 when it never has.
- Bandwidth: about 345 bytes. Every activated account gets a small free daily allowance, enough for roughly one transfer a day.
If the deposit address has no energy, TRON burns TRX from it instead: about 6.5 TRX (~$2.26) per sweep today. A deposit address that only holds USDT has no TRX to burn, so the transfer simply fails until someone pays.
Before the first sweep: the address must be activated
An address that has only ever received USDT may not exist as an account on TRON yet. An account that doesn’t exist can’t sign a transaction or receive delegated energy. It becomes active the first time it receives TRX. Look the address up on an explorer before its first sweep, and plan for that one-time step whichever method you use below.
Four ways to pay for sweeps
| Method | Cost per sweep | What your team has to run |
|---|---|---|
| Fund and burn: send TRX to each address, let the sweep burn it | ~6.5 TRX | A TRX top-up per address before each sweep, plus leftover TRX dust everywhere |
| Stake: stake TRX in a treasury, delegate energy to each address | Lowest per unit at steady volume, but capital is locked | Delegate before each sweep, reclaim after, watch the daily energy budget |
| Rent: buy energy per sweep from a rental market | Usually below burning | A rental integration, a wait for each delegation, and still bandwidth or TRX in the address |
| Relay API: send the signed sweep to a service that rents and broadcasts | ~5.48 TRX at TronTransfer (15–30% less at volume) | Sign the sweep and POST it; the fee comes off one prepaid balance |
Swipe the table sideways to see every column.
The cheapest per unit isn’t always the cheapest overall. With hundreds of deposit addresses, the expensive part is often the operations: topping up, delegating, reclaiming, retrying and reconciling every address.
How a relay sweep works
- Your system builds the USDT transfer from the deposit address to the treasury and signs it with that address’s key. It doesn’t broadcast it.
- It POSTs the signed transaction to
/v1/transferswith your API key. - TronTransfer charges the fee from your prepaid TRX balance, rents the energy, delegates it to the deposit address, waits until it’s on-chain, and then broadcasts your transaction.
- The answer carries the USDT transaction ID, the amount charged and your remaining balance.
The deposit address never pays the fee itself, so you don’t fund it with TRX for fees. Keep a little TRX in it anyway (under 1 TRX): bandwidth sponsorship is best-effort, and an address with no free bandwidth left burns about 0.3 TRX for the transfer. The API docs have a complete Node.js example.
Five habits that cut sweep costs
- Sweep into one long-lived treasury. A destination that already holds USDT costs about half the energy of a fresh one.
- Set a minimum. Each sweep costs roughly the same whatever the amount, so batch small deposits: sweeping 5 USDT for about $1.81 rarely makes sense.
- Sweep on a schedule. One pass every few hours is easier to monitor and reconcile than a sweep per deposit.
- Never resend blindly. If a request times out, look the transaction ID up before trying again. A signed transaction can only land once, but a second, newly signed one would move the money twice.
- Check where the money goes. Screen incoming deposits and your own treasury address with an AML check so a flagged deposit doesn’t mix into clean funds.
Is a relay right for you?
If you already run a staking or rental setup that works, keep it: per unit it can be cheaper. A relay fits when the operations are the bottleneck: many addresses, a small team, or a platform that wants one balance to watch instead of hundreds of wallets. Your keys stay with you either way, and every sweep remains an ordinary transaction you can verify on Tronscan.
See TronTransfer for business or get an API key.
Frequently asked questions
Why can't a deposit address send its USDT without TRX?
A USDT transfer is a smart-contract call, and TRON bills its energy and bandwidth to the sender. A deposit address that holds only USDT has no energy and no TRX, so the transfer can't be paid for. Someone has to give it energy (delegated by stake or rental) or TRX to burn.
How much energy does a USDT sweep use?
About 65,000 energy when the destination already holds USDT, such as a treasury wallet, and about 131,000 when it has never held USDT. Sweeping into one long-lived treasury address keeps every sweep at the lower amount. Bandwidth is about 345 bytes per transfer.
Does a deposit address need to be activated before it can sweep?
Yes. An address that has only received USDT may not exist as an account on TRON yet, and an account that doesn't exist can't sign a transaction or receive delegated energy. It becomes active the first time it receives TRX. Check the address on an explorer before your first sweep.
Is it cheaper to stake TRX for energy than to rent it?
Per unit, staking can be cheapest at steady high volume, but it locks capital and you still have to delegate energy to each address and reclaim it. Renting avoids the locked capital but adds an integration and a wait for each delegation. A relay API trades a higher per-transfer price for doing all of that for you.
Does TronTransfer hold the swept USDT?
No. Your system signs the sweep with the deposit address's own key. TronTransfer rents the energy, delegates it to that address and broadcasts exactly the transaction you signed, straight to your treasury. It never holds keys or funds.