A year of DeFi activity across ten networks, a loan run by automation, a partnership, and a tax deadline. What we pulled, how every movement got classified, and what the CPA got at the end.
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.
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).
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.
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.
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. |
Custom scripts and workbooks, run in this order:
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 your wallets look anything like this, book a call with us and we'll figure out what it takes to get you a ledger your preparer can work from.
Carroll Park Capital 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. Previous in the series: Case Study No. 04 · The bug in the vault door.