Client says they sent USDC, but it's not in your wallet
Before anyone panics: almost every "missing" stablecoin payment is one of the five cases below. Ask your client for the transaction hash first; everything else follows from it.
1. Wrong network
The most common cause by far. Your client sent USDC on Ethereum but your wallet is showing Base, or the reverse. Your address is the same on every EVM network, so the funds are there, just on another chain.
Fix: paste the transaction hash into the search box of each network's explorer (Etherscan, Basescan, Arbiscan, Optimistic Etherscan, Polygonscan) until one finds it. That tells you the network; switch your wallet to it. Nothing is lost.
2. Wrong token (bridged vs native USDC)
On Polygon, Arbitrum and Optimism there is native USDC and an older bridged version (USDC.e). Wallets often show only one by default.
Fix: on the explorer, click the token in the transaction and note its contract address, then add that token to your wallet. You can swap USDC.e to native USDC on most DEXs for a small fee.
3. Transaction still pending or failed
On the explorer, check the status. "Pending" usually means the gas fee was too low and it will either confirm or be dropped. "Failed" means no tokens moved, though the sender still paid gas.
Fix: pending: wait or ask the client to speed it up in their wallet. Failed: ask them to resend.
4. Sent to the wrong address
Compare the recipient on the explorer with your address character by character, not just the first and last few. Address-poisoning scams plant look-alike addresses in a victim's history.
Fix: if it's a different address, the funds went to whoever controls it. Only that party can return them. This is why QR codes and pay buttons beat copy-paste.
5. Sent from an exchange that hasn't processed it
Exchange withdrawals can sit in a queue for minutes to hours, and the client sees "sent" before anything is on-chain.
Fix: ask for the on-chain transaction hash. If the exchange doesn't show one yet, it hasn't been sent.
Prevent it next time
- Put the network and chain ID on the invoice in plain words.
- Give the client a QR code or pay button instead of an address to copy.
- Use an amount with a unique fingerprint so you can spot the exact payment.
- Let the invoice confirm payment itself, with the transaction hash, so nobody has to ask.
Invoices that check themselves
opnaco invoice links spell out the network, include a QR code and pay button, and show Paid with the transaction hash as soon as the exact payment lands. Free, no signup.
Create a USDC invoice →