One contract per network, and no separate holding area for a deposit

Genuine USDT has one token contract per network: TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t on TRON and 0xdAC17F958D2ee523a2206206994597C13D831ec7 on Ethereum. A token that a wallet app shows as USDT but comes from any other contract is a copy of Tether's USDT. Under the TRC-20 and ERC-20 standards, a token keeps one balance per address, and an incoming transfer is added straight to it. No holding area exists where a deposit waits while you decide whether to trust it, so check the contract before you confirm the P2P trade.

A lookalike contract: a made-up example

A trader sends a transaction, and a wallet app labels it 'USDT received'. The counterparty points to the transaction hash as proof the money moved. The token contract behind that transfer is a separate one, deployed by someone else and named USDT so it looks identical in a wallet's token list. The transfer did happen on-chain, but the token is a copy. A trader who trusts the wallet app's label without opening an explorer and reading the contract field would release payment for a token that cannot be redeemed or traded as USDT anywhere that checks the contract address.

What Tronscan and Etherscan actually show you

Both explorers work the same way for this purpose. Search the transaction hash or the address, and the result page lays out everything you need to compare against what the counterparty told you.

  • The sender's address, the one that initiated the transfer.
  • The recipient's address, which should be yours if you're checking an incoming deposit.
  • The token contract address, which you match against Tether's official contract for that network.
  • The amount transferred, matched against the figure the counterparty quoted you.
  • The time of the transfer, useful for confirming it happened when they say it did.

The checks to run before you release the fiat

Run these checks before you confirm a P2P trade, ideally before the counterparty starts asking where the fiat is.

  • Ask for the transaction hash. A screenshot of a wallet balance cannot be looked up on an explorer.
  • Open Tronscan for a TRC-20 transfer or Etherscan for an ERC-20 transfer, and search that hash.
  • Read the token contract field and compare it character by character against TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t on TRON or 0xdAC17F958D2ee523a2206206994597C13D831ec7 on Ethereum.
  • Open the sender's own address page and scroll through its recent transfers. A wallet that only receives funds and passes them straight on, or one with almost no history, gives you nothing to judge the sender by. Treat that as a reason to run the next step and, if it still tells you nothing, to ask for a different transaction or decline.
  • For a second read on the address, run it through TrustSniffer's wallet checker, and check the live USDT freeze tracker to see whether the issuer has already blacklisted it.

What a clean check does not rule out

A matching contract and a normal-looking history tell you about the transfer itself. The explorer shows its mechanics (sender, recipient, contract, amount, time) and says nothing about where the funds were before they reached the sender's address, or why the sender held that balance.

If the contract matches, the token is genuine Tether USDT and the transfer happened as described. If the sender's history also looks ordinary and the freeze tracker shows no blacklisting, you have done what an explorer allows, and you can confirm the trade knowing the limit set out above: the origin of the funds stays unknown. Price and the counterparty's reliability outside this one transaction are separate questions. If the result is unclear, for instance a sender with a short history that points neither way, wait and ask for another transaction you can check.

Related reads: P2P USDT account frozen explains how a freeze can follow a trade that looked clean, is Tether traceable shows how to follow the seller's funds back hop by hop, and how to check if a USDT address is blacklisted adds the freeze-tracker lookup for each counterparty.

Frequently asked questions

How do I know if the USDT I received in a P2P trade is genuine?

Open the transfer on Tronscan or Etherscan and read the token contract field. Genuine USDT on TRON is TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t and on Ethereum it is 0xdAC17F958D2ee523a2206206994597C13D831ec7. If the contract differs, the token is a copy, whatever the wallet app calls it.

Is a screenshot of a wallet balance enough proof that the buyer paid?

Ask for the transaction hash instead. A screenshot cannot be looked up on an explorer, while a hash lets you check the sender, recipient, token contract, amount and time yourself.

What should I do if the sender's wallet has almost no history?

If the contract matches but the history looks unusual, wait before you release anything. A near-empty wallet, or one that only passes funds straight on, gives you nothing to judge the sender by. Ask for another transaction you can check.

Does a clean explorer check show where the funds came from?

The explorer shows the mechanics of the transfer (sender, recipient, contract, amount, time). It says nothing about where the funds were before they reached the sender's address, or why the sender held that balance.