TRC-20 is the standard for fungible tokens on the TRON blockchain. A TRC-20 token is a smart contract running in the TRON Virtual Machine (TVM) that exposes a fixed set of functions, such as transfer, balanceOf and approve, so any wallet or exchange can hold and move it without custom code. TRON’s developer docs describe it as fully compatible with Ethereum’s ERC-20 at the interface level.

USDT TRC-20 is Tether’s USD₮ issued on TRON under that standard. Its contract address is TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t. Sending it does not cost a flat fee: each transfer uses Energy and Bandwidth, which you either hold, rent or pay for by burning TRX. Current rental prices are compared on TRON energy rental services.

What the TRC-20 standard defines

Per TRON’s protocol interface page, any contract that implements these six functions and two events counts as a TRC-20 token:

  • totalSupply() returns the total supply.
  • balanceOf(address) returns an account’s balance.
  • transfer(to, value) moves tokens from the caller to another address.
  • approve(spender, value) lets another address, often a DApp contract, spend up to a set amount.
  • transferFrom(from, to, value) is how an approved spender moves those tokens.
  • allowance(owner, spender) shows how much of an approval is left.
  • The Transfer and Approval events are emitted when tokens move or an allowance changes.

name, symbol and decimals are optional, but nearly every wallet and explorer reads them. The docs note that decimals are usually 6 or 18. USDT on TRON uses 6, so 1 USDT equals 1,000,000 base units in the contract.

How TRC-20 relates to ERC-20 and the TVM

The TVM is the stack-based runtime every TRON node uses to execute smart contracts. TRON’s docs call TRC-20 “bytecode-compatible with ERC-20,” which means most Solidity ERC-20 code compiles and runs on TRON with minimal changes. The function names, arguments and events match ERC-20, so the token logic behaves the same way.

That shared interface is not the same thing as a shared network. A TRC-20 token lives on TRON’s ledger, and an ERC-20 token lives on Ethereum’s. Both use the same function names, but one chain cannot read the other’s balances.

TRC-10 vs TRC-20

TRON has an older token standard, TRC-10, and the two work in different ways:

TRC-10 TRC-20
Where it runs TRON protocol level, no TVM Smart contract in the TVM
Who can issue Any account, one token per account, 1,024 TRX creation fee Anyone who deploys a compliant contract
Transfer type TransferAssetContract transaction Call to the contract’s transfer function
Resources for a transfer Bandwidth (no contract execution) Bandwidth plus Energy for contract execution
Status in TRON docs Kept for existing tokens, not recommended for new ones Recommended standard for new fungible tokens

TRC-10 transfers also have one feature TRC-20 transfers lack. Sending TRX or a TRC-10 token to a new address activates it, but a USDT transfer does not.

What USDT TRC-20 is

Tether’s supported-protocols page lists “TRC20 Token via Tron Blockchain” and gives the TRON contract TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t. The same page says Tether tokens on different blockchains “should be treated equally and interchangeably.” One USD₮ on TRON represents the same claim as one USD₮ on Ethereum, but the two tokens exist separately on their own chains. For how redemption with the issuer works, see stablecoin redemption. For an overview of the asset, see USDT.

On TRONSCAN, the contract appears under the name TetherToken with the token name “Tether USD,” symbol USDT and 6 decimals. It was deployed on April 16, 2019.

What a TRC-20 address looks like

TRC-20 tokens use ordinary TRON addresses, since the standard is a contract type and not an address type. According to TRON’s accounts documentation, an address is 21 bytes and begins with the byte 0x41. Wallets and explorers show it in Base58Check form: 34 characters starting with a capital T, such as the USDT contract address above. The same address can also be written as 42 hex characters beginning with 41.

An Ethereum address, by contrast, starts with 0x. If the address someone gives you starts with 0x, they are not asking for a TRC-20 transfer.

Why a TRC-20 transfer uses Energy and Bandwidth

TRON charges for two resources instead of a single fee:

  • Bandwidth pays for a transaction’s size, at 1 Bandwidth per byte. Each activated account gets 600 free Bandwidth per day. Beyond that, the network burns 1,000 sun (0.001 TRX) per byte.
  • Energy pays for contract execution in the TVM. There is no free daily Energy. If the sender has none, the network burns 100 sun (0.0001 TRX) per Energy unit, a rate set by committee proposal 104 from August 29, 2025.

A TRC-20 transfer is a contract call, so it needs both resources. The amount of Energy also changes from one transfer to the next. TRON’s docs give about 64,000 Energy for a USDT transfer to an address that already holds USDT, and about 130,000 to an address that has never held any. Writing to an empty storage slot costs more, and USDT’s heavy use puts it at the maximum factor of TRON’s dynamic energy model.

Worked example (calculation, from the docs’ example transactions):

  • To an existing USDT holder: 64,285 Energy × 100 sun = 6,428,500 sun, about 6.43 TRX burned.
  • To an address with no USDT: 130,285 Energy × 100 sun = 13,028,500 sun, about 13.03 TRX burned.
  • Bandwidth: about 345 bytes. That costs nothing if the sender’s 600 free daily Bandwidth is unused, or 345 × 1,000 sun = 0.345 TRX if it has been used up.

Renting Energy instead of burning TRX cost about 1.1 to 3.1 TRX for 65,000 Energy for one hour in late September 2026, depending on the provider. Some providers, including TronZap, also rent Bandwidth. Compare current offers on the TRON energy page. For the resource model itself, see TRON energy vs bandwidth. If a transfer fails for lack of resources, see TRON out of energy.

How to verify a TRC-20 token on TRONSCAN

Fake tokens can copy USDT’s name, symbol and logo, but they cannot copy its contract address. Check the token before you accept or send it:

  1. Copy the token’s contract address from your wallet or the transaction.
  2. Search for it on tronscan.org. For USDT, the address must match TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t exactly, as listed on Tether’s own page.
  3. Open the contract tab and check whether the source code is verified. TRONSCAN verification compiles the published source code and compares it with the bytecode on-chain. If they match, the page shows the source code.
  4. Compare the token details, such as the name, symbol, decimals and issuer, with what you expect.

A verified contract only proves that the published code matches what is deployed. It does not prove the token is what it claims to be. The contract address is the real test.

TRC-20 USDT vs ERC-20 USDT

The network you send on must match the network the recipient expects. USDT sent from TRON to a 0x Ethereum address, or from Ethereum to a T address, does not arrive as ordinary USDT on the other chain. Exchanges and wallets show the network next to the deposit address for this reason.

The two networks also charge fees in different ways. On TRON, the fee depends on Energy and Bandwidth, which you pay for in TRX or supply yourself by staking or renting. On Ethereum, fees are paid as gas in ETH. Either way, the sender needs some of the chain’s native coin, not just USDT. For choosing between chains, see network selection and payment cost. For a step-by-step transfer on TRON, see how to send USDT on TRON.