Two dollars that are not always equal
USDC and USDT both cost a dollar, but they are two different dollars with different issuers and different reserves. In a calm market the USDC/USDT pair sits flush against one, and there is nothing to earn on it.
They come apart on news: trouble at a partner bank, questions about reserves, regulatory pressure. One of the two slips below a dollar, and the gap between venues becomes visible — because exchanges do not react at the same moment.
Where the gap appears
USDC has a trait most coins lack: some exchanges quote it against USDT, some against a fiat dollar directly, and some carry both. The same USDC therefore rests on different bases at different venues, and a gap opens between them.
Fiat on-ramp venues are their own story. USDC there often tracks the real dollar more closely than on purely crypto exchanges, and that is a standing difference rather than a one-off.
Networks: where the money is actually lost
USDC lives on a dozen networks — Ethereum, Solana, Base, Arbitrum, Polygon and others. The coin on each is its own; the ticker is shared. Sending USDC from one network to an address on another is an ordinary way to lose it.
The rule matches USDT's: the withdrawal network and the deposit network must match literally. The exchange displays both — check them rather than trusting memory.
Transfer cost depends on the network entirely: on Ethereum it can be dollars, on Solana or Base cents. For a stablecoin, where all the profit sits in tenths of a percent, the network choice decides the outcome by itself.
How this differs from arbitraging an ordinary coin
Tenths of a percent do the work here, not percent. In exchange the size is larger and the risk of the price moving mid-trade is near zero — a dollar does not fly ten percent while you transfer. So on stablecoins a mistake costs you the fee itself, not forgone upside.