Table of Contents
Confirm the official USDC or USDT contract by copying the address from the issuer's registry for the named chain, then matching it character-for-character to the token page in the wallet or explorer. The ticker and logo are not the asset: a clone, a bridged wrapper, or a contract the issuer no longer redeems can still display USDC or USDT.
The ticker is a label. The contract is the asset.
Key Takeaways
- The ticker and logo are not the asset.
- Start the check at the issuer's official registry.
- Native USDC is a different contract from USDC.e.
- A deprecated Tether chain can still transfer tokens.
- Token name and decimal count are not proof.
Why the Ticker Is Not the Asset
Anyone can deploy a token named USDC or USDT. Explorers, wallets, and market-data sites will often show the same ticker and a similar logo.
The asset a treasurer can redeem, or that a custodian will credit, is the contract the issuer published for that chain. Everything else is a lookalike until the strings match.
A clone can transfer. A bridged wrapper can sit in a wallet with a green check.
Neither fact makes the token Circle-issued USDC or Tether-issued USDT.
Start at the Issuer Page
Do not search the explorer for "USDC" and pick the token with the largest supply. Do not copy an address from CoinGecko, a chat thread, or a wallet's default token list.
For USDC, open Circle's USDC contract addresses page and copy the mainnet row for the named chain. Circle's current Ethereum USDC is 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48; Base is 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913; Solana is EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v; Arbitrum is 0xaf88d065e77c8cC2239327C5EDb3A432268e5831; Polygon native USDC is 0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359.
For USDT, open Tether's supported protocols page and copy the USD₮ contract shown for that chain. Tether's transparency page reports circulation and reserves; it is not a substitute address book.
Addresses visible on Tether's supported-protocols page as of this writing include Ethereum USD₮ at 0xdac17f958d2ee523a2206206994597c13d831ec7, Tron at TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t, Avalanche at 0x9702230a8ea53601f5cd2dc00fdbc13d4df4a8c7, and Solana at Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB. For any other chain, copy the USD₮ string from that page rather than from a third-party list.
Re-copy the address on the day it is added to the approved-token file. Issuer pages are the living registry; a screenshot from last year is not.
A Working Checklist
Name the chain first, written out. "ETH" is not an instruction when the payable is USDC on Ethereum, and "USDT" is not an instruction when the destination is Tron.
Copy the official address from the issuer page into the approved-token file treasury already uses. Then open the wallet or explorer token page for the inbound or outbound token and compare the two strings.
On EVM chains, match the full hexadecimal string. Mixed-case checksum (EIP-55) is a convenience: a case-only difference is not a different contract, but a single changed character is.
Token name, symbol, and decimals are not proof. A clone can set the name to "USD Coin", the symbol to "USDC", and decimals to 6.
A verified-contract badge on an explorer is also not proof. Verification means the published source matches the bytecode, not that Circle or Tether issued it.
| Check | Pass | Fail |
|---|---|---|
| Named chain matches an issuer row | Circle or Tether lists that chain as a current USDC or USD₮ deployment | The chain is missing, or the issuer lists it only as historical |
| Contract string matches the issuer page | Every character matches the copied official address | Any substitution, extra prefix, or "close" address |
| Token is the native issuer contract | Label is USDC or USD₮ as published, with no wrapper suffix | USDC.e, bridged USDC, or a third-party lock-and-mint wrapper |
| Issuer still issues and redeems on that chain | The chain sits in the current registry | Tether lists the chain among protocols it no longer issues or redeems |
| Name, symbol, and decimals | Used only after the address already matches | Used as the primary check |
Native USDC Is Not USDC.e
Circle-issued USDC on a chain is the contract in Circle's table. A bridged representation, often labeled USDC.e, is a different token.
Circle states this explicitly for X Layer: the table entry is native USDC at 0xB6CEceAB302E2E4948951eE7843FC24E92933061, and a separate USDC.e exists that is not issued or backed by Circle. The same split appears on other networks that ran a bridged dollar before Circle deployed native USDC.
Native USDC on Ethereum and native USDC on Base are both Circle-issued. They are still different on-chain objects, and USDC on Ethereum versus L2s is a fee-and-routing question, not a substitute for the address check.
A custodian that credits only native USDC will reject or quarantine USDC.e even when the ticker matches. Treat a wrapper as a different instrument until the counterparty names it in writing.
Deprecated Tether Contracts Can Still Move
Tether's supported-protocols page splits current protocols from a deprecated set. Tether states it is no longer issuing or obligated to redeem Tether tokens on Kusama, Bitcoin Cash SLP, Omni Layer, EOS, and Algorand.
Those contracts can still transfer. A wallet will still show a balance, and an explorer will still print a hash.
What ended is the issuer relationship. A token that cannot be redeemed with Tether is no longer the claim that holds a dollar peg, which is the subject of what happens when a stablecoin issuer drops a blockchain.

EUR₮ has been wound down, and Tether is no longer obligated to redeem it. CNH₮ redemption ends on 20 February 2027.
A listed-but-deprecated address is still an official Tether contract in the historical sense. It is not a contract a treasury should treat as redeemable USDT.
Before You Allowlist or Accept Inbound
Treat a new token contract as a new bank account. Dual-control the string, store the issuer URL and the date it was copied, and refuse any address that arrived only by email or chat.
Do not allowlist a token because a supplier's invoice says "USDC" or "USDT." Name the chain, paste the issuer address, and require the supplier to confirm that same string out of band before the first test transfer — the step that precedes how to pay suppliers in USDC.

Do not book inbound as treasury cash until the received contract matches the allowlist. A lookalike credit is not a receivable.
Redemption is issuer-side. An unofficial contract cannot be cashed with Circle or Tether, which is why how to redeem a stablecoin for dollars starts from an eligible issuer token, not from a ticker.

If the inbound token is native USDC or current USDT on a supported chain, proceed under existing receive and payout controls. If it is USDC.e, a clone, or USDT on a deprecated chain, quarantine it and do not treat it as dollars.
Conclusion
How do you check the official USDC or USDT contract? Open the issuer registry for the named chain, copy the published address, and match it to the wallet or explorer token page.
The ticker is a label; the matching contract is the asset the issuer will redeem.
Reject clones, bridged wrappers, and deprecated-chain tokens even when they move. A transfer that clears is not a redemption right.
FAQs
1. Where is the official USDC contract published?
Circle publishes mainnet and testnet USDC addresses on its USDC contract addresses page. Copy the row for the named chain; do not use a search result or a market-data page as the source.
2. Where is the official USDT contract published?
Tether publishes current and deprecated protocol addresses on its supported-protocols page. Copy the USD₮ contract for that chain from that page, then confirm the chain is still in the current list rather than the historical list.
3. Is USDC.e the same as USDC?
No: native USDC is the Circle-issued contract in Circle's table. USDC.e is a bridged representation that Circle states, on X Layer and by the same logic elsewhere, is not issued or backed by Circle.
4. Can a deprecated Tether token still be sent?
Yes: Tether stopped issuing and redeeming on Kusama, Bitcoin Cash SLP, Omni Layer, EOS, and Algorand, but the contracts remain transferable. A moving token on a deprecated chain is not a redeemable claim.
5. Why are token name and decimals not enough?
A clone can copy the name, ticker, logo, and decimal count. Only a character-for-character match to the issuer's published address identifies the official contract.
This content is provided for informational and educational purposes only and does not constitute financial, investment, legal, or tax advice; no material herein should be interpreted as a recommendation, endorsement, or solicitation to buy, sell, or hold any financial instrument, and readers should conduct their own independent research or consult a qualified professional.