MetaMask transaction failed or stuck? How to fix it

A transaction that won't go through is usually one of a handful of problems. Work out which one you have first: it won't send at all, it's stuck on pending, or it went through and failed.

It won't send: "insufficient funds for gas"

Every transaction pays a network fee in the network's own token. On Ethereum, Base and Arbitrum that's ETH, even when you're sending USDC. If you have USDC but no ETH on that network, MetaMask can't send.

  • Send a little ETH to that network from an exchange or another wallet, or
  • swap a little USDC for ETH with a signed order, which doesn't need ETH up front. See how to get ETH for gas.

Your balance shows 0

The tokens are usually on a different network from the one MetaMask is showing. Switch networks at the top of MetaMask. If a token still doesn't appear, import it using its official contract address.

It's stuck on "pending"

The fee you offered was too low for how busy the network is, so nobody has included it yet. Every later transaction from your wallet waits behind it.

  • Speed up: resends the same transaction with a higher fee. Use this if you still want it.
  • Cancel: replaces it with an empty transaction that also costs a fee. It only works if the original hasn't been included yet.
  • If MetaMask keeps showing a pending transaction that the block explorer doesn't know about, Settings → Advanced → Clear activity tab data resets MetaMask's local history. It doesn't cancel anything on the blockchain.

It went through but "Failed" or "execution reverted"

The network ran the transaction and the contract refused it. You still pay the fee, because the network did the work. Common reasons:

  • The price moved beyond your slippage limit during a swap.
  • A missing or too-small approval for the token you're spending. See token approvals.
  • The token has rules, such as transfer fees or trading limits, that a normal swap can't handle.
  • An expired deadline: the transaction sat pending until the app's time limit passed.

Open the transaction on the block explorer: it often shows the reason next to the status.

"Internal JSON-RPC error"

This is a generic message. Expand the details in MetaMask: the real cause is usually one of the problems above, most often missing gas or a transaction that would revert.

Swapping without paying for failures

When you sell a token with a signed order, as on this site, an order that can't be filled at your limit simply expires. You pay no network fee for it, and you keep your tokens.

It succeeded, but the funds didn't arrive

If the explorer says Success, the transfer happened. Check the network and the address it went to. See sent to the wrong network or sent to the wrong address.

Ready when you are

The swap panel is on the home page. No account; you sign every step in your own wallet.

Open the swap page

Related

Updated October 2026. Nothing here is financial advice. Crypto transactions cannot be reversed.