How HMRC Taxes DeFi Token Swaps (Uniswap, 1inch, Curve)
Every token-to-token swap is a disposal for CGT — even without touching fiat. How HMRC taxes DEX swaps, aggregator routing, stablecoin swaps, and what most tools get wrong.
You swapped ETH for USDC on Uniswap. No fiat was involved. No bank account was touched. You might assume there's nothing to report.
That assumption will cost you. Every token-to-token swap is a disposal for Capital Gains Tax purposes. It doesn't matter that you never "cashed out." HMRC treats the moment you exchange one cryptoasset for another as a taxable event — the same as if you'd sold for pounds and immediately bought the new token.
This guide covers exactly how HMRC taxes DeFi swaps, what the gain calculation looks like, how aggregators and routing complicate things, and the mistakes that lead to incorrect tax bills.
Why every swap is a disposal
HMRC's position is clear: disposing of a cryptoasset includes "exchanging it for a different type of cryptoasset" (CRYPTO22100). When you swap ETH for USDC on a DEX, you've disposed of your ETH at its market value in GBP at the time of the transaction. The USDC you receive is a new acquisition, also valued at GBP market price on that date.
The rule that catches people
Swapping ETH → USDC is a disposal of ETH. Swapping USDC → WBTC is a disposal of USDC. Swapping WBTC → ETH is a disposal of WBTC. Every leg of every swap trail is its own taxable event. If you did 50 swaps on 1inch this year, you have 50 disposals to report.
The gain or loss on each swap is calculated as:
Proceeds (GBP value of token received at time of swap)
minus Cost basis (from your Section 104 pool for the token disposed)
minus Gas fees (allowable cost under HMRC rules)
= Capital gain or loss
Both sides of the swap then update your Section 104 pools. The token you disposed of has units removed from its pool. The token you received enters its own pool as a new acquisition at the GBP market value on that date. These pools track a weighted average cost basis across all your holdings of each token — HMRC doesn't use FIFO or LIFO. See our full guide to Section 104 pooling →
Scenario 1: a simple DEX swap
You bought 2 ETH in January 2024 for £3,400 total. In November 2024, you swap 1 ETH for 3,200 USDC on Uniswap V3 when ETH is worth £2,800. Gas costs £4.
Worked example
Proceeds: £2,800 (GBP value of 3,200 USDC at time of swap)
Cost basis: £1,700 (1 ETH from your S104 pool, average cost £1,700/ETH)
Gas: £4
Gain: £1,096
This disposal happened after 30 October 2024, so it's taxed at the new CGT rates: 18% for basic rate taxpayers, 24% for higher rate. Your S104 pool for ETH now holds 1 ETH at £1,700. Your USDC pool gains 3,200 USDC at a cost basis of £2,800.
Scenario 2: aggregator swaps and routing
Aggregators like 1inch don't execute a single swap. They split your trade across multiple liquidity pools to get the best price. A single 1inch transaction might route your ETH through Uniswap V3, Balancer, and Curve — with intermediate hops through WETH, USDT, or other tokens along the way.
From a tax perspective, only the net flow matters. If you sent 1 ETH and received 3,200 USDC, that's one disposal of 1 ETH — regardless of how many pools it touched in between. The intermediate routing steps are not separate taxable events.
How ChainTax handles aggregator routing
ChainTax traces all token transfers within a transaction and nets bidirectional same-token flows. If your swap routes through WETH as an intermediate step, those WETH transfers cancel out in the netting — you're left with what you actually sent and what you actually received. This is the correct taxable disposal. Tools that count each intermediate hop as a separate swap will massively overstate your number of disposals and produce incorrect gains.
Similarly, WETH wrapping and unwrapping within a swap is not a separate taxable event. WETH is just a technical wrapper around ETH used by smart contracts. HMRC doesn't treat the wrap as a disposal, and neither does ChainTax.
ChainTax supports the major DEXes and aggregators where UK DeFi users trade: Uniswap V1, V2, and V3; 1inch across four contract versions (V2, V3, V5, V6); Curve; Balancer V1 and V2; Mooniswap (1inch's own AMM); and any other DEX via the generic swap heuristic, which catches SushiSwap and similar protocols. Try any transaction hash in the free transaction explainer to see the classification instantly.
Scenario 3: stablecoin-to-stablecoin swaps
Swapping USDC for DAI feels like moving between two versions of the same thing. They're both pegged to the dollar. Surely there's no gain?
Usually, you're right — the gain will be close to zero. But "close to zero" isn't the same as "not reportable." HMRC treats USDC and DAI as different cryptoassets. Exchanging one for the other is a disposal. If the GBP/USD exchange rate has moved since you acquired the USDC, or if you acquired it at a slight premium or discount, there will be a small gain or loss.
Why it still matters
You bought 10,000 USDC in June 2024 when GBP/USD was 1.27 — cost basis £7,874. You swap to DAI in December when GBP/USD is 1.25 — proceeds £8,000. That's a £126 gain from FX movement alone. Over many stablecoin swaps, these add up. More importantly, every disposal counts towards your obligation to report if total proceeds exceed four times the annual exempt amount (£12,000 for 2024/25).
Scenario 4: failed transactions
Your swap failed — the transaction reverted, no tokens changed hands. Is the gas fee an allowable cost?
No. A failed transaction is not a disposal. Since there was no disposal, there's no gain to deduct costs from. The gas fee is simply a lost cost. You can't claim it against CGT, and you can't claim it as an expense unless you're trading as a business (which almost no individual investor is).
ChainTax detects failed transactions and classifies them correctly — they won't appear as disposals in your report, and the gas won't be incorrectly added to your allowable costs.
The 2024/25 split year and your swaps
The Autumn Budget on 30 October 2024 changed CGT rates mid-year:
| Period | Basic rate | Higher rate |
|---|---|---|
| 6 Apr – 29 Oct 2024 | 10% | 20% |
| 30 Oct 2024 – 5 Apr 2025 | 18% | 24% |
If you were active on DEXes throughout the year, your swaps before and after 30 October are taxed at different rates. A swap on 28 October is taxed at 10%/20%. The same swap two days later is taxed at 18%/24%. Your self-assessment needs to split these correctly — this is reflected in SA108 Box 51, an adjustment box that accounts for the rate change.
The annual exempt amount for 2024/25 is £3,000. Only gains above this threshold are taxed. Losses from swaps that went against you can offset gains — but HMRC only lets you use losses to reduce your net gain down to the exempt amount, not below it.
Gas fees: the one cost you can always deduct
Every on-chain swap costs gas. HMRC treats gas fees paid on a disposal as an allowable cost, which directly reduces your taxable gain. On a £1,000 gain with £12 of gas, you're taxed on £988.
This matters more than people think. If you executed 50 swaps across the year and paid an average of £8 in gas per transaction, that's £400 of allowable costs — potentially saving you £72 to £96 in tax depending on your rate. ChainTax automatically prices gas in GBP at the time of each transaction and deducts it from the gain.
What generic tools get wrong
The most common errors we see from other crypto tax tools when handling DEX swaps:
- Counting aggregator routing hops as separate disposals. A single 1inch swap that routes through three pools is one disposal, not three. Tools that parse each Transfer event as an independent swap will triple-count your disposals and produce phantom gains.
- Treating WETH wraps as taxable. ETH → WETH is a technical wrapper used by smart contracts. It's not a disposal. Tools that classify every WETH wrap as a swap inflate your disposal count and create gains that don't exist.
- Missing gas as an allowable cost. Some tools don't price gas in GBP at the time of the transaction, or don't deduct it from the gain. Small per-transaction, but material across a year of DeFi activity.
- Applying a single CGT rate to 2024/25. The split-year rate change means every disposal needs per-transaction rate determination. A flat rate across the year is wrong by definition.
- No Section 104 pooling. Tools that use FIFO matching instead of HMRC's required same-day → B&B → S104 priority chain will produce different cost basis figures and different gains. The numbers might look plausible, but they won't match what HMRC expects.
What to do if you've been swapping all year
- Accept that every swap is a disposal. There's no threshold below which swaps become non-reportable. If you swapped tokens, you have disposals.
- Count your disposals, not your "cash-outs." The number of swaps you did — including token-to-token swaps that never touched fiat — is your number of reportable disposals for SA108 Box 13.1.
- Check the dates. In 2024/25, the CGT rate depends on when each swap happened. Anything before 30 October is 10%/20%. Anything on or after 30 October is 18%/24%.
- Don't forget losses. Swaps that resulted in a loss (you disposed of a token for less than your average cost basis) are valuable. They offset your gains. The £3,000 annual exempt is applied after loss offset.
- Verify your tool handles aggregators correctly. If you used 1inch and your tax tool shows three disposals for a single swap transaction, something is wrong. Paste the transaction hash into our free explainer to see what ChainTax detects.
See exactly how your swaps are classified
ChainTax auto-classifies swaps across Uniswap, 1inch, Curve, Balancer, and more — with net flow tracing, per-disposal CGT rates, Section 104 pooling, and gas deductions. 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: CRYPTO22100, CRYPTO22200, CRYPTO22400.
Related articles
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.
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.