I had the same problem. I tried using Binance Smart Chain with my Metamask address. This worked up to a point, but it was importing trades as two separate transactions and not listing fees. It was getting the balances correct, at least.
However, I’ve gone back to manually downloading any Metamask transactions from BscScan and editing these to fit the Koinly template, then manually uploading into my Metamask wallet in Koinly. This works quite well. The one thing I have found, though, is that for transfers from the Binance exchange to Metamask, the full fees for the transaction are listed in the Binance wallet. The Metamask transaction on BscScan lists a fee also, but this is in fact covered as part of the fees that Binance charged for the transaction. So, I’ve found I have had to manually exclude any fees for such transactions before uploading to my Metamask wallet in Koinly, otherwise the balance in Koinly is not correct for that coin.
I’m not doing a lot of transactions, so have been able to check each transaction carefully. I am trying to get a clear handle on a method for ensuring that my Koinly records are complete, before I do a lot more transactions.
This approach should still work fine for larger amounts of transactions, if you don’t mind manually reorganising columns in your csv file to fit the Koinly template, and you are sure which fees to exclude. Trades totally within Metamask are straightforward. It’s the transfers in (and I presume, also, transfers out) where the fees need attention. Binance exchange seems to charge more than the gas fees listed in the BscScan record, and if you leave those fees in the csv, Koinly then considers the fee listed on BscScan as an additional fee.