
Your wallet blocks the transfer and shows one line: not enough bandwidth. Users come to me with this almost every week. So I have written the fix up here, starting with the point most guides never mention.
This error has nothing to do with energy. The problem is the size of the data the transaction carries. Bandwidth is what carries that data onto the chain. The message means your bandwidth cannot cover the data size of this transaction. One more thing to note: a charge can sit behind that message. No wallet breaks it out on its own line.
Before the steps, one point worth stating clearly. This is a fairly cheap error to fix on TRON. Where people actually lose money is getting the cause wrong.
The node returns this failure as BANDWITH_ERROR. That spelling is not a typo on my side. The protocol enum spells it without the second D. Clients have to match it as written.
The official description of this code surprises most people. It means the transaction failed before it was broadcast to the chain. It does not mean the account ran short of energy while the transaction was executing. TRON lists several costs behind it: bandwidth, creating a new account, a multi-signature transaction, and a memo. I go through them one by one in the next section.
Too little energy returns a different code, OUT_OF_ENERGY. That one appears only after the transaction has started running. So when a wallet says bandwidth, topping up energy will not clear it. We see users walk into that trap every week. Energy is a separate resource with its own rules, covered in what TRON energy is and how it works.
There is one more key mistake to correct here. Bandwidth is not used only for TRX transfers. A plain TRX transfer consumes bandwidth alone. A contract call consumes bandwidth and energy together. Sending USDT is a contract call, so a USDT transfer takes up bandwidth too. A USDT transfer runs about 350 bytes, against about 267 bytes for a plain TRX transfer.
The wallet shows one line of error. Several kinds of cost sit behind it. While writing this guide I called getchainparameters. I read the live values from the chain parameter endpoint.
| Cost | Chain parameter | Value today | When it applies |
| Bandwidth shortfall | getTransactionFee | 1,000 sun per byte, so 0.001 TRX | The transaction is larger than the bandwidth you have left |
| A brand-new account | getCreateNewAccountFeeInSystemContract | 1 TRX, burned | Your transfer is the first one to reach an address the chain has never seen |
| Bandwidth for that new account | getCreateAccountFee | 0.1 TRX, burned | The same case, but you hold no staked or delegated bandwidth |
| A second signature | getMultiSignFee | 1 TRX | The transaction carries two or more signatures |
| A memo | getMemoFee | 1 TRX | The transaction carries a note or memo |
The one most people overlook is the bandwidth cost attached to a new account. The 600 free bandwidth points that come with an address cannot be used to create an account. Only bandwidth from your own staked TRX counts. A delegation from another account counts too. That allowance, and what counts toward it, is explained in what TRON bandwidth is and how it works.
So a first transfer to a brand-new address gets no help from the free allowance. That transfer needs the 1 TRX account creation fee plus 0.1 TRX for bandwidth. Both are charged on top. Neither is taken out of the amount you are sending.
Every activated account gets 600 free bandwidth points a day, and one point covers one byte of transaction data. A plain TRX transfer takes up about 267 bytes. So the free allowance covers roughly two TRX transfers, with a small amount left over.
These 600 points are not reset in one go at midnight. They recover over a rolling 24-hour window, at about 25 points an hour. After about 11 hours you have enough for another small transfer. That is the difference between waiting until tomorrow and waiting until tonight.
Beyond the basic transfer data, two hidden items quietly make a transaction bigger. Each one costs extra.
First is the memo. The text you type into the memo field takes up bytes and eats into more of your bandwidth. More important, a flat 1 TRX is charged once a memo is attached. The fee is the same whether you write one word or a whole paragraph.
Second is the multisig case. If the wallet you use is a multisig account, every extra signature adds bytes. A multisig fee is charged on top of that.
Bandwidth belongs to the address, not to a single transfer. Every transaction you send from that address shares the same 600 free points. Votes, staking, resource delegations and contract approvals all draw on that allowance. That is why a transfer goes through in the morning and gets blocked by a bandwidth error at night. When one address sends all day, that allowance turns into a planning problem. How small teams plan bulk USDT payouts on TRON works through it at team scale.
Neither route needs a wallet, and neither needs anything installed. This is the check we run before our own transfers.
Copy this into a browser address bar and replace the address with your own:https://api.trongrid.io/wallet/getaccountresource?address=YOUR_T_ADDRESS&visible=true
Read freeNetUsed against freeNetLimit. That pair is your free bandwidth. Then read NetUsed against NetLimit, which is the total of free and staked. The same reply carries EnergyLimit and EnergyUsed, so one call checks both resources.
If the reply is {}, the address has no record on the chain. An unactivated address has no free bandwidth at all, so there is nothing to compare.
For a visual check, paste your T-address into the search box on tronscan.org. Then open the account page. The Resources section shows bandwidth used against the limit. No wallet connection, no signature, no seed phrase.
Three of these fixes only clear the current transaction. Staking TRX is different. It raises the limit itself, which cuts the problem off at the root.
Does “not enough bandwidth” mean I have run out of energy?
No. They are separate resources with separate error codes. A bandwidth shortage fails before broadcast. An energy shortage shows up as OUT_OF_ENERGY, and only after the transaction has started running.
Does a USDT transfer use bandwidth?
Yes. Sending USDT calls a contract, and a contract call consumes bandwidth and energy together. A USDT transfer is about 350 bytes. Topping up energy will not clear a bandwidth error on a USDT send. The energy the same transfer spends is a separate figure, and it is not fixed. See how much TRON energy a USDT transfer needs, and why it doubles.
Why does it fail when there is TRX in the wallet?
Because the balance has to cover the amount you are sending and every fee the transfer triggers. A 1 TRX send to a brand-new address can need about 2.1 TRX. That is 1 TRX for the new account, 0.1 TRX for its bandwidth, and the 1 TRX you are sending.
How do I get more bandwidth?
Three ways. Wait for the rolling refill, freeze TRX and select Bandwidth as the resource, or receive a bandwidth delegation from another account.
Can the free 600 points create a new account?
No. The daily free bandwidth cannot be used to create an account. Only bandwidth from staking, or from a delegation, is eligible.
The figures here are mainnet values at the time of writing. Chain parameters change by committee proposal, so re-read them before you rely on an exact number. This is not financial advice.