Gas is paid in the network's native token
Every action on a smart-contract network costs a fee, and that fee is paid in the network's own native token, not in whatever asset you happen to be moving. Validators or sequencers do the work of ordering and confirming your transaction, and they are compensated in the coin the network runs on. There is no way to pay them in an arbitrary token.
This is the entire cause of an insufficient-gas error. The swap you asked for is valid, your balances are fine, but the wallet has no native token set aside to hand the network for processing. Hold a wallet full of USDC on Ethereum with zero ETH and you still cannot move any of it, because the fee has to come out in ETH.
The confusing part is that the fee and the traded asset are two different things. You can have plenty of the token you want to swap and still be stuck, because the small amount of native token that pays the fee is what's missing.
Which token pays gas, by network
The gas token changes with the network. This is the detail that trips people up right after they move funds to a chain they don't normally use. Below is the native token each common network settles fees in.
- Ethereum: ETH.
- Ethereum Layer-2 rollups (Base, Arbitrum, Optimism, Linea, and similar): ETH, since these networks use ETH for gas too.
- BNB Chain: BNB.
- Polygon: POL.
- Avalanche C-Chain: AVAX.
- Solana: SOL, in very small amounts because fees there are low.
- Tron: TRX, though Tron also uses a resource model (energy and bandwidth) that can offset part of the cost.
- Other Layer-1s each use their own native asset, so check the coin the chain is named for before you assume.
How to top up and retry
The fix is direct. Get a small amount of the correct native token into the same wallet on the same network, then run the swap again. You do not need much. Enough to cover one fee is usually plenty, and the exact amount depends on the network and how busy it is at that moment.
Sources for that top-up are the usual ones: send native token from another wallet you control, withdraw a little from an exchange onto the right network, or swap a small slice of an asset you already hold on that chain into its gas token. Once the native balance is there and the transaction confirms, the original swap goes through normally.
Arriving on a new chain with no gas
There's a specific version of this problem worth planning for. You bridge or swap an asset onto a network you've never used, it lands correctly, and then you discover you can't do anything with it because you have no native token on that chain to pay the next fee.
The clean way to avoid it is to arrive with gas already in hand. When you move onto a new network, bring a small amount of its native token alongside your main asset, so the moment funds land you can act. A cross-chain swap that delivers the destination's gas token as part of the trip saves you from landing with funds you can't move.
If you're already stuck on a chain with no gas, the only route out is to get a little native token onto that same chain from somewhere else, then proceed. There's no way to bootstrap it from the stranded token alone.