I had a similar experience a few days ago. I don’t know if this story is representative for others here, but it’s one example which may occur for other people too.
Task: Swap USDC for ETH through MetaMask (MM). In other words: buy ETH for USDC using MM.
- Opened MM and checked that my Trezor device was connected with a green light, Ethereum Mainnet was selected, and that MM was showing the correct wallet (matching the ETH balance) in Trezor suite.
- Told MM I wanted to buy ETH for x USDC, which I had as ERC-20 tokens in my Trezor ETH account. I did not generate a Receive address with Trezor suite because MM already had my ETH address after connecting to my Trezor device.
- Performed the usual acceptances on the Trezor device of withdrawal of funds (USDC and ETH fee) from my wallet.
- After a while the ETH balance in my wallet in Trezor suite was increased, so the funds had arrived.
- But The Transaction History in Trezor suite showed only the withdrawal of USDC and the ETH fee, not the arrival of the ETH I bought.
- I checked the transaction with Etherscan.io and saw that MM had sent my purchased ETH to my ETH wallet’s address as an Internal Transaction(!)
No wonder the arrival of the ETH to my wallet never showed up in the Transaction History.
Now, I can’t answer why MM sent the purchased ETH to me with an Internal Transaction. Maybe it was cheaper or faster for MM to do it that way, I don’t know. Maybe Coinbase and others also do the same.
Edit: I thought that Internal Transactions were used for things like contract negotiations and blockchain operations, not sending coins, but I guess that too can be considered a blockchain operation. ![]()