If you work with crypto payments, you will see the word TRC20 everywhere. "Send USDT TRC20." "Our TRC20 address." "Only TRC20 deposits accepted." Many business owners nod along without being sure what it means. That is risky, because most lost crypto payments start with a network mix-up.
This guide explains TRC20 in plain words: what it is, how it differs from the coin TRX, how a TRC20 transfer actually works, and the checklist a business should follow before it accepts or sends TRC20 tokens.
#TRC20 in one sentence
TRC20 is a technical standard for tokens that live on the TRON blockchain.
That is all. It is not a coin. It is not a company. It is a set of rules that a token follows so that every wallet, exchange and app on TRON knows how to read its balance and move it.
Think of it like a plug shape. A device with the right plug works in any matching socket. A token built to the TRC20 standard works in any TRON wallet that supports TRC20.
#TRX vs TRC20 tokens
TRON has two kinds of money, and they behave differently.
| TRX | TRC20 tokens (USDT, USDC) | |
|---|---|---|
| What it is | The native coin of TRON | Tokens created by smart contracts on TRON |
| Price | Moves with the market | Stablecoins aim to stay at one US dollar |
| How a transfer works | A simple transfer between two accounts | A call to the token's smart contract |
| Network resources used | Mostly bandwidth | Bandwidth and energy |
| Same address? | Yes | Yes — the same TRON address holds both |
The last row matters most for a business. A TRON address starts with a capital T. That one address can hold TRX, USDT and USDC at the same time. You do not need a separate address per token.
#How a TRC20 transfer actually works
When someone "sends USDT TRC20", no coin physically moves between wallets. Here is what happens:
- The sender's wallet asks the USDT smart contract on TRON to move a balance from the sender's address to the receiver's address.
- The contract checks that the sender has enough USDT.
- The contract lowers the sender's balance and raises the receiver's balance in its own records.
- The network records this as a transaction with a unique ID (a transaction hash).
- Block producers add the transaction to a block, and more blocks are added on top of it. Each new block makes the payment harder to reverse.
Because a smart contract does the work, a TRC20 transfer needs energy, a TRON resource that pays for running contracts. If the sender has no energy, the network burns TRX to cover it. That is why sending USDT costs more than sending TRX, and why a wallet that has never held USDT costs more to send to. Our earlier post on USDT TRC20 payout fees explains energy and bandwidth in detail.
#Why "TRC20" must appear next to the coin name
USDT and USDC exist on many blockchains, not only TRON. The same coin name can mean a token on TRON (TRC20), on Ethereum (ERC20) or on another network. These are different tokens on different chains. They do not talk to each other.
If a customer sends USDT on another network to a TRON address, the payment does not arrive in the TRON wallet. Sometimes the funds can be recovered with effort. Often they cannot.
This is why every good crypto product writes the network next to the coin:
- "USDT (TRC20)" or "USDT on TRON" — clear.
- "USDT" alone — confusing, and a source of lost funds.
#What a TRC20 address looks like, and how to check it
A TRON address:
- starts with a capital T;
- uses letters and numbers, mixing upper and lower case;
- has a built-in checksum, so a single wrong character makes it invalid.
An Ethereum-style address starts with 0x. If a user pastes an address that starts with 0x into a TRON payout form, your app should stop them right away.
On our platform, payout requests are checked before they are sent. An address that is not a valid TRON address is refused, so money never leaves on a typo. You can see how payouts work on the payouts page.
#What TRC20 means for your product
#Receiving payments
Give each customer one permanent TRON address. It receives TRX, USDT and USDC. When a deposit lands and is confirmed, your system gets a signed webhook that names the token and the amount. Your code should credit every token you support, not only USDT. The wallets page shows how branded deposit addresses work.
#Sending payouts
Payouts go on-chain to any TRON address. The network fee is always charged in the token you send, so a USDT payout pays its fee in USDT. Each payout carries an idempotency key, so a retry after a timeout never pays twice. Live prices are on the pricing page.
#Moving between TRX and USDT
Some users hold TRX but need USDT, or the other way round. Swaps between USDT and TRX happen on-chain from the user's own address. See the swap page.
#A TRC20 checklist before you go live
Use this list before you open TRC20 payments to real customers:
- [ ] Every place a coin is shown also shows the network: "USDT (TRON)".
- [ ] Deposit screens show a QR code and the address in text, with a copy button.
- [ ] Payout forms reject addresses that are not valid TRON addresses.
- [ ] Your webhook handler credits USDT, USDC and TRX — and ignores tokens you do not support instead of crashing.
- [ ] Your webhook handler checks the signature before trusting any event.
- [ ] Balances are shown per token, never added into one "dollar" figure.
- [ ] Your help page tells users which exchanges they can withdraw from on TRON, and warns them to pick TRON as the network.
- [ ] You have tested deposits and payouts of each token in the sandbox.
#Common TRC20 mistakes
| Mistake | What goes wrong | Fix |
|---|---|---|
| Writing "USDT" without the network | Customers send on the wrong chain | Always write "USDT (TRON)" or "USDT TRC20" |
| Treating TRX and USDT as the same thing | Users expect a token balance to pay network costs | Explain that fees are charged in the token you send |
| Accepting any address format | A payout to a non-TRON address fails or is lost | Validate the address before sending |
| Crediting deposits before confirmation | A payment is shown as paid too early | Credit only on the confirmed webhook |
| Ignoring USDC deposits | A real payment looks unpaid | Handle every supported token |
#In summary
TRC20 is simply the token standard on TRON. USDT and USDC on TRON are TRC20 tokens; TRX is the native coin that powers the network. One TRON address holds all three. The rules that protect your business are short: name the network everywhere, validate addresses, credit only confirmed deposits, and treat each token as its own balance.
Want TRC20 wallets, payouts and swaps under your own brand, without running TRON nodes yourself? Sign up free and try every token in the sandbox today.