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.
Related
USDCtoETH
Swap USDC for ETH on Base.
On BaseETHtoUSDC
Swap ETH for USDC on Base.
No ETH for gas? How to get it when you only have USDC
Have USDC but no ETH to pay network fees? How to swap for ETH without already holding any, and the other ways to top up gas.
What is a token approval, and how do you revoke one?
Token approvals let apps spend your tokens. What they are, why unlimited approvals and signed permits are risky, and how to check and revoke them.
Sent crypto to the wrong address? Your options
Sent crypto to the wrong address? Transactions can't be reversed, but depending on where the funds went you may still have options. How to check and what to do.
Updated October 2026. Nothing here is financial advice. Crypto transactions cannot be reversed.