Skip to content

UK Capital Gains Calculation

How PrivateACB calculates Capital Gains Tax for UK cryptocurrency using Section 104 pooling, the same-day rule, and the 30-day bed & breakfasting rule — all in compliance with HMRC guidance.

HM Revenue & Customs (HMRC) treats cryptocurrency as a capital asset subject to Capital Gains Tax (CGT). Every disposal of a crypto asset — selling for GBP, trading for another crypto, or using crypto to pay for goods and services — triggers a chargeable gain or loss under the Taxation of Chargeable Gains Act 1992 (TCGA 1992).

PrivateACB calculates your capital gain or loss for every disposal, applies the correct matching rules, and generates the reports you need for your Self Assessment tax return.

What PrivateACB does for UK users:

  • Applies the three-tier matching hierarchy (same-day → 30-day → Section 104 pool) to every disposal
  • Tracks each asset’s Section 104 pool (running quantity and cost)
  • Calculates the Annual Exempt Amount (AEA) deduction
  • Generates the SA108 form summary (boxes 13.1–13.8) for Self Assessment
  • Produces detailed reports: Capital Gains Detail, Pool History, Income, and Audit Provenance

Important: This guide assumes you’ve already imported your transaction data. If you haven’t, see the Import Flow Guide first.


How It Differs from Canada, the US, and Australia

Section titled “How It Differs from Canada, the US, and Australia”
FeatureCanadaUnited StatesAustraliaUnited Kingdom
MethodAverage Cost (ACB)Lot-based (FIFO/LIFO/HIFO)Lot-based (FIFO/LIFO/HIFO)Section 104 Pool (weighted average)
Matching rulesNone — straight to poolNone (lots selected by method)None (lots selected by method)Same-day → 30-day → Pool
Loss rulesSuperficial loss (30-day window)Wash sale (30-day window, optional)None (Part IVA is intent-based)30-day rule changes cost, not loss denial
Holding period benefitNoneShort-term vs long-term rates50% CGT discount (>12 months)None
Per-account trackingNoYes (T.D. 10000, from 2025)NoNo
Tax yearJanuary – DecemberJanuary – DecemberJuly 1 – June 30April 6 – April 5
CurrencyCADUSDAUD (A$)GBP (£)

The UK’s calculation model is unique among the four jurisdictions PrivateACB supports:

  • Three-tier matching — Before the Section 104 pool is consulted, disposals are first matched against same-day acquisitions, then acquisitions within the next 30 days. Only the remaining quantity uses the pool’s average cost. No other jurisdiction has this.
  • Forward-looking matching — The 30-day rule looks at future acquisitions (the next 30 calendar days after the disposal). This is fundamentally different from Canada’s superficial loss rule, which looks both backwards and forwards.
  • No loss denial — The 30-day rule changes which cost is used for the disposal, rather than denying a loss after the fact. The loss is never created, rather than being denied and added back.
  • No holding period — All crypto disposals are taxed at the same CGT rate regardless of how long you held the asset.

Transaction data imported:

  • All cryptocurrency purchases, sales, trades
  • Rewards, staking, mining, airdrops
  • From ALL exchanges and wallets you’ve used

Currency rates (if trading in USD):

  • CoinGecko supports GBP pricing natively — no separate FX import needed for most assets
  • For USD-denominated exchanges, PrivateACB handles USD→GBP conversion automatically

Understanding of your holdings:

  • Which cryptocurrencies you own
  • Approximate number of transactions per asset
  • Date range of your trading activity

Matching rules always apply: The same-day and 30-day rules are mandatory under HMRC guidance. They cannot be disabled. PrivateACB applies them automatically.

One method for the UK: UK tax law requires the Section 104 pool method. You cannot choose FIFO, LIFO, or other methods. The method selector shows “ACB” (average cost basis), which is the mathematical equivalent of the Section 104 pool.


When you dispose of cryptocurrency, PrivateACB determines the allowable cost using three rules, applied in strict order:

All acquisitions and disposals of the same token on the same calendar day are consolidated first. If you bought and sold the same asset on the same day, the disposal is matched to the same-day acquisition before anything else.

Example: You buy 2 ETH at 9am and sell 1 ETH at 5pm on the same day. The disposal is matched to the same-day acquisition at the actual purchase cost — not the pool’s average cost.

If the disposal quantity exceeds same-day acquisitions, the remainder passes to Rule 2.

Rule 2: 30-Day Rule (Section 106A — “Bed & Breakfasting”)

Section titled “Rule 2: 30-Day Rule (Section 106A — “Bed & Breakfasting”)”

After same-day matching, any remaining disposal quantity is matched against acquisitions in the next 30 calendar days (forward-looking only). This prevents the classic “bed & breakfasting” tax avoidance strategy — selling at a loss and immediately rebuying.

Key details:

  • The window starts the day after disposal. Selling on January 15 means acquisitions from January 16 through February 14 are matched.
  • Earliest disposal gets priority when multiple disposals compete for the same acquisition.
  • Acquisitions matched by this rule are diverted — they never enter the Section 104 pool.

If the disposal quantity still has a remainder after 30-day matching, it passes to Rule 3.

Whatever remains after same-day and 30-day matching is removed from the Section 104 pool at the pool’s weighted average cost per token. Each cryptocurrency has its own separate pool.

Pool formula:

Allowable cost = Pool cost × (tokens disposed ÷ total tokens in pool)

For the full matching rules guide — including worked examples, edge cases, and how PrivateACB’s two-pass algorithm works — see UK Matching Rules.


The Calculation Dashboard uses a four-zone layout — the same layout used for all four jurisdictions.

At the top of the dashboard:

  • Jurisdiction toggle — Select “United Kingdom” (shows the Union Jack flag)
  • Tax year selector — Shows UK tax years in “2025/26” format (April 6, 2025 to April 5, 2026)
  • Method selector — Shows “ACB” (the only available method for UK)

For the UK, the rules banner shows:

  • Tax Year — e.g., “2024/25”
  • Currency — “GBP”
  • Method — “ACB” (Section 104 pool)
  • No wash sale or superficial loss pills — the 30-day rule is built into the matching, not a separate toggle

Shows all your imported cryptocurrency assets with readiness indicators:

ColumnWhat It Shows
CheckboxSelect assets for batch calculation
AssetCryptocurrency symbol (BTC, ETH, etc.)
Asset HistoryAll-time date range of your transactions
{Year} TxnsNumber of transactions in the selected tax year, plus total count
SourceOriginal trading currency (GBP, USD, or Mixed)
ConvertedCurrency conversion status
PricesShows a checkmark if all prices are available, or a count of missing prices
Last CalculatedWhen this asset was last calculated, or “Needs Calculation”
MethodLocked to ACB for UK

Shows all previous calculations with their parameters (method, tax year, timestamp) and financial results after completion.

Financial result columns (after calculation completes):

ColumnDescription
DispNumber of disposals
Net G/LNet capital gain or loss (green for gains, red for losses)
GainsTotal capital gains
LossesTotal capital losses
ProceedsTotal proceeds from all disposals

  1. Open your database in PrivateACB
  2. Click the ACB Calculator tab in the top navigation
  3. The Calculation Dashboard appears with the four zones described above
  1. Click United Kingdom in the jurisdiction toggle
  2. Select your tax year (e.g., “2024/25”)
  3. Method is automatically set to ACB — no other options for UK

The rules banner confirms your configuration. For the UK, you’ll see the tax year, currency (GBP), and method (ACB). No additional toggles needed.

Before calculating, scan the Asset Table:

  • Prices column should show a checkmark for each asset
  • Converted column should show “GBP” (green) or ”—” if already in GBP
  • If you see “N pending” in the Converted column, click it to navigate to Market Data

Option A — Individual assets: Check specific assets, click “Calculate Selected (N)”

Option B — All assets: Click “Calculate All”

Each asset processes sequentially. You’ll see:

  • A progress bar with throughput (transactions per second)
  • The current asset being processed
  • Results appearing as each asset completes

After completion, Zone D shows financial results per asset:

  • Net G/L — Your net capital gain or loss
  • Gains/Losses — Broken down separately
  • Proceeds — Total disposal proceeds

For detailed per-disposal results, go to the Reports tab.


The first portion of your net capital gains each tax year is exempt from CGT:

Tax YearAEA
2024/25 onwards£3,000
2023/24£6,000
2022/23 and earlier£12,300

The AEA is a deduction — it reduces your taxable gains, but only the excess above the AEA is taxed.

How PrivateACB shows this:

  • The Dashboard TaxSummaryCard displays: Net Gain/Loss → Annual Exempt Amount (£3,000) → Taxable Gains → Estimated Tax
  • The SA108 report shows the AEA deduction as a separate line item

From 30 October 2024 onwards:

Taxpayer BandRate
Basic rate (income ≤ £50,270)18%
Higher/additional rate24%

PrivateACB defaults to 18% but lets you adjust the rate in the TaxSummaryCard.


Understanding what the UK doesn’t have helps avoid confusion:

  • No wash sale rule — The 30-day rule changes cost allocation, not loss denial
  • No superficial loss rule — No backward-looking loss denial window
  • No lot tracking — UK uses pooling (Section 104), not individual lots. No FIFO/LIFO/HIFO choice.
  • No per-wallet tracking — No equivalent to the US T.D. 10000 requirement. All tokens of the same type are pooled regardless of which exchange or wallet holds them.
  • No short-term/long-term distinction — All gains taxed at the same CGT rate
  • No CGT discount — Unlike Australia’s 50% discount for holding >12 months

Situation: You own 5 ETH with a pool cost of £15,000 (avg £3,000/ETH). You sell 2 ETH for £10,000.

No same-day or 30-day acquisitions exist.

Result:

  • Pool cost for 2 ETH: £15,000 × (2/5) = £6,000
  • Gain: £10,000 - £6,000 = £4,000
  • Remaining pool: 3 ETH, £9,000

Situation: You sell 1 BTC for £40,000 (pool avg cost £50,000/BTC), then buy 1 BTC for £38,000 later the same day.

Result:

  • Same-day rule applies — disposal matched to same-day acquisition
  • Allowable cost: £38,000 (the actual same-day purchase price, not the pool’s £50,000 average)
  • Gain: £40,000 - £38,000 = £2,000
  • The 1 BTC purchased is diverted from the pool (matched to same-day disposal)

Without the same-day rule, the pool average would have given a loss. The same-day rule prevents this.

Situation: You sell 1 ETH at a loss on January 15, then rebuy 1 ETH on January 25 (10 days later).

Result:

  • 30-day rule applies — disposal matched to the January 25 acquisition
  • Allowable cost: the actual January 25 purchase price
  • The reacquired ETH is diverted from the pool

This prevents “bed & breakfasting” — selling to crystallise a loss then immediately rebuying.

Scenario 4: Mixed Matching (All Three Rules)

Section titled “Scenario 4: Mixed Matching (All Three Rules)”

Situation: Multiple transactions with all three rules triggered.

PrivateACB’s two-pass algorithm handles this automatically. The Audit Provenance report shows exactly which rule was applied to each portion of each disposal, with match type badges (same-day, 30-day, pool, or mixed).

Situation: You imported Q4 transactions and need to update calculations.

Steps:

  1. Go to the Data Viewer tab
  2. Delete old calculation jobs for affected assets
  3. Return to the Calculation Dashboard
  4. Recalculate the affected assets

Why delete first: Running multiple calculations for the same asset creates duplicate records. Always delete old calculations before recalculating.


The UK tax year is different from the calendar year used by Canada and the US, and from Australia’s July–June fiscal year:

  • “2024/25” means April 6, 2024 to April 5, 2025
  • A BTC sale on March 15, 2025 falls in the 2024/25 tax year
  • A BTC sale on April 10, 2025 falls in the 2025/26 tax year

PrivateACB displays UK tax years in the “2024/25” format throughout the app and correctly assigns all transactions to the right tax year based on the disposal date.


After calculating, go to the Reports tab:

  1. Select United Kingdom in the jurisdiction toggle
  2. Click SA108 Summary
  3. Review the form — boxes 13.1 through 13.8 are populated automatically
  4. Export to PDF or CSV
  5. Use these values when completing your Self Assessment tax return

For a per-disposal breakdown showing which matching rule was applied:

  1. Go to the Reports tab
  2. Click Capital Gains Detail
  3. Each disposal shows: proceeds, allowable cost, gain/loss, and match type (same-day, 30-day, pool, or mixed)

To see how your Section 104 pool changed over time:

  1. Go to the Reports tab
  2. Click Pool History
  3. View the running pool balance per asset — every acquisition and disposal event with its effect on the pool

This report is unique to the UK. It shows which acquisitions were diverted by matching rules and never entered the pool.

For staking, mining, and airdrop income:

  1. Go to the Reports tab
  2. Click Income Report
  3. Income is grouped by type with HMRC reporting form references (SA103, SA100 Box 17)

For the full mathematical formulas behind UK capital gains calculations — including the Section 104 pool formula, same-day cost apportionment, 30-day matching cost allocation, and worked examples — see the UK Capital Gains Formulas (Technical) guide.

For a deep dive into the three matching rules with worked examples and edge cases, see the UK Matching Rules Guide.


Q: Can I use FIFO or LIFO instead of the Section 104 pool?

Section titled “Q: Can I use FIFO or LIFO instead of the Section 104 pool?”

A: No. UK tax law requires the Section 104 pool method with same-day and 30-day matching rules. This is mandatory and cannot be changed.


Q: Is the 30-day rule the same as the wash sale rule?

Section titled “Q: Is the 30-day rule the same as the wash sale rule?”

A: No. They serve a similar purpose (preventing loss harvesting) but work differently:

  • US wash sale: Loss is calculated, then denied and added to the replacement cost basis
  • UK 30-day rule: The matching rule changes which cost is used for the disposal. The loss is never created in the first place.

A: No. The 30-day rule is forward-looking only. It matches disposals to acquisitions in the next 30 days, not the previous 30 days. This is different from Canada’s superficial loss rule, which looks both ways.


Q: How does PrivateACB handle the same-day and 30-day rules technically?

Section titled “Q: How does PrivateACB handle the same-day and 30-day rules technically?”

A: PrivateACB uses a two-pass algorithm:

  1. Pass 1 scans all transactions to build a match table — identifying same-day and 30-day matches before any calculations
  2. Pass 2 processes transactions chronologically, using the pre-computed matches to determine costs

This ensures correct results even when multiple disposals compete for the same acquisitions.


Q: What if I have transactions from before I started using PrivateACB?

Section titled “Q: What if I have transactions from before I started using PrivateACB?”

A: Import them all. PrivateACB needs your complete transaction history to correctly compute the Section 104 pool’s running balance. Even old transactions affect your current pool cost.


Q: Can I calculate multiple assets at once?

Section titled “Q: Can I calculate multiple assets at once?”

A: Yes. Select multiple assets using the checkboxes, or click “Calculate All”. PrivateACB processes them sequentially in a batch.


Q: Do I need to report gains below the AEA?

Section titled “Q: Do I need to report gains below the AEA?”

A: You may still need to file if your total disposal proceeds exceed 4 × the AEA (£12,000 for 2024/25 onwards), even if your net gain is below the £3,000 AEA. Check HMRC guidance on reporting requirements.


Cause: Some transaction prices are missing from your data.

Solution:

  1. Go to the Market Data tab
  2. Fetch crypto prices for the affected asset. CoinGecko supports GBP natively.
  3. Return to the Calculation Dashboard — the Prices column should show a checkmark

Cause: Some transactions were priced in a currency other than GBP (e.g., USD from a US exchange).

Solution:

  1. Click the red “N pending” text to navigate to Market Data
  2. Import exchange rates for the relevant date range
  3. Return to the Calculation Dashboard and verify the Converted column shows “GBP” in green

”Needs Calculation” badge won’t clear

Section titled “”Needs Calculation” badge won’t clear”

Cause: New transaction data has been imported since the last calculation, making old results stale.

Solution: Delete the old calculation (Data Viewer tab), then recalculate the asset.

Possible causes:

  1. Missing transactions — you didn’t import all buy/sell data
  2. Duplicate transactions — the same file was imported twice
  3. Incorrect prices — transaction data has wrong price values
  4. Currency conversion issues — USD trades not converted to GBP

How to verify:

  1. Go to the Reports tab and generate a Capital Gains Detail report
  2. Review the per-disposal breakdown — check match types and costs
  3. Generate a Pool History report to see the running pool balance
  4. Cross-check against your exchange records

Import ALL transactions from ALL sources before running your first calculation. Incomplete data produces incorrect pool balances and may result in inaccurate SA108 figures.

Before calculating, scan the Asset Table:

  • Prices column should show a checkmark for each asset
  • Converted column should show “GBP” (green) or ”—” (native)

If you need to recalculate (new data imported, error correction), always delete the old calculation first via the Data Viewer tab.

After calculating, go to the Reports tab and export:

  • SA108 Summary — For your Self Assessment tax return
  • Capital Gains Detail — For your records or accountant
  • Pool History — For audit trail purposes
  • Income Report — If you have staking/mining/airdrop income

Use “Export Database Copy” in the Settings tab to create a backup after calculating.



Key Takeaways:

  1. Section 104 pool — All tokens of the same type are pooled together at weighted average cost
  2. Three-tier matching — Same-day → 30-day → Pool (mandatory, applied automatically)
  3. Four-zone dashboard — Config Bar, Rules Banner, Asset Table, Calculation History
  4. AEA deduction — First £3,000 of net gains is exempt (2024/25 onwards)
  5. Tax year — April 6 to April 5, displayed as “2024/25”
  6. Export reports for taxes — SA108 Summary, Capital Gains Detail, Pool History, Income

Quick Reference:

ActionHow
Calculate capital gainsACB tab → United Kingdom → Tax Year → Calculate
View financial resultsCalculation History panel (Zone D)
Get per-disposal detailReports tab → Capital Gains Detail
Get SA108 figuresReports tab → SA108 Summary
See pool balanceReports tab → Pool History
Fix currency issuesClick “N pending” in Converted column

Jurisdiction: United Kingdom Tax Authority: HM Revenue & Customs (HMRC)


Last Updated: March 2026 PrivateACB Version: 2.4