
Error messages from TRON wallets are easy to misread. The same on-chain problem gets completely different wording in another wallet. The text TronLink shows is written by the wallet itself. The chain only returns a short error code, and the wallet turns that code into a sentence we can read. That is why the same failure looks different in OKX Wallet. It is also why copying the exact wording into a search box rarely finds you an answer.
The one that confuses people most is this. The wallet’s own wording is:
“The account is not activated and therefore cannot be used to transfer assets.”
Seeing it does not mean the wallet has gone wrong. Your address simply has no record on TRON yet.
Below are the six messages we run into most often, the underlying error code behind each one, and what to do about it. Five of them you can clear yourself, without asking anyone. We work on the TRON energy side, so address activation and out-of-energy errors are the ones we know best.
The wallet is only passing the message along. Every message you see stands for one of six error codes, and different codes have completely different root causes. Find the right code and the fix stops being guesswork.
| What you see in the wallet | The code behind it | What it means |
| “The account is not activated…” | CONTRACT_VALIDATE_ERROR, with the message “account does not exist” | TRON has no record of this address yet |
| “Out of energy” | OUT_OF_ENERGY | Execution started, then ran out of energy |
| “Bandwidth error” | BANDWITH_ERROR | Not enough bandwidth, or not enough TRX to cover a pre-broadcast fee |
| “Signature error” | SIGERROR | The key that signed does not match the sending address |
| “Transaction expired” | TRANSACTION_EXPIRATION_ERROR | The validity window passed before the node took it |
| “Duplicate transaction” | DUP_TRANSACTION_ERROR | This transaction ID is already known to the node |
Two of these codes get misjudged more than the rest, and the official documentation already settles both. BANDWITH_ERROR means the transaction failed before it was broadcast; it does not mean energy ran short. DUP_TRANSACTION_ERROR does not mean the transaction was packed into a block either.
A TRON address is essentially a key pair, and it can be generated offline. The record that holds a balance lives on-chain, and it is written only when the address first receives TRX. Until it is written, the address cannot sign, cannot broadcast a transaction, and has no free bandwidth. It also cannot receive energy delegated by someone else, which is the root reason renting energy to a new address fails.
Creating that on-chain record costs 1 TRX. The fee is burned, and it falls on whoever sends the first transfer, not on the new address. If the sender has no staked or delegated bandwidth, add another 0.1 TRX. The 600 free bandwidth points handed out each day cannot be used to create an account.
A TRC-20 deposit does not create that record. Your USDT is not lost: the token balance is stored inside the token contract, not in your address. It will most likely stay invisible and impossible to move until a TRX transfer activates the address.
One more thing to keep in mind before you start: activation does not come with energy. A freshly activated wallet still has zero, so its first USDT transfer needs rented TRON energy or staked TRX, like any other address.
The fix is one transfer, and it has to come in from outside the wallet.
To confirm it worked, paste the address into TRONSCAN. If the account page opens and shows a balance, the on-chain record exists. An address that comes back blank has not been activated, and what the wallet screen says makes no difference.
If the TRX has already gone out and the message is still there, look up the transaction ID before deciding whether to resend. A transfer that never made it into a block will not show up on TRONSCAN, and resending without checking usually means paying twice. I check the ID before every send. Ten seconds beats paying an extra fee.
These two look alike and are not.
OUT_OF_ENERGY happens after execution has started. TRON runs the contract, runs out of energy partway, and rolls back. The TRON energy used up to that point is still charged, and the TRX that paid for it is not refunded. A USDT transfer needs about 65,000 energy when the recipient already holds USDT, and about 130,000 when the recipient’s balance is zero. At 100 SUN per unit that is 6.5 TRX and 13.0 TRX, since 1 TRX is 1,000,000 SUN.
The fix: check how much energy the address has left before you send. The number to look at is energy limit minus energy used, not the figure on a rental platform’s order page. If it falls short, top up the energy or wait for it to recover.
BANDWITH_ERROR happens before execution, and buying more energy will not clear it. This one code covers several costs: the bytes of the transaction, plus the TRX needed for account creation, a memo, or a second signature. An activated address gets 600 free bandwidth points a day, recovering gradually over 24 hours. If you keep running short, how TRON bandwidth works and how to get more is the full explanation. One TRC-20 transfer is charged about 345 bytes of bandwidth, so the first one fits. A second transfer inside the same window runs over the allowance, and the excess burns at 1,000 SUN per byte. When we size an order for a client, we count the bytes as well as the energy.
Most people resubmit the moment either message appears. Neither message justifies a resend.
A TRON transaction carries an expiry, and node-built transactions default to about 60 seconds. Once that passes, the node drops the transaction instead of packing it. Resource fees settle only when a transaction is packed into a block, and this one never got that far, so nothing is charged. The move here is to build a new transaction, not to rebroadcast the old one.
DUP_TRANSACTION_ERROR is the more useful of the two. It means the node already knows this transaction ID: from its pending pool, from a block, or just from a hit in its broadcast cache. It does not prove the money moved, and it does not prove it did not. Rebroadcasting the same signed transaction keeps the same transaction ID, so resubmitting cannot execute twice. Look the ID up on TRONSCAN first. Both messages get taken for a double payment, and one lookup of about ten seconds tells you which case you are in.
Activation is one TRX sent in from outside; energy is a delegation to a public address. Keep those two clear in your head, because the messages above are exactly what scam support accounts open with.
Can I receive USDT on an address that is not activated?
Yes. The tokens are held by the token contract, so the deposit can land. You cannot send them out until the address has an account record.
Does activating the address make my first USDT transfer cheaper?
No. How much energy a transfer needs depends only on the recipient’s current USDT balance: 65,000 when they hold USDT, 130,000 when they do not. Activation makes no difference. An address active for years but sitting at zero today costs the same as one the chain has never seen.
I sent TRX and TronLink still says the account is not activated. Why?
Check the transaction ID on TRONSCAN. If it is not there, the transfer never reached a block, and the usual cause is the wrong network chosen at the exchange. If it is there, refresh the wallet.
Is it safe to resend after a duplicate transaction error?
Look up the transaction ID first. Resending the same signed transaction is safe and cannot execute twice, but building a fresh one can pay twice.
This article explains how the TRON network behaves as of 20 October 2026. Chain parameters are set by governance and can change. Fee figures are estimates for a standard USDT TRC-20 transfer and will differ for other contracts. Nothing here is financial advice, and we do not ask for seed phrases or private keys.