CRYPTO

Four Years of Hand-Tracked Crypto Taxes Hid a $2,300 Error

Four years of hand-tracked crypto transactions migrated into tax software produced duplicate imports, then uncovered cost-basis errors worth real money. Here is what the migration actually broke and what it fixed.

Owen Mathers
Staff Writer
August 26, 2026 · 5 min read

The spreadsheet had 417 rows when I ultimately gave up on it, and I knew most of them by sight — the February 2023 ether buy at $1,512, the June swap I'd annotated with the note "check this later" that I had never once checked later. It was 10:15 on a Thursday night in January, tax season approaching, when I exported four years of CSVs from three exchanges and uploaded em to tax software, mostly outta exhaustion rather than wisdom. The first import told me I had traded $140,000 of volume. The spreadsheet said nothing close to that. Both numbers were wrong, and finding out why took me two weekends.

Here are the stakes, without any salesmanship: I am not claiming software saved me from an audit. im claiming my own records had a hole in em about $2,300 wide, and I could not see it from inside the spreadsheet because the spreadsheet was built from the same flawed memory as the hole.

The first thing migration broke was worse than the original problem. The software ingested all three exchange CSVs plus my hand-built sheet, and where transactions overlapped — a withdrawal leaving Exchange A, arriving at Exchange B — it recorded both sides as separate events. Transfers became dispositions. My hand-entered rows duplicated the imported ones. The software cheerfully computed a tax liability that included hundreds of dollars of phantom gains on coins I still owned. If I'd filed that, the error would have been mine, not the tool's. The tool assumes you'll reconcile; the spreadsheet assumed you'd remember. Both are religions, and I had been practicing the wrong one.

untangling transfers that looked like sales

The matching rule took an afternoon to learn: a withdrawal is only a disposal if it never lands in another wallet I own. Once every outflow was paired with its inflow, hundreds of phantom events collapsed into plain transfers, and the computed liability dropped by more than my monthly mortgage payment. The software had been right about its math and wrong about my life. Reconciliation is the appointment where those two ultimately meet.

the wallet I forgot I had

Reconciliation meant matching every transfer to its counterpart, and that's where the $2,300 surfaced. Matching transfers forced me to inventory every address I'd ever used, and the inventory turned up an old mobile wallet from 2022 with 0.8 ether I had honestly forgotten — snagged at $1,150 during some late-night enthusiasm, never sold, never entered in any spreadsheet cuz I'd snagged it on a phone app before I standardized on the exchanges. My basis records didn't exist for it. Software couldn't fix that; I had to reconstruct the purchase from bank statements, which took an hour and produced a dated card charge that matched the amount almost exactly. Forgotten assets are not a software problem, but software is what found the gap where one was hiding.

the swap my spreadsheet had priced wrong

The second discovery was an accounting error, not a missing coin. A 2023 trade where I'd swapped one altcoin for another had been entered in my sheet at what I remembered paying — $900. The exchange record showed the trade executed at a value of $1,180 at execution time. Four years of downstream calculations were anchored to a basis that was $280 wrong, in the direction that had me underreporting gains on later sales. Nobody flagged it. Spreadsheets don't flag anything; they faithfully compute from whatev you type, forever. The software's exchange-side import simply had the number I'd reckoned at, and the two didn't agree, and agreement is the whole ballgame.

what I'd tell anyone still on a spreadsheet

Start with the oldest year, not the newest, because old errors infect every calculation downstream of em. And reconcile against the exchange records, never against memory — my memory had a $280 confidence to it that no honest record would have survived. The spreadsheet's failure mode is silence. It will compute your mistake faithfully for four years and never once clear its throat.

what reconciliation actually took, hour by hour

Total effort, honestly counted: about eleven hours across two weekends. Approximately three hours de-duplicating the initial import, two hours mapping transfer pairs, an hour and change excavating the forgotten wallet, one hour rebuilding the wrong-basis swap, and the rest in verification — clicking thru year-end summaries against the old spreadsheet line by line until the totals converged. The final diff between my hand-built four-year computation and the software's: $2,311 of difference in grasped gains, almost all from the swap error and the corrected basis. My marginal rate made that a real check to the government that I'd have mailed without knowing it was wrong.

the difference between hidden and miscalculated

To be precise about the nature of the error: nothing was hidden. Every transaction was disclosed by the records that existed; the records were just incomplete and partly wrong. Tax authorities tend to treat negligence and concealment differently, but I found I couldn't even enjoy that distinction, because the only reason mine was the innocent version is that I got tired in January instead of confident in March. Luck of timing, wearing the costume of virtue.

what I kept from the spreadsheet, and what I burned

I didn't delete the sheet. I demoted it. Its job now is narrative — the notes in the comment column ("bought during the dip before the halving," "sold for the furnace replacement") are context no CSV contains, and when I look back at a trade, the why matters to me more than the basis. The numbers job belongs to the software, with imports refreshed quarterly instead of annually, because a year of unreviewed transactions is how duplicates metastasize. The trade I made wasn't spreadsheet for software; it was memory for records. The "check this later" note from June 2023 got checked on the second weekend in January 2026. It took me two years and eleven hours to read a reminder I wrote to myself, and the row beneath it was the $280 mistake.