Koinly report vs. 1099-DA: why the totals don't match
Two documents, both about the same client, both claiming to describe the same year — and the proceeds differ by thousands. This page lists the seven causes we check first, in the order they usually turn out to matter.
1. Wallet transfers booked as disposals
Moving an asset between your own accounts is not a taxable event. It becomes one the moment the software fails to pair the outgoing and incoming legs — usually because the deposit arrived with a different asset symbol, a different amount after a fee, or on a date outside the matching window.
The signature: proceeds appear with no corresponding basis, and the same asset shows up twice in the lot pool. This single class accounts for the largest dollar gaps we see.
2. Reward, staking and airdrop lots with zero basis
Income events create new lots. If the fair-market value at receipt was never recorded, the lot enters the pool at zero basis — and every later sale of it looks like pure gain. The 1099-DA reports proceeds; it does not repair the missing basis.
3. Gross proceeds vs. net of fees
Box 1a on the 1099-DA is gross proceeds. Software exports vary: some report proceeds net of the exchange fee, some add the fee to basis, some do both. A 0.1% fee on a high-volume year is enough to produce a five-figure difference on its own.
4. Swap legs priced independently
A trade of one asset for another is one economic event with two legs. If each leg is priced from a different feed, or one leg is priced and the other valued by ratio, the totals drift — and the drift lands entirely in proceeds.
5. Duplicate or partial imports
An API sync plus a CSV for the same account is the most common duplication. The second-most-common is a CSV that covers only part of the year, so half the disposals exist once and half exist twice.
6. Unit precision and price rounding
Quantities to eight decimals, prices to the cent, then a multiplication — the rounding residue is small per trade and material per year. It also breaks lot matching, which compounds the error.
7. Which lot-tracking method, and which wallet
FIFO, LIFO and HIFO produce different realized gains from identical data. Since Rev. Proc. 2024-28 ended universal basis pooling, the account-and-wallet dimension matters too: a report that pools across wallets can be internally consistent and still disagree with a per-account 1099-DA.
What a difference ledger does about it
Instead of a single unexplained number, the ledger lists each unmatched amount with:
- the transaction or lot it belongs to on each side;
- the class of difference (the seven above, plus a handful of rarer ones);
- the dollar effect, gross and net;
- the source document that supports each side;
- a status: explained, or open with the reason it cannot be closed.
That is what makes the difference defensible. Not that it is zero — that every part of it has an owner.
Send us one client file
Three free pilot reports. You get the ledger and the summary; we get to see whether our checklist survives contact with your data.
Request the pilotRelated: all supported sources · how the browser-side computation works