Stablecoin Transfer Fees
Side-by-side cost to send $500 of USDC or USDT across the major networks, right now. Most weeks Base or Arbitrum is the cheapest by a wide margin; mainnet only wins when you absolutely need L1 settlement.
USDC — $500 transfer
Cheapest right now
Optimism — $0.000115 to send $500 USDC
| Network | Est. fee | % of amount | Status | Confidence | |
|---|---|---|---|---|---|
| Optimism | $0.000115 | < 0.01% | cheapest | Exact | Details → |
| Base | $0.000672 | < 0.01% | normal | Exact | Details → |
| Polygon | $0.001411 | < 0.01% | normal | Exact | Details → |
| Arbitrum | $0.002233 | < 0.01% | normal | Exact | Details → |
| Ethereum | $0.0167 | < 0.01% | high | Exact | Details → |
| BNB Chain | — | — | unavailable | — | |
| Solana | — | — | unavailable | — | |
| Tron | — | — | unavailable | — |
Estimates use the standard tier on each network and assume a routine ERC-20 transfer (55,000 gas). Optimism / Base figures include the L1 data fee, queried live from the OP Stack GasPriceOracle; real wallet cost may still vary slightly with wallet padding and exact calldata size.
USDT — $500 transfer
Cheapest right now
Optimism — $0.000132 to send $500 USDT
| Network | Est. fee | % of amount | Status | Confidence | |
|---|---|---|---|---|---|
| Optimism | $0.000132 | < 0.01% | cheapest | Exact | Details → |
| Base | $0.000769 | < 0.01% | normal | Exact | Details → |
| Polygon | $0.001616 | < 0.01% | normal | Exact | Details → |
| Arbitrum | $0.002557 | < 0.01% | normal | Exact | Details → |
| Ethereum | $0.0191 | < 0.01% | high | Exact | Details → |
| BNB Chain | — | — | unavailable | — | |
| Solana | — | — | unavailable | — | |
| Tron | — | — | unavailable | — |
Estimates use the standard tier on each network and assume a routine ERC-20 transfer (63,000 gas). Optimism / Base figures include the L1 data fee, queried live from the OP Stack GasPriceOracle; real wallet cost may still vary slightly with wallet padding and exact calldata size.
How to read these numbers
- Cheapest — the lowest-fee network right now. Usually Base or Arbitrum. If you're sending a routine transfer and don't already hold funds on a specific chain, start here.
- Low / Normal / High — relative to the cheapest. "High" means the network is dramatically more expensive than the cheapest option — usually Ethereum mainnet when gas is up.
- Confidence: Exact — the fee model is complete: mainnet and Polygon standard tier, Arbitrum (L1 cost bundled into its gas price), and OP Stack chains (Optimism, Base) where the live L1 data fee was successfully queried. The number is a full wallet-fee estimate, excluding the wallet's own padding.
- Confidence: Estimate — shown only when the live L1-fee lookup for an OP Stack chain was temporarily unavailable, so that row covers L2 execution only. Rare; the real quote would be slightly higher.
What actually changes the fee: USDC vs USDT vs DAI
All three are dollar-pegged ERC-20s, but they don't cost the same to move. The fee is gas units × gas price, and the gas units depend on how the token's contract is written — specifically how it updates balances and whether it touches a fresh storage slot:
- USDC — ~55,000 gas. The cheapest of the three per transfer. Circle's contract is comparatively lean.
- USDT — ~63,000 gas. Tether's contract does slightly more bookkeeping per transfer, so it costs ~15% more gas than USDC at the same Gwei. On mainnet that's real money; on an L2 it's fractions of a cent.
- DAI — ~50,000 gas. Marginally cheaper than USDC, but DAI is less widely accepted by exchanges and merchants — the gas saving rarely outweighs the convenience gap.
One extra cost applies on your first interaction with a new app: an ERC-20 approve transaction before the first transfer through a contract. That's a one-time fee per token/app pair, not per transfer.
The native-vs-bridged trap (USDC.e)
This catches people constantly and it has nothing to do with gas. On several L2s there are two different USDC tokens: native USDC issued directly by Circle, and bridged USDC (shown as USDC.e) that came across the official bridge before Circle deployed natively. They are not the same token and don't auto-convert:
- Sending
USDC.eto someone (or an exchange) expecting nativeUSDCcan mean it isn't credited, or has to be swapped first. - Native USDC redeems 1:1 with Circle and is what Coinbase withdrawals and CCTP use. Bridged USDC.e relies on the bridge's backing, so it carries a thin extra trust assumption.
- Arbitrum and Optimism both have native + bridged variants live today. Base has native USDC, but bridged USDbC can still show up in older liquidity pools and wallets — so always check the contract address, not just the ticker.
Before sending, check the token's contract address against the issuer's official list — not just the ticker your wallet shows. When in doubt, hold and send native USDC.
Which network should you actually use?
Work down this list — the first line that matches is usually your answer:
- Funds already on a chain? Send from there if the fee is reasonable — a bridge to a cheaper chain often costs more than the fee you'd save.
- Recipient is a CEX? Match the network and token they list. Sending native USDC to a Base deposit address that only supports Ethereum-ERC20 risks a lost deposit.
- On Coinbase already? Withdraw native USDC straight to Base — free and instant, no bridge step.
- Just want cheapest, no constraints? Take whichever L2 the live table above ranks cheapest right now — usually Base or Arbitrum.
When mainnet is the right choice
Three cases where paying mainnet fees is justified: (1) the recipient is a centralized exchange that only accepts ERC-20 on Ethereum, (2) you're settling a large amount (> $10k) and the per-tx fee is a tiny percentage, (3) you need L1 finality for legal / counterparty reasons. For everything else — payments, payroll, routine transfers — an L2 saves 90–99% of the cost.
Frequently asked questions
What is the cheapest way to send USDC?
Most weeks, Base or Arbitrum is the cheapest network for USDC — under $0.10 per transfer vs $1–5 on Ethereum mainnet. The comparison tables above show the live answer, refreshed every minute. If your funds are already on mainnet, factor in the bridge cost (one-time) before switching.
Why are stablecoin fees different across chains?
Each chain has its own gas market. Ethereum mainnet base fee is driven by global demand for L1 block space. L2s like Base / Arbitrum / Optimism settle to Ethereum but execute transactions off-chain, so their per-tx cost is a fraction of L1. Polygon PoS is a sidechain with no L1 calldata fee at all.
Is USDC on Base the same as USDC on Ethereum?
They're both native USDC — Circle issues USDC directly on both chains, so 1 USDC on Base = 1 USDC on Ethereum, redeemable 1:1 with USD via Circle. The catch: bridging between them takes a transaction. If you already hold USDC on the chain you want to send from, no bridge needed.
Why does Ethereum cost more than L2s?
Sending USDC on Ethereum requires every node in the network to update the USDC contract state. L2s batch many transactions together and post a compressed proof to Ethereum — each user pays only a small fraction of the L1 cost.
Should I use USDC or USDT?
For transfers, USDC and USDT are both fully fungible stablecoins, both pegged to USD. USDT transfers use slightly more gas (~63,000 vs ~55,000), so USDC is marginally cheaper per transfer. The bigger factors: which token does your destination accept, and which L2s does your token issuer support natively.
Are these fees exact?
The Ethereum mainnet and Polygon numbers are exact for the standard tier. Optimism and Base figures now include both L2 execution gas and the L1 data fee, queried live from the OP Stack GasPriceOracle — a full wallet-fee estimate, not execution-only. Real wallet quotes can still differ slightly because of wallet padding and exact calldata size. The "Confidence" column flags any row where the live L1 lookup was unavailable.
Already on an L2 and need to bridge funds in?
Estimate the one-time bridge cost from Ethereum mainnet to any major L2 before you move funds.