USDC will not appear in MetaMask until you add the correct token contract for the network you are using. In most cases, this is a display issue: your transaction went through, but MetaMask has not been told to show that token. The fix is to switch to the correct network and import the USDC contract. If you sent USDC to the wrong address or to a contract address, adding the token will not recover the funds.
What You Will Do
This guide will walk you through locating the USDC transaction on a block explorer, selecting the correct network, adding the USDC token contract to MetaMask, and confirming that the balance is visible. You will also learn what to do if USDC is still missing and what mistakes cannot be undone.
Why Is USDC Not Showing in MetaMask?
MetaMask does not add every ERC-20 token automatically. It usually shows ETH plus any tokens you have imported. When you receive USDC, the balance exists on-chain, but the token may be hidden from the interface until the contract is added. This is the most common reason.
The second common problem is network mismatch. USDC exists on multiple blockchains, not just Ethereum. USDC sent on Polygon, Arbitrum, Optimism, Base, or BNB Smart Chain uses a different token contract from USDC on Ethereum. If you are viewing your Ethereum Mainnet account but the USDC was deposited on Arbitrum One, the balance will appear missing until you switch to Arbitrum One and add the Arbitrum USDC contract.
USDC can also fail to show because:
- You imported the right token type but on the wrong network.
- You accidentally hid the token in MetaMask.
- The transaction failed, is still pending, or was sent to a different wallet.
- The USDC was sent to the token contract address rather than your personal wallet address.
- The network is not supported by MetaMask, or the version of USDC is native to a non-EVM chain.
If the transaction was sent to an address you do not control, or to a smart contract address that cannot forward the token, no wallet setting will bring it back. Always verify the recipient address and the network before sending.
Before You Start
You need:
- An unlocked MetaMask wallet.
- Your private key or recovery phrase if the wallet needs to be restored. Never enter this phrase into any website.
- The exact network where the USDC exists. Look at the sender's withdrawal history or the transaction details for terms such as Ethereum, Polygon, Arbitrum One, Optimism, Base, or BNB Smart Chain.
- A small amount of the network's native token if you plan to send USDC after adding it. On Ethereum, that token is ETH; on Polygon, it is MATIC/POL; on Arbitrum and Optimism, it is ETH; on BNB Smart Chain, it is BNB.
Adding a custom token does not require a network fee because it changes only the wallet's display settings. Gas fees apply only when you send tokens or interact with contracts.
How to Add USDC to MetaMask
Step 1: Find the transaction and confirm the network
Before changing MetaMask, find where the USDC transaction happened. Check the sender's withdrawal confirmation, your exchange's transfer history, or the transaction details in the wallet that sent the USDC. You need to know the network, not only the token name.
If you have the transaction hash, open a block explorer for that network. For Ethereum, use Etherscan. For Polygon, use Polygonscan. For Arbitrum, use Arbiscan. Look for the Token Transfer line and confirm that the transaction succeeded.
Step 2: Select the correct network in MetaMask
Open the MetaMask extension and unlock your wallet. Click the network selector at the top of the main screen. Choose the network that matches the USDC transaction. For standard Ethereum USDC, choose Ethereum Mainnet.
If the network is not listed, add it first in Settings, then Networks. For example, Arbitrum One, Polygon, Base, and BNB Smart Chain can be added manually or through a network list such as Chainlist. Only use the official RPC details from the network or a well-known provider.
Step 3: Open the Tokens tab and start importing
Make sure you are on the Tokens tab, which may be labeled Assets in older versions of MetaMask. Scroll down if necessary and click Import tokens. If you already imported tokens, the same button allows you to import more.
Step 4: Switch to the Custom Token tab and paste the contract address
In the Import tokens screen, choose Custom Token. Paste the USDC contract address for the network you selected in Step 2. Do not paste the Ethereum contract address while you are on Polygon or BNB Smart Chain; it will not produce the correct USDC token and may create a fake token entry.
Common USDC contracts include:
- Ethereum Mainnet: 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
- Arbitrum One: 0xaf88d065e77c8cC2239327C5EDb3A432268e5831
- Optimism: 0x0b2c639c533813f4aa9d7837caf62653d097ff85
- Base: 0x833589fcd6edb6e08f4c7c32d4f71b54bda02913
- Polygon native USDC: 0x3c499c542cef5e3811e1192ce70d8cc03d5c3359
- BNB Smart Chain: 0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d
Some networks also show USDC.e, a bridged version of USDC. It is a different token contract. For example, Polygon and Avalanche can show both native USDC and USDC.e. Do not mix them. Check which one the sender withdrew.
After you paste the address, Token Symbol and Token Decimal should auto-fill as USDC and 6. If they do not auto-fill, you are likely on the wrong network or the contract address is invalid. Do not continue if the symbol shows something else.
Step 5: Confirm the import
Click Add Custom Token. MetaMask will show a confirmation screen with the token symbol and decimals. Click Import Tokens to finish.
How to Confirm USDC Is Now Visible
After importing, go back to the Tokens tab. You should see USDC with a balance. If the incoming transaction was confirmed on-chain, the balance appears immediately. The amount should match the Token Transfer event shown in the block explorer.
You can click USDC and view the token address in the block explorer to make sure the contract address matches the one you intended to import.
Fees, Limits, and Timing
- Adding a custom token: no fee.
- Sending USDC on Ethereum requires ETH for gas. USDC uses 6 decimals.
- Transfer speed depends on network congestion and gas price. On Ethereum, a transaction needs enough confirmations to be considered final; most users wait until the explorer shows Success.
- Some networks show USDC and USDC.e as separate assets. If you receive USDC.e, you must import that separate contract.
- MetaMask does not set a minimum balance for USDC, but some exchanges and smart contracts do. If the amount is very small, check the block explorer rather than assuming it is lost.
Common Problems and Fixes
Problem: USDC is still not showing after I added the token.
Check that you are on the same network as the deposit. Check the transaction hash on the relevant block explorer. If the transaction failed, no USDC moved. If it succeeded but the wallet still does not show it, hide the incorrect token entry, switch to the right network, and re-import the correct USDC contract.
Problem: I selected Ethereum Mainnet but my USDC was sent on Arbitrum One.
Switch MetaMask to Arbitrum One and add the Arbitrum USDC contract. The Ethereum contract and the Arbitrum contract are different tokens; do not paste one while the other network is selected.
Problem: I sent USDC to a contract address or wrong wallet.
Adding a token will not fix this. If you sent to the USDC contract itself, a standard wallet cannot recover it. If you sent to an exchange deposit address, contact the exchange support. If you sent to your own address on the wrong network, switch to that network and add the correct token.
Problem: I see a USDC-like token with a strange name or missing decimals.
Do not interact with it. It may be a scam token. Hide it and import the verified contract address from the block explorer or official source.
Safety and Irreversible Actions
- Never share your recovery phrase or private key. No support team needs it to add tokens or find funds.
- Always verify the network and recipient address before sending.
- Importing a custom token is safe because it is only a display setting. It does not approve spending or sign a transaction.
- USDC is a centralized stablecoin. Circle can freeze or blacklist addresses in compliance with law enforcement; this is a regulatory risk to know, not a technical fix.
- Transactions on public blockchains are final. A wrong address cannot be reversed, even if the owner is later identified.
When This Method Is Not Suitable
If your USDC is on a non-EVM chain that MetaMask cannot display, the custom-token method in this guide will not work. Use a wallet that supports that chain.
If you already sent USDC to a smart contract without a withdrawal function, no custom token import will recover it. Some tokens can be recovered through special methods, but only if the contract allows it. There is no guarantee.
Who This Article Is For
This guide is for MetaMask users who see a missing USDC balance, need to import USDC as a custom token, or want to double-check before sending stablecoins. It assumes you already have a MetaMask wallet and know your recovery phrase is not for sharing.
Who Created This Content?
This guide was written by Barry Stidham, who focuses on asset management and portfolio construction. His background includes digital asset funds, on-chain behavior, and risk control. This article is educational and is not individualized financial advice.
How This Content Was Created
The operational steps were checked against public wallet documentation and token contract data. MetaMask's interface changes over time, so if a menu label differs from this guide, follow the official MetaMask help center instructions and verify the token address on the relevant block explorer.
Why This Content Exists
Missing-token issues are a common source of panic and costly mistakes. This article exists to help users separate display issues from real on-chain problems and complete the few safe steps needed to make USDC visible in MetaMask.
FAQ
I added USDC to MetaMask but the balance is still zero. What should I do?
First confirm the transaction on the block explorer. If it succeeded, make sure the selected network and wallet address match the deposit. Hide the incorrect token entry, switch to the right network, and re-import the correct USDC contract.
Do I need ETH to send USDC from MetaMask?
On Ethereum Mainnet, yes. Every token transfer requires gas, and gas is paid in ETH. On Arbitrum and Optimism you also pay gas in ETH. On Polygon, gas is paid in MATIC/POL. On BNB Smart Chain, gas is paid in BNB.
Is it safe to add USDC as a custom token?
Yes. Importing a token only tells MetaMask to display a particular contract in your token list. It does not give the token permission to spend your assets. Use a verified contract address from an official source.
Can I recover USDC sent to the wrong address?
No, not by changing MetaMask. If the address is not yours, no one can reverse the transaction. If you sent to an exchange deposit address, contact the exchange support. If you sent to your own address on a different network, you may be able to recover it by switching to that network and using the correct wallet.
What is the difference between USDC and USDC.e?
USDC.e is a bridged version of USDC that was created when USDC was not yet native on a network. Native USDC is issued directly by Circle on the target chain. They are different contracts and are not automatically interchangeable. You need to import the one that matches your transaction.
Bottom Line
If USDC is not showing in MetaMask, do not panic. Start by checking the network and the block explorer. Then add the correct USDC contract for that network. Adding a token does not cost gas, and it does not put your wallet at risk. If the transaction was sent to the wrong address, however, no token import can fix it. Keep your recovery phrase safe, verify contract addresses, and confirm every network before sending stablecoins.
Sources: MetaMask Help Center — How to display tokens in MetaMask | Etherscan — USD Coin (USDC) token contract
Last updated: 2026-08-13 (UTC)























