DeFi Income vs Capital Gains — How HMRC Taxes Staking, Swaps, and Yield
Staking rewards are income. Swaps are capital gains. Aave deposits are neither. The classification determines your tax rate, your tax form, and your cost basis — and most tools get it wrong.
DeFi income and capital gains are taxed at different rates in the UK — and most crypto tax tools don't distinguish between them. Staking rewards from Lido are income. Swapping ETH for USDC on Uniswap is a capital gain. Depositing into Aave is neither. Getting the classification wrong means paying the wrong rate on every single event.
Capital gains are taxed at 18% or 24%. Income is taxed at 20%, 40%, or 45%. They go on different tax forms, have different allowances, and are calculated independently. The difference can double your tax bill — or halve it.
This guide explains exactly when DeFi activity is income, when it's a capital gain, when it's a non-taxable transfer — and why the classification matters more than most people realise.
The fundamental distinction
HMRC applies a simple test: is this a return on an investment (capital), or compensation for an activity (income)?
| Type | Tax treatment | Rate (2024/25) | Reported on |
|---|---|---|---|
| Capital gain | Disposal of an asset at profit | 18% basic / 24% higher | SA108 |
| Capital loss | Disposal of an asset at a loss | Offsets gains (carry forward) | SA108 |
| Income | Tokens received as reward/yield | 20% / 40% / 45% | SA100 ("Other income") |
This matters because the two tax types go on different forms, have different allowances, and are calculated independently. You can't offset capital losses against income, and you can't use the £3,000 CGT annual exempt amount against income.
What counts as income in DeFi
DeFi income is tokens you receive without disposing of an existing asset. You didn't swap, sell, or exchange anything — tokens simply arrived in your wallet as compensation for an activity.
Staking rewards
When you stake ETH through Lido and receive stETH rebases, or deposit into a Curve gauge and claim CRV rewards, those new tokens are income. You are being compensated for securing the network or providing liquidity — the tokens are earned, not traded for.
HMRC's position (CRYPTO21200): staking rewards are miscellaneous income, taxed at your marginal rate, at fair market value on the date of receipt.
Liquidity pool fee income
Uniswap V3 concentrated liquidity positions earn trading fees continuously. When you collect these fees, the received tokens are income — not a capital gain. You haven't disposed of your LP position; you've collected earnings from it.
Yield farming rewards
Harvesting reward tokens from MasterChef contracts, claiming MAGIC from Atlas Mine staking, or collecting protocol incentives — all income. The reward tokens are acquired at FMV on the harvest date.
Income enters your cost basis
When you receive 100 CRV as a gauge reward worth £50, two things happen: (1) you owe income tax on £50, and (2) those 100 CRV enter your Section 104 pool at a cost basis of £50. If you later sell those CRV for £80, your capital gain is only £30 — you are not double-taxed on the original £50.
What counts as a capital gain
A capital gain arises when you dispose of a cryptoasset — sell it, swap it, spend it, or provide it as liquidity. The gain is the difference between disposal proceeds and your cost basis (from the Section 104 pool, after same-day and 30-day B&B matching).
Token swaps
Swapping ETH for USDC on Uniswap is a disposal of ETH. The USDC you receive is an acquisition. If the market value of the ETH at the time of swap exceeds your cost basis, you have a capital gain.
Selling for fiat
The straightforward case — selling crypto on an exchange for GBP. Proceeds minus cost basis equals your gain.
LP removal
When you remove liquidity from a pool and receive tokens back, you are disposing of the LP token. The tokens you receive are the disposal proceeds. The LP token exits your S104 pool, and the gain or loss is calculated against its cost basis.
NFT purchases
Buying an NFT with ETH is a disposal of the ETH. The NFT is the acquisition. If the ETH has appreciated since you acquired it, you have a capital gain — even though you "just bought something."
What is neither: non-taxable transfers
Some DeFi operations are not taxable events at all. These are movements of assets that don't change beneficial ownership or exchange one asset for another:
- Bridging — moving tokens cross-chain (Hop, Arbitrum, Optimism, Base, Polygon)
- Wrapping/unwrapping — ETH ↔ WETH, stETH → wstETH
- Aave deposits/withdrawals — lending protocol receipt tokens
- Wallet-to-wallet transfers — between addresses you own
These are classified as TRANSFER — cost basis carries over, no gain or loss is recognised.
Why this matters so much
If your tax tool treats an Aave deposit as a disposal, it creates a phantom capital gain on the deposited tokens and resets the cost basis of those tokens when you withdraw. One misclassification corrupts your Section 104 pool for that token from that point forward — every subsequent disposal uses the wrong cost basis.
The grey areas
Some DeFi transactions don't fit neatly into income or capital gains. HMRC guidance is evolving, and reasonable positions exist on both sides:
Liquid staking (ETH → stETH, rETH)
When you stake ETH with Lido and receive stETH, is this a swap (capital gain) or a staking deposit (transfer)? HMRC hasn't issued definitive guidance on liquid staking tokens specifically.
The conservative position — which ChainTax takes — is that acquiring stETH or rETH is a token swap (disposal of ETH, acquisition of stETH/rETH) because the received token has different economic characteristics. Subsequent stETH rebases are then income.
LP deposits (Uniswap, Curve, Balancer)
Adding liquidity to a pool involves depositing tokens and receiving an LP token. ChainTax classifies this as a cost basis change — the deposited tokens exit your S104 pool, and the LP token enters at the combined value. This is not a taxable event in itself, but it restructures your cost basis for when you later remove liquidity.
Airdrops
Airdrops are generally income at FMV on receipt. But if you received tokens with no market value (e.g. a governance token airdrop before trading began), the income value could reasonably be zero — with the full amount becoming a capital gain when you later sell.
Protocol-by-protocol classification
Here is how ChainTax classifies the most common DeFi protocols, based on HMRC guidance and conservative tax treatment:
| Protocol / action | Classification | Tax type |
|---|---|---|
| Uniswap / 1inch swap | CAPITAL_GAIN | CGT (18% / 24%) |
| Uniswap V3 fee collection | INCOME | Income tax (20% / 40% / 45%) |
| Curve gauge CRV rewards | INCOME | Income tax |
| Lido stETH rebase | INCOME | Income tax |
| Lido ETH → stETH deposit | CAPITAL_GAIN | CGT |
| Aave deposit / withdraw | TRANSFER | None |
| Atlas Mine MAGIC rewards | INCOME | Income tax |
| MasterChef harvest | INCOME | Income tax |
| LP add (Uniswap/Curve) | COST_BASIS_CHANGE | None (cost basis restructured) |
| LP remove | CAPITAL_GAIN | CGT |
| Bridge (Hop, Arbitrum, etc.) | TRANSFER | None |
| OpenSea NFT buy/sell | CAPITAL_GAIN | CGT |
Why most tax tools get classification wrong
The root problem is that most crypto tax tools work from token movements, not transaction intent. They see tokens leave and tokens arrive. They don't understand why.
This means:
- CRV rewards look like "tokens received from a contract" — classified as a capital gain instead of income. Wrong tax form, wrong rate.
- Aave deposits look like "tokens sent to a contract, new tokens received" — classified as a swap. Creates a phantom disposal.
- LP fee collection gets merged with LP removal — income and capital gains lumped together as a single event.
- Bridge transfers look like "tokens sent to an external address" — classified as a disposal with a phantom gain.
ChainTax reads the contract address, method signature, and decoded event logs of every transaction. It knows that Minter.mint() on Curve is a reward claim, not a token purchase. It knows that Pool.supply() on Aave is a deposit, not a swap. Classification at the contract level is the only way to get the tax treatment right.
The compounding cost of misclassification
One misclassified event doesn't just create one wrong tax figure — it cascades:
- Wrong cost basis enters the S104 pool. If an Aave deposit is treated as a disposal, the withdrawn tokens get a fresh cost basis at withdrawal value instead of carrying over the original cost basis.
- Every subsequent disposal of that token uses the wrong pool average. Your gains or losses are wrong on every trade from that point forward.
- Income reported as capital gains (or vice versa) goes on the wrong tax form. HMRC can challenge returns where income appears on SA108 instead of SA100.
- Loss carry-forward is miscalculated. Phantom losses from misclassified transfers inflate your carried-forward losses, which then incorrectly offset real gains in future years.
Real numbers
A DeFi user with 50 Aave deposits, 30 bridge transactions, and 20 staking harvests across a tax year has 100 transactions that need correct classification. If those 100 are all treated as capital gains (the default for most tools), the user is potentially over-reporting gains by tens of thousands of pounds — and under-reporting income.
See exactly how your DeFi activity is classified
ChainTax classifies every transaction at the contract level — swaps, income, transfers, and LP events are each handled by protocol-specific logic. No blanket assumptions. No phantom gains. See your full breakdown — free for up to 75 transactions.
This article is for informational purposes only and does not constitute tax, legal, or financial advice. Tax rules can change, and individual circumstances vary. Always consult a qualified tax adviser before filing your Self Assessment return. HMRC guidance referenced: CRYPTO10100, CRYPTO22100, CRYPTO21200, CRYPTO22400. CGT rates shown are for 2024/25 onward (18%/24% from 30 October 2024). DeFi income treatment based on HMRC's general staking guidance — protocol-specific positions may evolve.
Related articles
How to Report Staking Rewards to HMRC (Lido, Rocket Pool, Aave)
Staking rewards are miscellaneous income, not capital gains — but the rules differ for Lido rebases, Rocket Pool rETH, Aave lending, and exchange staking. Here's exactly what goes where on your tax return.
Do I Need to Report Crypto to HMRC? The Complete Checklist
Sold, swapped, staked, or earned crypto? You probably need to report it — even if you lost money. Here's exactly when HMRC requires a Self Assessment return, what triggers reporting, and the thresholds that catch most DeFi users.
NFT Tax in the UK — How HMRC Taxes Buying, Selling, and Minting NFTs
Buying an NFT with crypto is a disposal of the crypto you spent. Selling one is a disposal of the NFT. Minting, royalties, airdrops — every step has tax implications. Here's how HMRC treats NFT transactions and what most tax tools miss.