WATS Wallet logoWATS Wallet
Guide8 min read

"Insufficient Funds for Gas" but You Have Tokens? How to Fix Stuck Crypto

Your wallet shows tokens but says "insufficient funds for gas." Token balance and gas balance are separate, and every chain wants its own native coin. Here are three fast fixes — plus the structural one: WATS pays network fees from a single ATS balance instead of a different gas token per chain.

"Insufficient funds for gas" means your token balance and your gas balance are two different things, and you are out of the native coin on the chain you are transacting on. Every network charges its transaction fee in its own currency — ETH on Ethereum and its major L2s, POL on Polygon, BNB on BNB Chain, SOL on Solana, Toncoin on TON — and holding USDC, a meme coin or a bridged asset does not pay for the transaction. Nothing is lost: your tokens are cargo sitting in a truck with an empty fuel tank. To unstick something right now, get a small amount of that chain's native coin into the same wallet on the same network — through an on-ramp, a bridge, or a swap. To stop it happening again, keep a small native buffer on every chain you touch, or use a wallet like WATS, which lets you pay network fees from one funded ATS balance across the chains it supports instead of a different native token per chain.

This is one of the most common and most confusing moments in self-custody. Nothing is broken, nothing is lost, and your tokens are exactly where you left them — the truck is loaded, the tank is empty. This guide explains why that happens, gives you three fast ways out, and shows how paying fees in one token removes the problem structurally, with honest caveats about what that does and does not change.

The quick fix in one paragraph

If you just want to unstick a transaction right now: figure out which chain your stuck tokens are on, then get a small amount of that chain's native token into the same wallet on the same network. On an EVM chain (Ethereum, Arbitrum, Optimism, Base, Polygon, BNB Chain) you need a little ETH or POL or BNB; on Solana you need a little SOL; on TON you need a little Toncoin. The fastest routes are a built-in on-ramp (buy native gas directly with a card), a bridge from a chain where you already hold native (move a few dollars over), or a swap of a tiny slice of the tokens you already hold into the native coin — if you have enough native to pay for that one swap. Once the native balance covers the fee, your stuck transaction goes through.

Why this happens: token balance vs gas balance

Blockchains charge a fee for every state change — sending, swapping, approving, minting. That fee is called gas, and it is charged in the network's own native currency (on Ethereum, part of the fee is burned and the priority tip goes to validators). Critically, the fee is not deducted from whatever token you are moving. If you send USDC, the network does not take its cut in USDC; it demands ETH (or whatever the chain's native coin is) on top.

So your wallet effectively tracks two separate balances that happen to share one screen:

  • Token balance — the assets you hold (USDC, a meme coin, a wrapped or bridged token, an NFT). These are what you want to move.
  • Gas balance — the native coin that pays the network fee. This is what actually lets you move anything.

You can hold $10,000 of a token and still be unable to send a single cent of it if your native gas balance is zero. The error is your wallet or its node refusing to submit a transaction it already knows the network would reject as unpayable. It is a balance problem, not a security problem, and in a non-custodial wallet like WATS your keys and your tokens are untouched while you sort it out.

The second trap is that gas is per-chain. ETH on Ethereum mainnet does not pay for a transaction on Polygon, and SOL does nothing on an EVM chain. Each network is its own toll road with its own currency. People most often hit this right after bridging: they move USDC to a shiny new chain, arrive with tokens but zero native coin on that chain, and discover they cannot even move the USDC back out.

Step 1: identify which native token the chain needs

Before you fix anything, confirm two things: which chain your stuck tokens are actually on, and which native token that chain charges fees in. Open your wallet and check the network the token is sitting on — the same token symbol (say, USDC) can exist on a dozen chains, and only the native coin on that specific chain will work.

Here is the mapping for the networks WATS supports:

ChainNative gas tokenNotes
EthereumETHHighest fees; you need real ETH, not wrapped or bridged variants.
Arbitrum / Optimism / BaseETHThese L2s also pay gas in ETH, but it must be ETH on that L2, not on mainnet.
PolygonPOL (formerly MATIC)Cheap fees, but still its own native coin.
BNB ChainBNBNative BNB on BNB Chain pays the fee.
SolanaSOLTiny fees, but you still need a small SOL balance to transact.
TONToncoin (TON)Native Toncoin pays for TON network operations.

One honest note: WATS spans those EVM chains, Solana and TON in a single self-custody wallet, but it does not natively support Bitcoin, so Bitcoin's fee model is out of scope here. Once you know the exact chain and its native coin, you know precisely what to acquire.

Step 2: fastest ways to get a little native gas (on-ramp, bridge, swap)

You only need a small amount of native token — enough to cover one or a few transactions, not a big position. There are three reliable routes, roughly in order of speed depending on what you already have.

Option A — Buy native gas with an on-ramp

The most direct fix when you have no native coin anywhere is to buy a small amount directly with a card or bank transfer through an on-ramp, sending it straight to your wallet address on the chain you need. Make sure the on-ramp delivers the native coin on the correct network — buying ETH that lands on mainnet will not help a stuck transaction on Base. This is the only route that needs nothing pre-existing in your wallet.

Option B — Bridge a little native from another chain

If you already hold native gas on a different chain — say you have ETH on Arbitrum but your tokens are stranded on Base — you can bridge a few dollars of native across. Bridge a small, deliberate amount; you are topping up the gas tank, not relocating your whole balance. Watch out for the chicken-and-egg case: bridging itself costs gas on the source chain, so you need a little native there to start.

Option C — Swap a slice of what you already hold

If you have just enough native to cover one transaction, you can swap a small portion of your stuck tokens into more native coin to build a buffer. The catch is the same one that got you here: a swap is itself a transaction and needs gas. If your native balance is truly zero, a same-chain swap will not save you — you must use Option A or B first. This dead end is why some wallets move fee payment off the native coin entirely, which is the structural fix below.

Step 3: avoid it next time — keep a small native buffer

The simplest habit that prevents this entirely: whenever you move tokens onto a chain, bring a little native coin along with them. Treat it like keeping a few dollars of fuel in a car you might drive in a new city.

  • Pre-fund every chain you use. Keep a small native balance (often just a few dollars) on each network you actually transact on, so you are never stranded with tokens you cannot move.
  • Top up before you bridge, not after. When you send tokens to a new chain, send or buy a little native there in the same session.
  • Leave a margin. Do not drain your native coin to the last cent after a transaction — fees fluctuate, and the next one might cost slightly more than the last.
  • Mind the busy chains. On Ethereum mainnet especially, gas spikes during congestion; a buffer that was fine yesterday can fall short during a busy hour.

This works, but it has an obvious downside: the more chains you use, the more little native balances you have to track and refill. That juggling is exactly the problem the next section addresses.

The structural fix: pay fees in one token with the WATS Hot Wallet

Keeping a separate native buffer on every chain you touch is busywork. The structural alternative is a wallet that lets you pay fees in one token everywhere, so you stop managing a separate gas coin per chain. The WATS Hot Wallet works that way: you fund one ATS balance, and that token pays network fees across the chains the Hot Wallet supports, instead of you sourcing ETH here and SOL there. On EVM chains this runs on gas abstraction through ERC-4337 account abstraction, and ATS itself travels between chains as a LayerZero OFT, which is what allows a single balance to settle fees on more than one network. WATS stays fully non-custodial throughout — you hold the keys, and WATS never holds a key.

Now the honest framing, because this is easy to oversell:

  • It changes which token pays, not how much. Paying in ATS swaps the fee token from per-chain native coins to one token. It is not a discount, not "gasless," and not cheaper gas. The network still charges its real cost; ATS just settles it.
  • You still need a funded balance. The single fee token is ATS, so a zero ATS balance lands you right back at "insufficient funds for gas." You have replaced many native balances with one — you have not removed the need for one.
  • It applies where you are actually paying in ATS. The single-fee-token model covers the chains WATS supports for it. Anywhere you transact outside that — another wallet, another chain — the normal per-chain native gas model described above still applies, so it is worth knowing both.

So the real benefit is narrow and concrete: one fuel tank instead of one per chain. If your pain is constantly running dry on whichever chain you happen to land on, consolidating fees into a single funded token removes the per-chain juggling — while everything else about how fees work stays the same.

Chain-by-chain notes (EVM, Solana, TON)

EVM chains (Ethereum, Arbitrum, Optimism, Base, Polygon, BNB Chain). All of these use the same model: a native coin pays gas, and it must be that coin on that exact chain. ETH covers Ethereum and the major L2s, but ETH on Arbitrum will not pay a Base fee — they are separate balances. Polygon uses POL and BNB Chain uses BNB. Mainnet fees are the most volatile, so keep the largest relative buffer there.

Solana. Fees are tiny, which lulls people into ignoring them — but "tiny" is not "zero." You still need a small SOL balance to send SPL tokens or interact with programs. Some actions also require a small rent deposit to open token accounts, so keep slightly more SOL than the bare transaction fee suggests.

TON. Network operations are paid in Toncoin. As with the others, holding a jetton (a TON token) does not pay for its own transfer; you need a little native Toncoin in the same wallet. Keep a small Toncoin buffer if you transact on TON regularly.

The thread through all three is identical: tokens are cargo, native coin is fuel, and each chain only accepts its own fuel. Once that clicks, "insufficient funds for gas" stops being a mystery and becomes a quick, predictable top-up. For the deeper mechanics, read crypto gas fees explained and what is gas abstraction. And if it is the endless top-ups you are tired of rather than the fees themselves, the practical next step is to consolidate them: keep your multi-chain activity in the WATS Hot Wallet, fund one ATS balance for network fees, and maintain a single fuel tank instead of one per chain.

Frequently asked questions

Why does my wallet say insufficient funds for gas when I have tokens?

Because token balance and gas balance are separate. Networks charge fees in their own native coin (ETH, POL, BNB, SOL, Toncoin), not in the token you are moving. You can hold thousands in a token and still be unable to send it if your native gas balance on that chain is zero. Add a little native coin on the same chain and the transaction goes through.

Can I pay gas with USDC or another token instead of the native coin?

On a standard wallet, no — each chain demands its own native coin, and no amount of USDC will settle an ETH-denominated gas fee. The exception is a wallet that abstracts the fee token: the WATS Hot Wallet pays network fees from a single funded ATS balance across the chains it supports, using ERC-4337 account abstraction on EVM chains, so you do not have to source a different gas coin per chain. Note that this changes which token pays, not what the network charges, and a zero ATS balance still blocks a transaction.

I just bridged tokens to a new chain and now I am stuck. What do I do?

This is the most common version of the problem: you arrived with tokens but zero native coin on the new chain. Get a small amount of that chain's native token there — buy it via an on-ramp, or bridge a few dollars of native from a chain where you already hold some. Next time, bring a little native along when you bridge, or use a wallet like WATS that pays fees from one ATS balance so a fresh chain is never a dead end.

How much native token should I keep for gas?

Enough to cover several transactions with margin — often just a few dollars per chain, more on Ethereum mainnet where fees spike during congestion. Do not drain your native coin to the last cent after a transaction, since the next fee may cost slightly more than the last one.

Is paying fees in one token the same as gasless transactions?

No. Paying fees in a single token changes which asset settles the fee, not whether a fee exists. With the WATS Hot Wallet you fund one ATS balance and it covers network fees across the supported chains; the network still charges its real cost, and if that ATS balance hits zero you are stuck again. It is one fuel tank instead of one per chain — not free gas and not a discount.

Does WATS support Bitcoin gas?

No. WATS is a fully non-custodial wallet spanning EVM chains (Ethereum, Arbitrum, Optimism, Base, Polygon, BNB Chain), Solana and TON in one wallet, but it does not natively support Bitcoin, so Bitcoin's fee model is out of scope. For the chains it does support, each uses its own native gas coin as described above — or, in the Hot Wallet, a single ATS balance.