One tricky case is when a withdrawal from a closing exchange and a deposit on another platform look like two separate transactions, even though they’re just two sides of the same transfer.
Say a client withdraws 2.4 ETH from BitMEX, pays a 0.003 ETH network fee, and receives 2.397 ETH in their own wallet before depositing it into another exchange. If the export from the first platform is missing, the receiving exchange might show an unexplained deposit with no original cost basis. Treating the withdrawal as a disposal and the deposit as a new acquisition could create a completely fictional gain.
I’d keep a transfer-matching ledger that links both sides using transaction hashes, timestamps, asset quantities, and destination addresses, while tracking fees separately. If the source record is missing, the match should remain provisional rather than silently inventing a cost basis.
The interesting question is what happens when the original exchange disappears before the match can be verified. Would you preserve that uncertainty explicitly in the accountant’s report, rather than forcing the reconciliation to balance?