USDT between networks

USDC on Ethereum, Base, Solana and Polygon: native vs bridged

Contents
  1. Four networks, four contracts, one issuer
  2. Native vs bridged: the Polygon case
  3. CCTP: Circle's own cross-network mechanism
  4. Three ways to move 1,000 USDC from Ethereum to Polygon
  5. When the destination is not USDC
  6. Worked example: a Base balance that has to become USDT on TRON
  7. Checklist before you move USDC
  8. FAQ

USDC looks like one token. Your wallet shows "USDC" on Ethereum, on Base, on Solana and on Polygon, each at a dollar. Underneath, those are four separate tokens with four contract addresses, all issued by Circle — and on Polygon there is a fifth one, USDC.e, that carries the same name, is not issued by Circle, and is the cause of most USDC confusion. This post gives the contract list, explains native versus bridged, describes Circle's own cross-network mechanism in one paragraph, and shows how a cross-network swap differs from a bridge and an exchange.

The contract addresses and Circle's statements below were checked on Circle's developer documentation and blog on 12 October 2026.

Four networks, four contracts, one issuer

Circle issues USDC natively on each network it supports; its contract-address page listed 38 mainnet networks on 12 October 2026. "Natively" means Circle itself deploys the contract and mints and redeems the token there. The four networks this site moves USDC on are:

NetworkNative USDC contract (Circle)Address formatFee coin
Ethereum0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB480x…, 42 charactersETH
Base0x833589fCD6eDb6E08f4c7C32D4f71b54bdA029130x…, 42 charactersETH
SolanaEPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1vbase58, 32–44 charactersSOL
Polygon PoS0x3c499c542cEF5E3811e1192ce70d8cC03d5c33590x…, 42 charactersPOL

Three of the four share the 0x format, and one private key gives the same address on Ethereum, Base and Polygon, so "send USDC to 0xAb12…" is not yet an instruction: the sender must know which network the receiver reads. Solana is caught by format — base58 cannot be pasted into an EVM form — but the three EVM networks are not.

A balance on one contract does not exist on the others: 500 USDC on Base is 500 units of the Base contract, and nothing on Ethereum knows about it. Moving it means something has to take the token in on one network and pay it out on the other. The token's page on this site is USD Coin (USDC).

Native vs bridged: the Polygon case

Before Circle launched native USDC on Polygon PoS, the USDC people used there was a bridged token: USDC locked on Ethereum in the Polygon bridge, with a copy minted on Polygon. Circle's blog post announcing native USDC on Polygon (published 10 October 2023) names the bridged token USDC.e, gives its contract as 0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174, and says plainly: "Bridged USDC (USDC.e) is not issued by Circle." The same post describes native USDC as "officially issued by Circle and is always redeemable 1:1 for US dollars."

So on Polygon there are two tokens that both say "USDC" in many wallets:

Native USDCUSDC.e
Contract0x3c499c542cEF5E3811e1192ce70d8cC03d5c33590x2791Bca1f2de4661ED88A30C99A7a9449Aa84174
Issued byCircleThe Polygon PoS bridge, backed by USDC locked on Ethereum
Redeemable from CircleYesNo — Circle's post says its Mint and APIs stopped supporting USDC.e
Symbol in wallets and explorersUSDCUSDC.e, sometimes still shown as "USDC" by older interfaces
What this site movesYes — the payout on USDC ERC-20 → USDC Polygon is the native contractNo

The practical rule: on Polygon the name is not enough, the contract is. Open the token in your wallet or on Polygonscan: …3359 is native, …4174 is USDC.e. They trade close to each other, but a service that expects native USDC will not credit USDC.e.

The pattern is general — Circle's contract page notes a USDC.e on X Layer with the same wording — wherever a network had a bridge before Circle arrived. For Ethereum, Base and Solana, Circle lists one native contract each and no bridged variant; the risk there is a copied name on a different contract, which the same check catches.

CCTP: Circle's own cross-network mechanism

Circle operates a Cross-Chain Transfer Protocol, CCTP, which it describes as a permissionless on-chain utility that "natively transfers USDC across blockchains using burn-and-mint": USDC is burned on the source network, an attestation service run by Circle signs off on the burn, and the same amount is minted on the destination network, so no bridged copy is created. On 12 October 2026 Circle's documentation described two speeds — a Fast Transfer of about 8 to 20 seconds and a Standard Transfer of 15 to 19 minutes on Ethereum and its layer-2 networks — with the fee deducted from the transferred amount. Wallets, bridges and applications use CCTP underneath more often than people use it directly; it is the mechanism to prefer when you want native USDC to arrive as native USDC and you operate both ends yourself.

Three ways to move 1,000 USDC from Ethereum to Polygon

The same 1,000 USDC, three ways. Where a cost changes daily, this says where to read it instead of printing a figure.

An exchange account. Deposit 1,000 USDC on Ethereum to the exchange's USDC deposit address (network: Ethereum), wait for the credit, then withdraw USDC with network Polygon to your 0x address. The withdrawal fee is fixed and shown on the withdrawal page. You need an account and two waits. Check that the exchange's Polygon withdrawal pays native USDC, not USDC.e.

A bridge or a CCTP-based transfer. Connect an Ethereum wallet, approve the contract to spend USDC, burn or lock 1,000 USDC, wait for the attestation or the bridge's confirmation count, then receive or claim on Polygon. You need a wallet on both networks, ETH for the Ethereum transactions and POL if a claim is required. Check that what arrives is the contract ending …3359: CCTP mints native USDC by design; an older bridge may pay USDC.e.

A swap between two addresses. Open USDC ERC-20 → USDC Polygon, enter 1,000, paste your Polygon 0x address, and send 1,000 USDC on Ethereum to the one-time 0x deposit address the page shows. Ethereum needs 15 confirmations, about 4–10 minutes with processing. The payout is native USDC on Polygon to your address. You need an Ethereum wallet with a little ETH. Check "You get" before sending — it already has the payout's network fee taken out — and that the Polygon address is the one you meant, since it is the same string as your Ethereum address.

Exchange accountBridge / CCTP-basedSwap between two addresses
Transactions you sign1 (the deposit)2–3 (approve, burn or lock, sometimes claim)1 (the deposit)
Fee coins you needETHETH, and POL for a claimETH
What arrives1,000 minus the fixed withdrawal fee — native or USDC.e per the exchange's notes1,000 minus the protocol fee, as native USDC (CCTP) or per the bridge's contractThe "You get" figure, as native USDC at …3359
TimeMinutes to hours, two queuesSeconds to about 20 minutes (CCTP, per Circle's page), longer for other bridgesAbout 4–10 minutes plus the payout
Rate1:11:1Floating, fixed at the 15th confirmation; close to 1:1 for USDC to USDC

Why the swap quotes a floating rate for a dollar token to the same dollar token is explained in Floating rate: why the estimate and the payout differ. For USDC to USDC the difference is small, and the payout network fee is normally the larger part of what you give up.

When the destination is not USDC

Often the point of moving USDC is to end up with something else: USDT on TRON for an invoice, Bitcoin, SOL. A cross-network swap does the token change and the network change in one step, because it sells one token and buys another rather than bridging a copy. The routes that start from USDC on this site, with the confirmations the deposit needs:

FromToDeposit confirmationsTypical time
USDC on EthereumUSDT TRC-2015 on Ethereum4–10 min
USDC on EthereumBTC15 on Ethereum4–10 min plus the Bitcoin payout
USDC on EthereumSOL15 on Ethereum4–10 min
USDC on BaseUSDT TRC-202 on Base2–5 min
USDC on SolanaUSDT BEP-201 on Solana2–5 min

And in the other direction, USDT TRC-20 → USDC ERC-20 and BTC → USDC ERC-20 pay out native USDC on Ethereum at 0xA0b8…eB48. The full list is on the pairs page.

Worked example: a Base balance that has to become USDT on TRON

You were paid 250 USDC on Base. The person you owe wants USDT on TRON. There is no transfer that does this, and going through Ethereum first would mean a bridge plus a second step.

  1. Open USDC Base → USDT TRC-20 and enter 250. Read "You get" in USDT and the network fee below it.
  2. Paste the receiver's T… address (34 characters). The form checks it is a TRON address.
  3. Send 250 USDC on Base — the token at 0x8335…2913 — from your wallet to the one-time 0x deposit address. The transaction is paid in ETH on Base, so the wallet needs a little.
  4. Base needs 2 confirmations; the whole thing is about 2–5 minutes. The payout is a TRC-20 transfer to the receiver's address.
  5. Send the receiver the Tronscan hash from the status page, because the USDT arrives from a payout address, not from you; what to tell them is in How to pay someone whose USDT wallet is on a different network.

Checklist before you move USDC

FAQ

Is USDC on Base the same as USDC on Ethereum?

Same issuer, same name, same redemption promise, different token. Each lives on one network under its own contract. Circle lists both as native USDC, and a balance on one does not exist on the other.

My Polygon wallet shows USDC. How do I know if it is native or USDC.e?

Open the token's details and read the contract. Native USDC on Polygon is 0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359; USDC.e is 0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174. Some interfaces label both "USDC", so the contract is the only reliable test.

Can I send USDC.e to a swap route that expects native USDC?

No. The route is built for the native contract; a deposit of a different token is not recognised as that deposit. Convert USDC.e to native USDC first, on Polygon, through an application that supports both, then use the route.

Why would I use a swap rather than CCTP?

CCTP is the cleanest way to move native USDC between two networks when you run wallets on both and will sign the transactions. A swap covers what CCTP does not: a different destination token, a payment straight to someone else's address, or no second wallet and no claim transaction.

Does Circle charge for moving USDC between networks?

On 12 October 2026 Circle's CCTP documentation said the fee is deducted from the transferred amount; the figure is on Circle's pages and changes. Exchanges charge a withdrawal fee; a swap shows its payout network fee in the form.

What happens if I send USDC on Polygon to a 0x address while my wallet says Ethereum?

If it is your own self-custody address, the USDC is there on Polygon: switch the wallet's network and add the token. If it belongs to an exchange, it is a wrong-network deposit and the exchange decides. The cases are in Sent USDT to the wrong network and apply to USDC in the same way.