Rebuilding a crypto tax history from the chain up
September 2026
The client in this post is a composite. It's built from real reconstruction work we've done, with details changed or left out, because on a public blockchain a couple of stray facts is enough to find somebody.
A client came to us with a year of DeFi activity and a tax deadline. They had exchange CSVs, a handful of wallet exports, a loan that had been running on autopilot and a partnership they'd put crypto into. None of it added up to a ledger their CPA could sign off on.
Their exchange sent a 1099 but it only covered the exchange. Everything after a withdrawal (swaps, bridges, a loan against their bitcoin etc...) never showed up on it. A tracker app pulled in the wallets and still read each automated loan payment as one line.
Where the history lived
Ten networks: Bitcoin, Ethereum, Base, Arbitrum, Optimism, Polygon, Mode, Avalanche, Fantom and Solana. Most of the action was on Ethereum and Base. The rest were wallets used once or twice that still had to be pulled (a wallet that's empty today can still have a history).
Inside one loan payment
Every time the automation paid down the loan, the explorer showed a single transaction. We split each one into its pieces:
Only the swap, the fee and the gas count as sales. When the automation adds to the loan it runs the other way, borrowing stablecoins to buy more wrapped bitcoin. That's new debt and a new lot, nothing to report until it gets sold.
When the automation sells
The automation sells collateral when the price drops through one line and borrows to buy more when it climbs through another. The lines reset after every move, so a fast drop can set off several sales in a row, each one dated and on the return.
How some of it got treated
A few examples (worked through with their CPA, your facts may be different):
| What happened | How it was treated |
|---|---|
| Transfer between your own wallets | Not a sale. Date and cost carry over once both wallets are proven to be yours. |
| Bridge to another network | Usually the same asset moving, so the cost carries over. Any swap tucked into the route gets pulled out as a sale. |
| ETH into wrapped bitcoin sale | Two different assets, so the ETH counts as sold. |
| Borrowing stablecoins against collateral | Loan proceeds, so no income and no sale. |
What we built
Custom scripts and workbooks, run in this order:
- A register of every wallet and who owns it, before any math. The individual and the partnership got separate books.
- Python scripts that pull each network's history and split every transaction into its pieces.
- A workbook with the cost of every lot and a tab for each partner.
- A check against the chain. Ending balances in the workbook have to match the wallets, and anything that doesn't goes on a list of open questions.
Their CPA ended up with sale-by-sale detail laid out like Form 8949, notes on each judgment call and that list of open questions.
If you're in the same spot
- Keep your purchase records, even for coins that left the exchange years ago.
- Write down which wallets are yours. That's what keeps a transfer from looking like a sale.
- If a bot is managing a loan for you, it's selling in your name. Pull its history every quarter.
Want your own ledger rebuilt?
If your wallets look anything like this, book 15 minutes with me and we'll figure out what it takes to get you a ledger your preparer can work from.
Book 15 minutesOr email request@jamescrews.com
Jim
J Crews Consulting isn't a CPA firm and none of this is tax advice. We build the record and work alongside your tax preparer, who makes the calls.