How DeFi is taxed
Swaps, pools, yield, and gas, and why the hardest part of DeFi taxes is that you're the only one keeping the records.
You made a few swaps on a DEX last year, moved some tokens into a liquidity pool, collected a bit of yield, and now you're staring at a wallet full of transactions wondering which ones the IRS cares about. The short answer is probably more than you'd like. DeFi doesn't rewrite the rules of crypto tax. It just buries them under activity that no exchange tracks for you and no form arrives to explain.
Why a swap on a DEX is a sale
The IRS treats crypto as property. When you dispose of property, you have a capital gain or loss, measured against what you paid for it. Trading one token for another is a disposal, even though no dollars ever touched your bank account.
Say you bought 1 ETH for $2,000. Months later you swap it on Uniswap for USDC when ETH is worth $3,000. That swap is a sale of your ETH. You have a $1,000 gain, and it makes no difference that you never cashed out to dollars. If you held the ETH more than a year, the gain is long-term, taxed at 0, 15, or 20 percent depending on your income. A year or less, and it's short-term, taxed at your ordinary rate.
Every leg is its own event. Swap ETH for a smaller token, then swap that token back to ETH a week later, and you have two disposals to report, each with its own gain or loss. The price you got and the gas you paid both feed the math.
Liquidity pools are where it gets murky
Here the honest answers get shorter. When you deposit two tokens into a liquidity pool, you usually receive an LP token back that represents your share. Is handing over your tokens for that LP token a taxable disposal? The IRS hasn't said.
Two camps exist. One treats the deposit as a swap: you gave up ETH and USDC, you got an LP token, that's a disposal. The other treats it as putting assets into something you still control, closer to a deposit into an account, and not taxable until you pull out. Both positions have supporters. Neither has a clear IRS blessing.
The choice ripples through everything after it. If the deposit was a disposal, your LP token has a fresh cost basis, and withdrawing later is another disposal measured against that basis. If it wasn't, your original basis carries through. Pick a position, apply it consistently, and keep notes on why you chose it. A reasonable method you can explain is worth far more than a guess you can't.
Lending, staking, and yield are income when they land
When a protocol pays you, that's income. Interest on USDC you lent out through Aave counts. So do staking rewards, and the new tokens that pile up in your wallet from providing liquidity. Whatever you receive, its dollar value at the moment it lands is ordinary income, the same category as wages and taxed at your regular rate.
That receipt value also becomes your cost basis in the reward tokens. Collect a token worth $40 when it hits your wallet, sell it later for $70, and you have $40 of ordinary income now plus a $30 capital gain at the sale. Sell it for $25 instead, and you still had $40 of income, plus a $15 capital loss on the sale. The income doesn't disappear just because the token dropped after you got it.
Get matched with a vetted crypto-tax pro who works in DeFi every day and can tell you where the gray areas actually stand for your return.
Get matched with a crypto-tax pro →Timing is the tricky part. Rewards can accrue every block. You don't owe tax on rewards you can't yet claim, but once they're yours to take, the clock has started. For heavy farming, most people snapshot values at sensible intervals rather than trying to price every second.
What happens to gas fees
Gas fees are the cost of doing anything on-chain, and they get handled a couple of ways. Pay gas to buy a token, and that cost generally adds to your cost basis in what you bought. Pay gas to sell or swap, and it generally reduces your proceeds. Either way it usually shrinks your eventual gain.
There's a wrinkle. You pay gas in ETH or the chain's native token, and spending that ETH is itself a disposal of it. In practice the gain or loss on a few dollars of gas is tiny, but it's real, and good software tracks it. Gas paid on a failed transaction is murkier still. You spent real ETH and got nothing back, and whether that's a deductible loss for an individual investor isn't clearly settled.
Nobody sends you a form, so your records are the return
On a centralized exchange, you sell and a record follows. DeFi has no such thing. There's no company that knows your name, your cost basis, or your gains. The protocol is code. Which means the record is yours to build from scratch.
This is changing at the edges, but less than you'd hope. Form 1099-DA is the new digital-asset broker form. For 2025 activity, custodial brokers like Coinbase report gross proceeds, with cost-basis reporting phasing in for 2026. But the rule that would have forced DeFi front-ends to report was repealed in 2025, so your Uniswap and Aave activity generates no form at all. And form or no form, you're still required to report every taxable transaction.
So your wallet history is your source of truth. Pull your full transaction record and tag each event by type before you fill out a single form. Disposals go on Form 8949 and flow to Schedule D. Ordinary income from rewards and interest goes on your return as income. The 1040 asks a plain yes-or-no digital asset question near the top, and DeFi activity is a yes.
One thing works in your favor: losses. If your sales and swaps net out to a loss for the year, that loss offsets your capital gains, then up to $3,000 of ordinary income, with anything left over carrying forward to future years. And the wash-sale rule, which blocks claiming a loss when you rebuy the same security within 30 days, does not currently apply to crypto. Lawmakers have proposed closing that gap for years, so it's worth watching, but as things stand you can sell a token at a loss and buy it back the same day. Just don't build a strategy around a rule that could change.
The tax on DeFi isn't hard because the rules are exotic. It's hard because you're the only one keeping score. Get the record right first, and the return mostly writes itself.