¿Te worried about making the wrong call on token-for-token trades and facing an HMRC adjustment? Many active traders assume swaps are simple 'no-CGT' events when, in the UK, every crypto-to-crypto swap is potentially a disposal for Capital Gains Tax (CGT) unless trading income rules apply.
This guide focuses exclusively on crypto-to-crypto swaps and the specific CGT pitfalls that active UK traders encounter. It provides practical step-by-step examples of same-day and 30-day matching, pooled calculations, precise cost treatment (fees, gas, spread), record templates and a clear decision framework for CGT versus income treatment.
Key takeaways: what to know in 1 minute
- Every token-for-token swap can be a CGT disposal. HMRC treats cryptoassets as assets for CGT; swapping A for B normally triggers a disposal at the market value in GBP at the time of the swap.
- Matching rules change the calculation. Same-day, 30-day matching and section 104 pooling determine which acquisition cost is matched to the disposal and can materially change gains.
- Fees, gas and slippage matter. Allowable acquisition/disposal costs include explicit fees and directly attributable costs; spreads and slippage must be documented and treated consistently.
- Frequent traders need meticulous records. Date/time (with timezone), wallet/exchange, pair, volumes, GBP valuations and transaction hashes are essential for an accurate CGT position and HMRC queries.
- Trading vs capital is a judgment. If trading activity meets badges of trade, profits may be income taxed; this requires evidence and has different reporting requirements and NICs implications.
Who is classed as an HMRC active trader?
HMRC does not publish a single checklist that automatically classifies someone as an active trader. Instead, HMRC applies established tax law principles and the so-called 'badges of trade' from case law when deciding whether activity constitutes trading (income tax) or investment (CGT).
Key indicators HMRC considers:
- Frequency and volume of transactions. Regular, repetitive swaps across many tokens and large daily volumes point toward trading.
- Systematic plan and organisation. Use of algorithms, bots, spreadsheets, or a documented trading plan increases the likelihood of trading.
- Profit-seeking motive and short holding periods. Frequent token rotation with intention to make short-term gains is an important marker.
- Financing and business-like structure. Use of leverage, dedicated accounts, or business infrastructure (separate business bank accounts, employees, or registered company) suggests trading.
Checklist: active trader factors (weighted):
- Frequency: high (daily/weekly) → strong indicator
- Holding period: short (minutes/days/weeks) → strong indicator
- Use of bots/automated strategies → strong indicator
- Scale: significant aggregate profit or turnover → medium indicator
- Recordkeeping and business processes → medium indicator
Care is required: a high number of swaps alone does not guarantee income treatment. HMRC will assess the totality of facts, including whether activity resembles a hobby, investment, or a business.
Sources and reading: HMRC cryptoassets manual and HMRC guidance provide context for classification. See HMRC: Tax on cryptoassets and the cryptoassets manual at HMRC cryptoassets manual.
When crypto-to-crypto swaps trigger CGT disposals
In most cases, swapping one cryptoasset for another is a disposal for CGT. The disposal consideration is the market value of the asset received at the time of the swap, measured in GBP. Key pitfalls arise when calculating which acquisition(s) are matched to that disposal under HMRC matching rules:
- same-day rule: disposals on the same day are matched to acquisitions on that day
- 30-day rule: disposals are matched to acquisitions made in the following 30 days for the same asset (this applies after same-day matching has been exhausted)
- section 104 pooling: remaining acquisitions of identical assets are pooled and matched by average cost
Practical multi-swap example (worked step-by-step):
Scenario: Trader holds 3 ETH acquired on different dates, then swaps ETH for ADA during the same day and later swaps ADA for BTC. This example shows how same-day/30-day/pooling alter CGT.
- 01 Jan: buy 1 ETH at £1,200 (acquisition A)
- 10 Jan: buy 0.5 ETH at £1,300 (acquisition B)
- 15 Jan: buy 0.5 ETH at £1,400 (acquisition C)
- 20 Jan (09:00): swap 1 ETH → 10,000 ADA when 1 ETH = £1,500 (disposal 1)
- 20 Jan (18:00): buy 0.5 ETH for £800 (acquisition D)
- 21 Jan: swap 0.5 ETH → 5,500 ADA when 0.5 ETH = £820 (disposal 2)
Apply matching for disposal 1 (20 Jan 09:00):
- same-day acquisitions for ETH on 20 Jan? None before 09:00, so none match.
- 30-day rule: find acquisitions of ETH in the 30 days after 20 Jan (i.e. 21 Jan - 19 Feb). Acquisition D on 20 Jan 18:00 is available and counts for 30-day matching but it is later the same day – it still falls within the 30-day window after the disposal and therefore matches.
- if 30-day acquisitions are insufficient, use pool of earlier ETH (A, B, C) at average cost.
Result for disposal 1 valuation: if acquisition D (0.5 ETH at £800) matches 0.5 ETH, the remaining 0.5 ETH is taken from the pool (A,B,C) at averaged cost.
Why this matters: matching order materially affects the base cost used to compute gains and therefore the taxable gain. Active traders who run multiple swaps in a day must sequence and value each event accurately.
Table: matching rules and impact (examples alternate rows)
| Rule |
What it matches |
Practical impact for active traders |
| Same-day |
Acquisitions of identical asset on same UTC day |
High-frequency intraday swaps can tie disposals to cheap same-day buys, reducing gains |
| 30-day rule |
Acquisitions in the 30 days following a disposal |
Sequential swapping can route later buys to earlier disposals; ordering is critical |
| Section 104 pooling |
Remaining acquisitions pooled by asset, matched by average cost |
For long-term positions, pooling smooths costs but hides intraday variance |
Practical tip: establish a fixed timezone reference (UTC) and record timestamp to the second. Matching uses the day of disposal in UK tax law; uncertainty in timestamps can create disputes if HMRC queries matching.
Sources: HMRC manual on matching and pooling: Capital Gains Manual: matching rules.
How to calculate gains for token-for-token trades
Calculation framework (step-by-step):
- determine whether the swap is a disposal: in most cases yes for CGT
- establish the disposal consideration: market value of token received in GBP at the moment of swap
- apply the matching rules to identify the acquisition cost(s) to match to the disposal
- adjust acquisition and disposal amounts for allowable costs (fees, gas) and convert all values to GBP
- compute gain = disposal consideration (GBP) - matched acquisition cost (GBP) - allowable disposal costs
Worked numerical example (single swap):
- Swap: 0.75 ETH → 15,000 TOKENX at 14:00 UTC
- ETH market value at swap: 1 ETH = £1,800 → disposal consideration (0.75 * £1,800) = £1,350
- Matched acquisition: 0.75 ETH originally bought as 0.5 ETH at £1,200 and 0.25 ETH at £1,300 under pooling rules; matched average cost = (0.51,200 + 0.251,300) = £850 (sum) → average per 0.75 = £1,050
- Fees: swap fee = £6 (charged in TOKENX at time of swap), gas = £3
Taxable gain = £1,350 - £1,050 - £9 = £291
Spreadsheet formula suggestions (CSV-friendly):
- Date, Time (UTC), Wallet/Exchange, From token, To token, From qty, To qty, From GBP rate at swap, To GBP rate at swap (optional), Disposal GBP value, Acquisition matched IDs, Acquisition GBP cost, Fees GBP, Gas GBP, Net gain GBP
CSV header example:
- date,time_utc,wallet,from_token,to_token,from_qty,to_qty,from_gbp_rate,disposal_gbp,acquisition_ids,acquisition_cost_gbp,fees_gbp,gas_gbp,net_gain_gbp
Automation tip: when using an aggregator or tax tool, ensure it supports HMRC matching rules (same-day, 30-day, pooling) and permits manual overrides for disputed timestamps.
Valuing received tokens: if the token received has an active market denominated in GBP or a quoted USD/GBP rate at the time, use the most reliable market price. For illiquid tokens, use the best evidence of value (exchange rate at the time, a liquid pair via a relayer or mid-market price). Document the method and source.
Sources for rates: reputable exchanges or CoinMarketCap/CoinGecko snapshots. Always preserve the URL or API call and a screenshot/CSV export to support valuations.
Record-keeping checklist for frequent crypto traders
Active traders should assume HMRC will request evidence. Records must be complete and exportable for Self Assessment or an inquiry.
Minimum record checklist (each trade):
- date and time (UTC and local timezone)
- wallet or exchange name and account ID
- transaction hash for on-chain swaps
- from token and to token and quantities
- precise market value in GBP of the asset received at the time of the swap (source and URL/API)
- acquisition cost(s) being matched (include dates and amounts)
- fees (explicit exchange fees), gas fees and whether fees were deducted in crypto or GBP
- any conversion steps (wrapped tokens, bridging) with clear timestamps
- internal notes: strategy tag (e.g. spot trade, arbitrage, liquidity provision)
- screenshots or CSV exports of order fills and balances
Suggested CSV header (practical; copy-paste into Excel):
- Date,Time (UTC),Platform,Wallet,Tx Hash,From token,From qty,To token,To qty,From GBP rate,Disposal GBP,Acquisition ref,Acquisition GBP cost,Fees GBP,Gas GBP,Net gain GBP,Notes
Template availability: keep a permanent location for these exports and back up monthly. During an HMRC query, consolidated CSVs with pivot summaries speed resolution.
Cost breakdown: fees, spreads and hidden tax traps
Allowable costs for CGT purposes include fees and expenses incurred in acquiring or disposing of an asset when they are directly attributable. Practical guidance for traders:
- exchange fees and broker commissions: allowable and should be added to acquisition or deducted from disposal as appropriate
- on-chain gas fees: if directly attributable to the acquisition/disposal, include in acquisition/disposal cost
- spread/slippage: this is the difference between mid-market price and execution price. Slippage effectively alters the disposal consideration or acquisition cost; document the mid-market reference and treat the execution price as the taxable figure
- aggregator fees (AMM fees, protocol fees): include as fees if directly attributable to the swap
Hidden traps:
- paying fees in the token received: when fees are taken in-kind (e.g. paid in TOKENX), this can itself create a disposal of the fee amount at market value and may trigger CGT on the fee token portion
- wrapped tokens and bridges: wrapping an asset can be a negligible event for some protocols, but bridging across chains that involves an exchange-like conversion or a swap may be treated as a disposal; document the mechanics and valuation
- liquidity provision and impermanent loss: providing liquidity is generally not a simple swap and can create income-like rewards plus CGT complexities on removal; separate liquidity events and value changes carefully
Examples and rules of thumb:
- If fee charged in token A when swapping A→B, record a small disposal of A equal to fee quantity and value in GBP at time of fee deduction
- For AMM swaps with slippage, capture both execution price and quoted mid-market price; treat execution price as taxable consideration and record reason for variance
Reference: for DeFi-specific tax issues, seek expert written commentary and HMRC position papers where available. See guidance from ICAEW and taxation think-tanks: Institute of Chartered Accountants in England and Wales.
Swap workflow at a glance
1️⃣
Record swap
Date/time, pair, qty, tx hash
2️⃣
Value in GBP
Capture market rate source + URL
3️⃣
Match acquisitions
Apply same-day → 30-day → pooling
4️⃣
Include fees & gas
Adjust costs and note if fees paid in crypto
✅
Compute gain/loss
Disposal GBP - matched cost - fees/gas
Deciding: CGT reporting versus income treatment for traders
Decision framework, apply these steps in order:
- evaluate the facts against badges of trade (frequency, scale, organisation)
- if indicators strongly point to trading, treat profits as income and report under Self Assessment as trading profits or via a company structure
- otherwise, treat disposals as capital and report gains under CGT rules
- when in doubt, document the analysis, keep contemporaneous evidence of intent and seek professional advice
Examples to illustrate the difference:
- Passive HODL to swap occasionally between BTC and ETH for rebalancing, typically CGT on disposals
- Systematic high-frequency arbitrage bot trading tens of swaps per day with business infrastructure, likely income tax
Consequences of misclassification:
- If HMRC determines income treatment when CGT was reported, tax liability can increase due to NICs, higher rates and different allowances
- Conversely, if trading profits were reported as CGT and HMRC reclassifies them as income, penalties and interest may apply
Practical defence for traders favouring capital treatment:
- maintain a clear investing strategy documentation
- avoid treating activity like a business (no payroll, no separate company or business accounts, no formal advertising or services)
- keep records that show long-term holding or occasional rebalancing
Legal and authoritative sources: refer to case law on badges of trade and HMRC manuals. Professional advice should be sought for borderline situations.
Advantages, risks and common errors
Benefits of correct CGT handling ✅
- accurate tax position minimises risk of HMRC adjustment
- correct inclusion of fees reduces taxable gains
- clear records speed Self Assessment and reduce professional fees
Risks and errors to avoid ⚠️
- ignoring same-day and 30-day matching rules and using FIFO incorrectly
- failing to account for fees paid in tokens (creates additional disposals)
- poor timestamping leading to incorrect matching
- using exchange reports without independent valuation evidence
Common operational fixes:
- freeze data daily: export exchange CSVs and on-chain logs daily
- reconcile wallet balances weekly to ensure no missing disposals
- annotate transactions with strategy tags and matching references
Frequently asked questions
Does swapping BTC for ETH always trigger CGT?
Yes. In most circumstances a token-for-token swap is a disposal for CGT. The disposal consideration is the market value in GBP of the token received at the time of the swap.
How do same-day and 30-day matching affect my gain?
Same-day acquisitions are matched first, then acquisitions in the following 30 days. This order can cause disposals to be matched to cheap same-day buys or later purchases, changing the base cost and taxable gain.
Are gas fees and DEX slippage allowable costs?
Gas and exchange fees directly attributable to acquisition or disposal are allowable. Slippage changes the execution price and therefore affects the disposal or acquisition value; document mid-market references.
What records will HMRC ask to see for a Self Assessment?
Date/time (UTC), platform/wallet, tx hash, quantities, GBP valuations with source, acquisition references, and details of fees and gas. CSV exports and screenshots are valuable.
When might profits be treated as income instead of CGT?
If trading activity looks like a business, frequent trades, systematic plan, use of bots, and profit-seeking with business organisation, HMRC may treat profits as trading income.
Can trades across chains and wrapped tokens be ignored as minor events?
No. Wrapping or bridging can trigger disposals if they involve an exchange-like conversion. Record the mechanics and valuation to support the tax position.
Your next step:
- Export and consolidate all swap records for the last 24 months into a CSV using the suggested headers and timestamp in UTC.
- Run three sample disposals through the matching rules (same-day, 30-day, pooling) and check whether gains materially differ from any current reporting.
- If activity is frequent or automated, obtain a professional review to decide income vs capital treatment and update Self Assessment accordingly.