Contents
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:
| Network | Native USDC contract (Circle) | Address format | Fee coin |
|---|---|---|---|
| Ethereum | 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 | 0x…, 42 characters | ETH |
| Base | 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 | 0x…, 42 characters | ETH |
| Solana | EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v | base58, 32–44 characters | SOL |
| Polygon PoS | 0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359 | 0x…, 42 characters | POL |
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 USDC | USDC.e | |
|---|---|---|
| Contract | 0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359 | 0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174 |
| Issued by | Circle | The Polygon PoS bridge, backed by USDC locked on Ethereum |
| Redeemable from Circle | Yes | No — Circle's post says its Mint and APIs stopped supporting USDC.e |
| Symbol in wallets and explorers | USDC | USDC.e, sometimes still shown as "USDC" by older interfaces |
| What this site moves | Yes — the payout on USDC ERC-20 → USDC Polygon is the native contract | No |
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 account | Bridge / CCTP-based | Swap between two addresses | |
|---|---|---|---|
| Transactions you sign | 1 (the deposit) | 2–3 (approve, burn or lock, sometimes claim) | 1 (the deposit) |
| Fee coins you need | ETH | ETH, and POL for a claim | ETH |
| What arrives | 1,000 minus the fixed withdrawal fee — native or USDC.e per the exchange's notes | 1,000 minus the protocol fee, as native USDC (CCTP) or per the bridge's contract | The "You get" figure, as native USDC at …3359 |
| Time | Minutes to hours, two queues | Seconds to about 20 minutes (CCTP, per Circle's page), longer for other bridges | About 4–10 minutes plus the payout |
| Rate | 1:1 | 1:1 | Floating, 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:
| From | To | Deposit confirmations | Typical time |
|---|---|---|---|
| USDC on Ethereum | USDT TRC-20 | 15 on Ethereum | 4–10 min |
| USDC on Ethereum | BTC | 15 on Ethereum | 4–10 min plus the Bitcoin payout |
| USDC on Ethereum | SOL | 15 on Ethereum | 4–10 min |
| USDC on Base | USDT TRC-20 | 2 on Base | 2–5 min |
| USDC on Solana | USDT BEP-20 | 1 on Solana | 2–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.
- Open USDC Base → USDT TRC-20 and enter 250. Read "You get" in USDT and the network fee below it.
- Paste the receiver's T… address (34 characters). The form checks it is a TRON address.
- 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.
- Base needs 2 confirmations; the whole thing is about 2–5 minutes. The payout is a TRC-20 transfer to the receiver's address.
- 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.