When people say their USDT is frozen, they usually mean one of two very different things. The first is an exchange hold: the coins sit in an account on a trading platform and the platform has restricted withdrawals. The second is an issuer blacklist: the address itself has been flagged inside the token contract, and the tokens cannot move on any wallet, on any platform, at any exchange. The first is an account problem. The second is on-chain and permanent until the issuer reverses it.
This piece is about the second one: what the contract actually does, and how you can read the evidence yourself.
The blacklist lives in the token contract
USDT is not a neutral token that anyone can move freely. The contract that defines it includes an administrator-controlled blacklist. In the verified contract source, published by Tether and verifiable in any block explorer, the key pieces are:
- A mapping that stores a boolean blacklist flag per address.
- An administrative function, addBlackList, that sets that flag. It can only be called by the contract’s administrator.
- A corresponding removeBlackList for reversals.
- A transfer rule that checks the flag: if the sender or recipient address is flagged, the transfer simply fails.
USDC works the same way in principle. Circle’s contract carries its own blacklist mapping and equivalent freeze functions. These are not hidden properties. They are part of the published source code of the two largest stablecoins, and they have been for years.
What a blacklisted address looks like on-chain
This is the part worth checking yourself, because every item is public data:
- The balance still shows. A blacklisted address keeps its token balance. Nothing is deleted when the flag is set. Look up the address in a block explorer and the USDT figure is still there.
- Transfers from or to that address fail at the contract level. Anyone, on any wallet, can attempt the transfer; the transaction reverts. On Ethereum the reverted transaction shows a status of failed in the explorer. On Tron, where most USDT circulates, the same revert shows in the transaction status field.
- The freeze is address-wide, not wallet-wide. It attaches to the address that holds the tokens, not to a specific app or platform. Moving the private key to different wallet software does not help, because the flag follows the address.
- There is a destroy function. The USDT contract also contains destroyBlackFunds, an administrative function that can zero the balance of a blacklisted address. It has been used after formal legal processes, most visibly in connection with seized funds. A balance that shows today is therefore not guaranteed to show forever.
One more detail that matters for evidence: setting the blacklist flag itself does not emit a visible transfer event. What is observable after the fact is the failed transfer attempts, each of which is a signed, timestamped public record showing that the address was blocked at contract level. Those failed transactions are often the first hard evidence an owner has that they are dealing with an issuer blacklist rather than an exchange hold.
Why issuers blacklist
Issuers blacklist addresses for reasons tied to their own obligations: law-enforcement requests, court orders, sanctions lists, and addresses linked to theft or fraud. Because the issuer controls the flag, the decision sits with the issuer, not with any exchange. That is also why unfreezing is not a technical problem. Nobody can patch the flag but the issuer, acting through its own governance and, usually, a legal process.
This is where we should be plain about what recovery is and is not. There is no secret technical route around a contract-level blacklist, and anyone selling one is selling fiction. A genuine path runs through formal channels: documented ownership evidence, engagement with the issuer’s compliance process, and where needed, instruction through licensed counsel. Recovery is never guaranteed, outcomes depend on the facts of each case, and nothing here is legal advice.
Scale, and a worked example
USDT is the largest stablecoin in circulation, with well over 100 billion tokens outstanding across Ethereum, Tron and other chains. On Ethereum the whole thing runs from one published contract, 0xdAC17F958D2ee523a2206206994597C13D831ec7, which anyone can read in a block explorer. Blacklisting has been used at real scale: in April 2022, Tether blacklisted the Ethereum addresses tied to the Ronin bridge hack, reported at around 30 million USDT at the time. The balances showed before and after the flag was set. The transfers failed from that point on. That is the blacklist working exactly as the contract is written, and those failed transactions are still sitting in the chain as public evidence. In the intake cases we review, we found that the 5 minute check above is usually all it takes to tell an exchange hold from a contract-level blacklist before anyone talks process.
How to tell which freeze you have, in five minutes
- If the tokens sit in an exchange account and the exchange shows a withdrawal restriction, that is an exchange hold. The on-chain balance is not yours yet; you are dealing with the platform.
- If the tokens sit in your own wallet, the balance shows, and transfers revert, that is a contract-level blacklist. The failed transaction is your evidence.
- If transfers from a specific platform fail but the same address transacts fine from elsewhere, look again: that is usually an exchange hold, not a blacklist.
The distinction decides what to do next, because the two situations have different processes and different timelines. If you confirm a contract-level blacklist on your own address, our intake can review the on-chain evidence with you: the address, the failed transactions, and the history that supports your ownership claim. We work in conjunction with licensed law firms, and the first step is simply establishing what happened on-chain.