All posts

Yes, Swapping Crypto Is a Taxable Event

Michael Cutajar|22 June 2026|4 min read
cryptotaxcapital-gainsweb3integrations

You swap some ETH for SOL. No bank involved, no dollars hit your account, the whole thing settles onchain in twelve seconds. You tell yourself the line everyone tells themselves: I didn't cash out, so there's nothing to report.

Here's the catch. In the US, you just triggered a taxable event.

A crypto-to-crypto swap is a disposal. The IRS treats it as if you sold the ETH for its fair market value in dollars at the moment of the trade, then used those dollars to buy SOL. If your ETH had gone up since you bought it, you owe capital gains tax on that gain — right now, this tax year — even though not a single dollar ever moved through a bank.

No cash out. Still a disposal. That's the part that catches people.

The wallet shows the moves. It doesn't know which ones are taxable.

Your wallet, your exchange, your block explorer — they are all genuinely brilliant at the layer they own. Etherscan or Covalent will hand you every transaction with perfect fidelity: timestamps, amounts, token addresses, gas. An open-source portfolio tool like Rotki will pull all of that together and show you a clean, accurate ledger of everything you've ever done onchain.

That's real infrastructure. The data is not the hard part anymore.

The hard part is the next question: which of these moves is a taxable event, and how? Because the transaction history doesn't carry that answer — tax law does, and tax law sorts your activity into buckets that have nothing to do with how the blockchain sees it:

Buy with cash (USD → ETH)   → not a taxable event
Sell to cash (ETH → USD)    → disposal, capital gain/loss
Swap (ETH → SOL)            → disposal, capital gain/loss
Spend (ETH → coffee)        → disposal, capital gain/loss
Staking / airdrop reward    → ordinary income at receipt

Look at that list and the trap jumps out. Four of those five lines are taxable, and the only "safe" one — buying with cash — is the one people think is the dangerous one. Swapping feels free because no dollars appear. Spending feels free because you were just buying a coffee. But the moment you part with a crypto asset, the US tax code calls it a disposal and wants to know the gain.

And rewards are their own thing entirely. Staking rewards and airdrops aren't capital gains at all — they're ordinary income, valued in dollars at the moment they land in your wallet. That same token then carries a fresh cost basis for when you eventually dispose of it. One reward, two separate tax moments. No block explorer is going to tell you that.

Multiply this across every wallet, every chain, every year — and across 190+ jurisdictions that each draw these lines differently — and you see why nobody wants to hand-maintain it.

The data is the rail. OpenAccountants is the answer.

This is a clean division of labour, and I want to be precise about it because it's not a competition.

Rotki, Etherscan, Covalent, your exchange — they own the data rail. They reconstruct exactly what happened onchain, and they do it better than any human staring at a wallet ever could. That's the hard, valuable thing they've built, and it isn't going anywhere.

OpenAccountants sits one layer up and answers the question the rail was never meant to answer: is this move a taxable event, and how is it taxed — here, in this jurisdiction, under this year's rules? Capital gain or ordinary income. Disposal or non-event. Holding period, cost basis, the lot.

The difference that matters: every rule we return is signed off by a named, licensed accountant. Not scraped, not "the model thinks so." A real person with a practising certificate put their name to it. The US treatment behind that ETH-to-SOL swap — disposal at fair value, capital gains due — is verified by Amir Pelinkovic, our US lead. When an AI agent calls our MCP and gets back "this swap is a taxable disposal, here's the gain," there's a human standing behind that answer.

So the flow becomes: your wallet or block explorer gives you the transaction history → your agent (or your app) asks OpenAccountants how each move is taxed in your jurisdiction → you get back a clean classification of buys, sells, swaps, spends and rewards, with the right tax treatment on each, and the verifier's name attached. The data stays accurate. The tax answer stops being a guess.

Try it yourself

We built a small open-source reference integration that does exactly this. It reads a crypto transaction history and runs each line through the OpenAccountants MCP to classify it as buy, sell, swap, spend or reward — and tells you which ones are taxable events and how. It's deliberately tiny and readable, so you can see the seam between "what the chain recorded" and "what the tax code does with it" with your own eyes.

Have a poke around: openaccountants/crypto-tax-demo.

Then connect the OA MCP to your own agent or app at openaccountants.com and ask it the question your wallet was never built to answer: was that a taxable event?