Documentation

When you sell shares for more than you paid, the profit is called a capital gain. In the UK, you may owe Capital Gains Tax (CGT) on that profit. This calculator works out exactly how much.

How It Works

Upload your broker CSV. Get a tax report. It's that simple.

CSVUpload
Your broker file
{ }Parse
Read transactions
£Convert
USD/EUR to GBP
Match
HMRC rules
£?Report
Your CGT report
Capital Gain = Sale Proceeds - Purchase Cost - Fees

Upload your CSV, and the calculator handles every step automatically — reading trades, converting currencies to GBP, applying HMRC matching rules, and generating a full report for Self Assessment.

After uploading, you can review all parsed transactions before generating your report. The edit page lets you check dates, amounts, and action types — so you can verify the calculator read your broker file correctly.

Currency Conversion

If you trade in US dollars, euros, or any other foreign currency, every transaction must be converted to pounds sterling for UK tax purposes. The calculator does this automatically using official HMRC monthly exchange rates.

Where do the rates come from?

HMRC publishes exchange rates every month. These are the rates you're expected to use when reporting capital gains — not your broker's rate, not the market rate on the day. The calculator fetches these rates directly from HMRC and applies them to each transaction.

  • Each transaction is converted on its own date — a buy in January and a sell in March use different rates
  • Monthly rates cover the whole month — trades on weekends or bank holidays use the same month's rate
  • Everything is converted — the share price, total amount, and any broker fees
Example

You buy 10 shares of AAPL at $150 on 15 March 2024. HMRC's March 2024 rate for USD is 1.27 (meaning $1.27 = £1).

Cost in USD: 10 × $150 = $1,500
Cost in GBP: $1,500 ÷ 1.27 = £1,181.10

This GBP figure is what goes into the matching rules and your final CGT calculation.

What Else It Handles

  • Options — 60+ strategies including spreads, condors, and butterflies
  • Corporate actions — stock splits, mergers, spin-offs, ticker renames
  • Dividends & interest — tax allowances, withholding tax, treaty relief
  • Offshore funds (ERI) — excess reportable income from accumulation ETFs
  • Multi‑broker — combine files from different brokers in one report
Important

This tool produces reference calculations to help with your Self Assessment. It is not financial or tax advice. You are responsible for the figures you submit to HMRC. When in doubt, check with a qualified tax adviser.

Privacy & Security

Your financial data is sensitive. Here’s exactly what happens to it — and what doesn’t.

Quick Summary
  • Your data stays in your browser — the calculation engine runs on your device, not on a server
  • Nothing is stored — your broker files and calculations are never saved to any database
  • No third-party tracking — no advertising cookies, no pixels, no data sold to anyone
  • Minimal analytics — no personal data is collected

How Your Data Flows

On paid tiers, the calculation engine is compiled to WebAssembly (WASM) — a format that runs natively in your browser, just like JavaScript, but faster and more secure. Your broker file never leaves your device.

YOUR DEVICE
FILE
broker.csv
Your trades
ENGINE
WASM
In your browser
REPORT
SA108
Download PDF
×
OUR SERVER
DATABASE
Empty
No trades stored
FILES
Empty
No CSVs saved
REPORTS
Empty
No history kept
YOUR DATA NEVER LEAVES YOUR DEVICE

Everything happens inside your browser. Your broker file is parsed, calculated, and turned into a report without ever being sent to a server. Our database has zero records of your trades — because we never receive them.

When you upload a broker CSV, four things happen — all inside your browser tab:

  1. Your browser reads the file — the CSV is parsed locally. The raw file never leaves your device.
  2. Exchange rates are fetched — HMRC’s official monthly rates are downloaded so foreign-currency trades can be converted to GBP.
  3. The engine calculates your report — all matching rules, option strategies, corporate actions, and income calculations happen inside the WASM engine running in your browser.
  4. You see the result — the finished report is rendered on screen. You can download it as a PDF.
Verify it yourself

Open your browser’s Network tab (F12 → Network) while generating a report. You’ll see requests for exchange rates and the WASM binary itself — but zero requests containing your trades, positions, or personal information.

Data Storage by Tier

On paid tiers (Fish & Chips and High Tea), the WASM engine runs entirely in your browser — your data never leaves your device. On free tiers (Museum and Tea with Milk), your CSV is sent to the server for calculation but is never stored.

FeatureFree TiersPaid Tiers
Where calculations runServerYour browser (WASM)
Data sent to serverYes — processed in memory onlyNo — never leaves your device
Data stored on diskNoNo
Data in any databaseNoNo

Why WebAssembly?

We chose WebAssembly for three reasons:

BenefitWhat It Means for You
PrivacyCalculations happen inside your browser. Your data stays on your machine.
SpeedWASM runs significantly faster than JavaScript — even large portfolios with thousands of trades are processed in under a second.
No installsIt works in any modern browser. No plugins, no desktop app, no admin rights needed.

Analytics & Cookies

We use Vercel Web Analytics to understand how many people visit the site. It collects page views and country-level geography — no personal data, no IP addresses, no fingerprinting. It is privacy-compliant by design and does not use cookies for tracking.

We do not use Google Analytics, Facebook Pixel, or any advertising tracker.

What We Don’t Do

  • We do not sell, share, or send your data to any third party
  • We do not store your broker files, transaction history, or calculated reports
  • We do not use advertising cookies or tracking pixels
  • We do not fingerprint your browser or device
Note

Because we don’t store your financial data, there is nothing to breach. If our server were compromised tomorrow, an attacker would find zero user transaction data — because we don’t keep any.

Share Matching Rules

How HMRC matches your sell transactions to your buy transactions to calculate capital gains.

Quick Summary
  1. Same Day Rule — sells are matched to buys on the same day first
  2. Bed & Breakfast Rule — then matched to buys within the next 30 days
  3. Section 104 Pool — remaining shares use your average cost basis

When you sell shares, HMRC doesn't let you choose which purchase to match the sale against. Instead, three rules are applied in a strict order. You can't skip or reorder them.

1. Same Day Rule

If you buy and sell the same stock on the same calendar day, those transactions are matched first. This prevents you from selling at a loss and immediately rebuying to "harvest" the loss.

SELL
100 AAPL
01 Sep · £180
Same Day
BUY
100 AAPL
01 Sep · £175
MATCHED

You sell 100 shares in the morning and rebuy in the afternoon. The gain uses the £175 rebuy price — not your original cost. Gain: £5 per share.

2. Bed & Breakfast Rule (30-Day Rule)

After same-day matching, any remaining sold shares are matched against purchases made within the next 30 calendar days. This anti-avoidance rule stops you from selling shares and rebuying them shortly after to create an artificial loss. The 30-day window runs forward from the sale date, not backward.

You sell on 1 March and rebuy on 15 March (within 30 days). The sale is matched to the rebuy — your gain is based on the £390 rebuy price, not your original cost.

3. Section 104 Pool

Any shares not matched by the first two rules come from your "pool" — a running total of all your purchases, with an average cost per share. Think of it like a bucket where shares go in at various prices, and the calculator works out the average.

BUY
100 @ £10
= £1,000
BUY
50 @ £14
= £700
POOL
150 shares
£1,700 total
avg £11.33
SELL
80 shares
cost: £906.67

Buy 100 at £10, then 50 at £14. Pool holds 150 shares at £1,700 total (avg £11.33). Sell 80 — cost basis is 80 x £11.33 = £906.67. Pool keeps 70 shares at £793.33.

Average Cost =Total Pool CostTotal Pool Shares

Short Positions

If you sell shares you don’t own (short selling), the calculator tracks the short position separately. When you buy to cover, purchases are matched to the short sale in first-in-first-out (FIFO) order. Gain or loss is calculated as the difference between the sale proceeds and the covering purchase cost.

How Fees Are Handled

When you buy shares, any broker fees and commissions are added to your cost basis. When you sell, fees are deducted from your proceeds. The calculator handles this automatically.

Option traders: if you're assigned shares from a short put, the Same Day and B&B rules still apply. Sell assigned shares and rebuy within 30 days? B&B kicks in.

Corporate Actions

How stock splits, mergers, spin-offs and ticker changes affect your cost basis.

Quick Summary
  • Stock Splits — share count adjusts, total cost stays the same
  • Cash Mergers — treated as a disposal at the merger price
  • Spin-offs — cost basis allocated between parent and new company
  • Ticker Renames — cost basis transfers to the new symbol
  • Return of Capital — reduces your cost basis (not taxed as income)
  • Stock Dividends — new shares added at market value, no disposal
  • Transfers In/Out — shares move between brokers, no CGT event

When a corporate action occurs, the calculator adjusts your Section 104 pool automatically. Here is what is supported:

ActionTax Event?Effect on Pool
Stock SplitNoShares multiply, cost per share adjusts, total cost unchanged
Cash MergerYes — disposalAll shares removed, proceeds trigger capital gain/loss
Spin-OffNoCost basis split between parent and new company
Ticker RenameNoPool merges to new symbol, cost basis unchanged
Return of CapitalNoReduces cost basis (increases future gain on disposal)
Stock DividendNo (acquisition at market value)New shares added at market value on dividend date
Transfer InNoShares added to pool with original cost basis
Transfer OutNoShares removed from pool; receiving broker inherits cost basis

Stock Splits

When a company does a stock split (e.g. 4:1), your share count increases but your total cost basis stays the same. You just have more shares, each worth less.

BEFORE
50 shares
£100/share
Total: £5,000
4:1 Split
AFTER
200 shares
£25/share
Total: £5,000

Share count quadruples, price per share quarters — total cost basis stays at £5,000. If you later sell 100 shares at £30, gain is (£30 − £25) × 100 = £500.

Note: Stock splits during a Bed & Breakfast 30-day window are handled automatically. The calculator adjusts matching quantities so pre-split disposals match correctly against post-split acquisitions.

Cash Mergers

When a company is acquired for cash, all your shares are exchanged for cash at the merger price. The calculator treats this as a disposal — you receive proceeds and a capital gain or loss is calculated against your cost basis.

HOLDING
100 ACME
Cost: £3,000
Merger
CASH
100 × £42
Proceeds: £4,200
Gain: £1,200
DISPOSAL

100 shares of ACME (cost £3,000) are acquired at £42/share. You receive £4,200 in cash. Capital gain: £4,200 − £3,000 = £1,200.

Spin-Offs

When a company spins off a division into a new public company, your cost basis is split between the parent and the new company. By default, 10% of your cost basis transfers to the spun-off shares. The 10% default is a placeholder — you should adjust the percentage based on actual market values on the spin-off date. Check the company’s investor relations page for the official allocation and configure it in the Settings panel.

BEFORE
ParentCo
100 shares
Cost: £10,000
Spin-Off
PARENT 90%
ParentCo
Cost: £9,000
NEW 10%
NewCo
Cost: £1,000

100 shares of ParentCo (cost £10,000). After spin-off with 10% allocation: ParentCo retains £9,000 cost basis, NewCo receives £1,000. Total preserved: £9,000 + £1,000 = £10,000.

Ticker Renames

When a company changes its ticker symbol, the calculator merges the old and new pools automatically. Your cost basis transfers to the new symbol with no tax event. The following renames are handled automatically:

Old TickerNew TickerEffective DateCompany
FBMETA9 Jun 2022Facebook \u2192 Meta Platforms Inc.
TWTRX24 Jul 2023Twitter \u2192 X Corp.
OLD
FB
Cost: £8,000
Rename
NEW
META
Cost: £8,000
NO TAX EVENT

FB pool (cost £8,000) becomes META pool (cost £8,000). Nothing changes except the symbol. The calculator merges the pools automatically.

Return of Capital

Sometimes a company returns capital to shareholders. This isn't income — it reduces your cost basis instead. If you later sell the shares, your gain will be higher because your cost basis is lower.

BEFORE
100 shares
Cost: £10,000
ROC £2,000
AFTER
100 shares
Cost: £8,000
−£2,000

You receive £2,000 return of capital. Share count stays at 100, but cost basis drops from £10,000 to £8,000. If you sell at £120/share, gain is (£12,000 − £8,000) = £4,000 instead of £2,000.

Stock Dividends

When a company pays a dividend in shares instead of cash, the new shares are added to your Section 104 pool. Their cost basis is the market value on the dividend date. This is not a disposal — no capital gains tax is due at the time you receive the shares.

Transfers In & Out

When you transfer shares between brokers, no CGT event occurs:

  • Transfer In — shares transferred from another broker are added to your Section 104 pool with their original cost basis.
  • Transfer Out — shares transferred to another broker are removed from the pool. The receiving broker inherits the cost basis.

Options Trading

How call and put options are taxed under UK rules — from simple covered calls to complex multi-leg strategies.

Quick Summary
  • Each option is a separate asset — never pooled like shares
  • Writing (selling) — premium received is taxable when you write it
  • Buying — premium paid is your cost basis
  • Exercise/Assignment — option premium adjusts stock cost basis
  • Expiration — worthless options create a capital loss (or gain for writers)

Options are taxed very differently from shares. The key difference: each option contract is a separate asset. They are never pooled together like shares — even if you have multiple contracts of the same series. HMRC also has a special rule: when you write an option, that date is the CGT event — not when it closes.

How Options Are Taxed

There are three ways an option position can end: you close it, it gets exercised/assigned, or it expires. Each has different tax treatment.

Writing (selling) an option — the premium you receive is treated as disposal proceeds. The date you wrote the option is the CGT date. Here is the simplest case — writing an option that expires worthless:

WRITE
1 AAPL $155 Call
Receive: $300
Fee: $1
Expires
GAIN
$299
Cost: $0
Full premium kept

You write a call and receive $300 premium. If it expires worthless, you keep the full premium as a capital gain — dated to when you wrote it, not when it expired.

Buying an option — the premium you pay becomes your cost basis. Sell it later for a gain or loss.

BUY
1 AAPL $150 Call
Pay: $500
Fee: $5
Close
SELL TO CLOSE
Receive: $700
Cost: $505
Gain: $195

You buy a call for $500 and later sell it for $700. Your gain is the difference minus fees: $700 − $505 = $195.

Expiration — when an option expires worthless, the outcome depends on which side you were on:

OPTION
Expires Worthless
No intrinsic value
Expiry
BUYER
Capital Loss
Lost premium + fees
WRITER
Capital Gain
Keeps full premium

The buyer loses their premium (capital loss). The writer keeps theirs (capital gain, dated to writing date). Both sides are calculated automatically.

Exercise and Assignment

This is the key concept: when an option is exercised or assigned, HMRC doesn't tax the option separately. Instead, the premium adjusts what you paid (or received) for the stock. Think of the premium as part of the stock transaction.

Exercise — you exercise your long option. The premium you paid gets added to the stock cost:

LONG CALL
Premium: $500
Fees: $6
Exercise
STOCK BUY
Strike: $15,000
+ Premium: $500
+ Fees: $6
Cost: $15,506
PREMIUM → STOCK COST

You exercise your $150 call. Stock cost basis becomes: strike ($15,000) + premium ($500) + fees ($6) = $15,506. The option disappears — its cost is baked into the stock.

Assignment — your short option gets assigned. The premium you received reduces the stock cost:

SHORT PUT
Premium: $300
Fees: $2
Assigned
STOCK BUY
Strike: $10,500
− Premium: $300
+ Fees: $2
Cost: $10,202
PREMIUM REDUCES COST

Your short $105 put is assigned — you buy 100 shares at $105. The $300 premium you received reduces your cost: $10,500 − $300 + $2 fees = $10,202.

Cross-Tax-Year Trades

If you write an option in one tax year and close it in the next, the calculator splits the tax correctly across both years. The premium is taxed in the year you wrote it, and the closing cost creates a repay entry in the closing year.

Write an option in March 2024 (tax year 2023/24), close it in May 2024 (tax year 2024/25). Year 1 reports the $500 premium as a gain. Year 2 gets a $200 repay entry for the closing cost. Net result: $300 gain, correctly split across tax years.

Supported Strategies

The calculator processes each leg of a strategy independently — HMRC treats each option as a separate asset regardless of how your broker groups them. Here is what we test and support:

CategoryStrategies
Single-LegLong Call, Long Put, Short Call, Short Put, Covered Call, Cash-Secured Put, Protective Put
Vertical SpreadsBull Call, Bear Call, Bull Put, Bear Put, Ladders (Bull/Bear Call/Put)
Calendar & DiagonalCalendar Call/Put, Diagonal Call/Put, Double Diagonal
ButterfliesLong/Short Call Butterfly, Long/Short Put Butterfly, Iron Butterfly, Inverse Iron Butterfly
CondorsLong/Short Call Condor, Long/Short Put Condor, Iron Condor, Inverse Iron Condor
Straddles & StranglesLong/Short Straddle, Long/Short Strangle, Covered Short Straddle/Strangle, Guts/Short Guts
Combos & SyntheticsCollar, Long/Short Combo, Jade Lizard, Reverse Jade Lizard, Synthetic Future/Put, Strap, Strip
Ratio & Broken WingCall/Put Ratio Spread, Call/Put Ratio Backspread, Call/Put Broken Wing (regular & inverse)

Crypto

How UK Capital Gains Tax applies to cryptocurrency, and how we handle your Binance and Coinbase data.

Quick Summary
  • Crypto is property, not currency — every sale, swap, or spend is a taxable disposal
  • Same matching rules as shares — Same Day, Bed & Breakfast, Section 104 Pool
  • Swapping tokens creates two events — a disposal of one and an acquisition of another
  • Stablecoins like USDT and USDC are mapped to USD for pricing

How HMRC Taxes Crypto

HMRC treats crypto as property, not currency (CRYPTO22200). Selling, swapping, or spending crypto is a disposal — and Capital Gains Tax applies. The gain or loss is the difference between your disposal proceeds in GBP and the cost from your Section 104 pool.

The matching rules work the same way as for shares: Same Day first, then Bed & Breakfast (30 days), then Section 104 Pool. See Share Matching for details.

Crypto-to-Crypto Swaps

Swapping one token for another (e.g. BTC for ETH) counts as two events under HMRC rules: a disposal of what you gave up and an acquisition of what you received. We split these automatically, which is why your report may show more lines than trades.

Example — Crypto Swap

You swap 0.5 BTC for 8 ETH on 15 March 2024. This becomes:

  1. SELL 0.5 BTC — matched against your BTC pool
  2. BUY 8 ETH — added to your ETH pool

If your BTC pool cost was £10,000/BTC and the market price that day was £52,000/BTC:
(0.5 × £52,000) − (0.5 × £10,000) = £26,000 − £5,000 = £21,000 gain

Fees are allocated to the first side only, to avoid double-counting.

Stablecoins

Stablecoins are pegged to fiat, so we map them to their fiat equivalent. A BTC/USDT trade is treated as BTC/USD — and the USD amount is then converted to GBP at the HMRC daily rate.

We recognise USDT, USDC, BUSD, DAI, TUSD, FDUSD, USDP, UST, USD1, USDS, USDSOLD, RLUSD, PAX, and VAI as USD equivalents. AEUR and EURI map to EUR, GYEN to JPY. Anything not on the list is treated as a crypto-to-crypto swap and priced independently.

Both Binance (Trade History + Statements) and Coinbase Retail (all four header variants) are supported. See Supported Brokers for export instructions.

Fees

Exchange fees can be paid in different currencies. We handle each case:

  • Fee in the quote currency (e.g. USDT) — used directly
  • Fee in the traded asset (e.g. you buy ETH, fee charged in ETH) — converted via the trade price. If you’re selling, fee tokens are also a disposal from your pool per CRYPTO22280 — so the disposed quantity increases to include them
  • Fee in a third token (e.g. BNB) — converted to GBP at the daily price. If the price isn’t available, the fee is recorded as zero with a warning

Staking & Airdrops

If you upload a Statements CSV (see Supported Brokers), staking rewards and airdrops are also processed:

  • Staking rewards — reported as miscellaneous income at the GBP value on the date received, and added to your Section 104 pool at the same value. Covers earn products, staking interest, referral commissions, and card cashback
  • Unsolicited airdrops — added to your Section 104 pool but not treated as income on receipt (CRYPTO22500). Airdrops received in return for a service may be taxable as miscellaneous income (CRYPTO22400). The CGT event happens when you later sell or swap those tokens

How Prices Are Converted to GBP

Every transaction needs a GBP value. The conversion path depends on how the pair is quoted:

  1. GBP pair (BTC/GBP) — already in GBP, no conversion
  2. Other fiat pair (ETH/USD, SOL/EUR) — converted to GBP at HMRC’s daily exchange rate
  3. Stablecoin pair (BTC/USDT) — USDT is mapped to USD, then converted to GBP via the HMRC rate
  4. Crypto pair (ETH/BTC) — the quote asset (BTC) is priced in GBP using daily data from CryptoCompare and CoinGecko. The GBP value of the trade is then derived as: BTC amount × BTC/GBP rate

If a price isn’t available for a given date, we check ±1 day. If still missing, the transaction is skipped and a warning lists the affected coins and dates so you can review them.

FX Trading

How foreign exchange trades (like GBP/USD) are taxed as "Other Assets" under UK capital gains rules.

Quick Summary
  • FX pairs are treated as "Other Assets" — not the same as shares
  • The same matching rules apply (Same Day, B&B, Section 104)
  • GBP is your home currency — so GBP/USD means you're buying or selling USD
  • All gains and losses calculated in GBP

If you trade spot foreign exchange (forex) through your broker, those trades are subject to capital gains tax. HMRC classifies foreign currencies as "Other Assets" — they go on a different section of the SA108 form than your share disposals.

How Pairs Work for UK Tax

Since GBP is your home currency, it can't be an "asset" for CGT purposes. When you trade a pair like GBP/USD:

  • Selling GBP/USD = acquiring USD (the foreign currency is the asset)
  • Buying GBP/USD = disposing of USD

The calculator automatically flips the perspective so the foreign currency is always treated as the asset being bought or sold.

ACQUIRE
$12,500
Rate: 1.25
Cost: £10,000
Dispose
DISPOSE
$12,500
Rate: 1.20
Proceeds: £10,400
GAIN: £400

Sell GBP/USD — you pay £10,000 and acquire $12,500 (rate 1.25). Later, buy GBP/USD — you dispose of $12,500 and receive £10,400 (rate 1.20). Gain: £10,400 − £10,000 = £400.

Matching Rules

FX trades use the same three matching rules as shares — Same Day, Bed & Breakfast, and Section 104 Pool — applied in the same order and with the same logic.

Note

FX gains are reported as "Other Assets" on SA108, not as "Listed Securities". The calculator separates these automatically in your report.

ERI / Offshore Funds

Excess Reportable Income — the extra tax you owe on offshore funds even if you didn’t sell anything.

Quick Summary
  • Offshore accumulation funds with UK reporting status must publish ERI annually
  • ERI is taxed as income, not capital gains — usually at dividend rates
  • Cost basis increases by the ERI amount, preventing double taxation when you sell
  • Bundled data for iShares and Vanguard funds — applied automatically (view bundled data)
  • More providers coming — Xtrackers and Amundi planned

What is ERI?

If you hold offshore accumulation funds (like Irish-domiciled ETFs from iShares or Vanguard), you may owe tax on “phantom income” — income the fund earned and reinvested, even though you never received any cash. This is called Excess Reportable Income.

Under the UK’s offshore fund rules, funds with UK reporting status must publish how much income they earned per unit each year. If that income exceeds what the fund actually distributed, the excess must be reported as taxable income by UK investors — regardless of whether you sold anything.

How ERI Works

Each year, the fund manager publishes an ERI figure per unit. The tax works in two stages:

  1. Cost basis adjustment (on the fund’s reporting date) — your Section 104 pool cost increases by the ERI amount. This prevents you from being taxed again when you eventually sell.
  2. Taxable income (6 months after the reporting date) — the same amount becomes reportable income, usually taxed as dividends or interest depending on the fund type.

Fund reports ERI on 30 June. Your pool cost adjusts immediately. Six months later (30 December), the same amount is reportable as dividend income on your tax return.

ERI Amount (GBP) = Shares Held × ERI per Unit × FX Rate to GBP
Example

You hold 200 shares of VUSA (IE00BK5BQT80) on 30 June 2024. Vanguard publishes ERI of $2.063 per unit. The USD/GBP rate is 0.79.

Cost basis adjustment (30 June 2024):
200 × $2.063 × 0.79 = £325.95 added to your Section 104 pool

Taxable income (30 December 2024):
£325.95 declared as dividend income on your 2024/25 tax return

Effect on future sale: when you eventually sell VUSA, your cost basis is £325.95 higher — so you won’t be taxed on that amount again as a capital gain.

ERI and the Matching Rules

ERI applies to any shares you held on the fund’s reporting date — including shares matched under the Bed & Breakfast rule. If you sold shares before the ERI reporting date and repurchased within 30 days (B&B), those shares are treated as held on the reporting date.

The calculator handles this automatically:

  • Pool shares — ERI based on your Section 104 pool quantity on the reporting date
  • B&B shares — ERI applied separately for shares matched under the 30-day rule
Note

B&B ERI creates a taxable income event but does not adjust the Section 104 pool cost — because those shares left the pool when sold. The income is still reportable.

Bundled ERI Data

The calculator includes ERI data from multiple fund providers. If your fund is covered, ERI is applied automatically when you upload your broker CSV — no extra steps needed. Matching works via ISIN codes in your broker data.

ProviderCoveragePopular Funds
Vanguard Funds Plc2018–2025 (510+ entries)VWRL, VUSA, VUAG, VHYL, VEVE, VFEM
iShares (BlackRock)2020–2025 (3,000+ entries)SWDA, CSPX, EMIM, EIMI, ISF

VIEW ERI DATA →

Vanguard Data Sources

Reporting PeriodDownloadStatus
June 2025VF Plc ERI Jun 2025Bundled
June 2024VF Plc ERI Jun 2024Bundled
December 2025VIS Plc ERI Dec 2025Available June 2026

Source: Vanguard UK Tax Information

iShares (BlackRock) Data Sources

Fund RangeCoverageStatus
BlackRock Global Index Funds (BGIF)2020–2025Bundled
BlackRock Global Funds (BGF)2020–2024Bundled
BlackRock Strategic Funds (BSF)2020–2024Bundled

Source: BlackRock Reporting Fund Status

Dividends & Interest

How dividend income and interest income are taxed, including allowances and double taxation relief.

Quick Summary
  • Dividends — taxed at special rates (8.75%–39.35%) with a £500 allowance (2024/25)
  • Foreign dividends — converted to GBP; withholding tax offset via treaty relief
  • Interest — taxed at your income tax rate with a Personal Savings Allowance
  • All calculations shown per band — you pick whichever matches your income level

Dividend Tax

Dividends from UK and foreign shares are taxed at special rates, separate from your normal income tax. You get a tax-free dividend allowance each year:

Tax YearAllowance
2024/25 onwards£500
2023/24£1,000
2018/19 – 2022/23£2,000

After the allowance, dividends are taxed at:

Tax BandRateExample (£1,000 taxable)
Basic rate8.75%£87.50
Higher rate33.75%£337.50
Additional rate39.35%£393.50

The report shows tax for all three bands — use whichever matches your income level. Here is how the calculation works:

GROSS
£1,500
Total dividends
Allowance: £500
Minus Allowance
TAXABLE
£1,000
Basic: £87.50 tax
Higher: £337.50 tax

You receive £1,500 in dividends. Subtract the £500 allowance → £1,000 is taxable. At basic rate (8.75%): £87.50 tax. At higher rate (33.75%): £337.50 tax. The report shows both — you use the one matching your band.

Foreign Dividends

Foreign dividends are converted to GBP at the exchange rate on the payment date. When a country withholds tax at source, the UK has treaties that let you offset some or all of that withholding against your UK tax bill.

US DIVIDEND
$100 gross
WHT 15%: −$15
You get: $85
Treaty
TAX RETURN
Declare: £79
Tax credit: £11.85
FX rate: 0.79
15% TREATY RELIEF

$100 gross dividend, US withholds $15 (15%). At FX rate 0.79: declare £79 income, claim £11.85 tax credit. You pay UK tax on £79 minus the £11.85 credit. The calculator matches withholding tax to dividends automatically.

Treaty relief is calculated automatically for supported countries:

CountryWithholding RateTreaty Relief Rate
USA15%15%
Canada25%15%
Ireland25%15%
Switzerland35%15%
Poland19%10%

Dividend reinvestment (DRIP): When dividends are automatically reinvested in shares, the calculator counts the dividend as income and the reinvested shares as a stock purchase — both are tracked separately for tax purposes.

Capital gain distributions: Some funds distribute capital gains to shareholders. These are treated as dividend income for UK tax purposes and included in your dividend total.

Interest Income

Interest earned on cash balances at your broker is taxed at your normal income tax rate. You get a Personal Savings Allowance (PSA) that depends on your tax band:

Tax BandPersonal Savings AllowanceTax Rate
Basic rate£1,00020%
Higher rate£50040%
Additional rate£045%
INTEREST
£1,500
From all brokers
PSA (basic): £1,000
Minus PSA
TAXABLE
£500
Basic: £100 tax
Higher: £200 tax

£1,500 interest earned. As a basic rate taxpayer, £1,000 PSA is deducted → £500 taxable at 20% = £100 tax. As higher rate: £500 PSA, £1,000 taxable at 40% = £400 tax. The report shows all bands.

Note: Interest is grouped by month and broker in the report for easy cross-referencing with your broker statements.

Interest fund tickers: Some funds pay interest-like distributions that your broker labels as dividends. If you hold such funds, you can add their ticker symbols in the Settings panel under Interest Fund Tickers. Their income will then be taxed at interest rates instead of dividend rates.

Residency Status

How your UK tax residency affects which disposals are subject to Capital Gains Tax.

Quick Summary
  • UK residents (default) — all disposals are taxable under normal CGT rules
  • Non-residents — generally exempt from UK CGT on share disposals
  • Temporary non-residents — gains may be deferred and taxed when you return

If you were a UK resident for the entire tax year, you don’t need to configure anything — the calculator treats you as fully resident by default. But if you left the UK, returned from abroad, or spent part of the year as a non-resident, your residency status determines which disposals are subject to CGT and which are excluded.

How It Works

You define one or more residency periods in the Settings panel. Each period has a start date, an optional end date, and a status. The calculator checks each disposal against these periods to decide if it’s taxable.

There are three residency statuses:

StatusMeaningCGT Effect
UK ResidentYou live in the UK and meet the Statutory Residence TestAll disposals taxable normally
Non-ResidentYou don’t meet the UK residency criteriaShare disposals excluded from UK CGT
Temporary Non-ResidentYou left the UK temporarily (under 5 years) and returnedGains deferred — taxed when you come back
SELL
50 shares
15 Aug 2024
Gain: £2,400
Residency?
NON-RESIDENT
Excluded
Not subject to UK CGT
Tax: £0
EXCLUDED FROM CGT

You sell 50 shares on 15 August 2024 with a £2,400 gain. But your residency config shows you were non-resident on that date. The disposal is excluded from UK CGT — the gain is £0 for UK tax purposes. The calculator tracks these excluded disposals separately in your report.

Taxability Rules

The calculator doesn’t just check the disposal date — it also considers when you acquired the shares. This matters for temporary non-residents, where gains on assets bought while you were UK resident can still be taxed when you return.

Status at DisposalStatus at AcquisitionTaxable?
UK ResidentAnyYes \u2014 always taxable
Non-ResidentAnyNo \u2014 excluded from UK CGT
Temporary Non-ResidentUK ResidentYes \u2014 gain deferred until return
Temporary Non-ResidentNon-ResidentNo \u2014 no UK nexus
Temporary Non-ResidentTemporary Non-ResidentNo \u2014 both periods abroad

The key rule: if you sell during a temporary non-resident period but originally bought while UK resident, the gain is still taxable. HMRC’s anti-avoidance rules prevent you from leaving the UK briefly to sell assets tax-free.

Effect on Share Matching

Residency status also affects how HMRC’s share matching rules work:

  • Same Day Rule — still applies, but the taxability of the match depends on your residency at disposal
  • Bed & Breakfast Rule — has a special exception: if you were non-resident when you reacquired shares (after 22 March 2006), the B&B rule doesn’t apply to that match
  • Section 104 Pool — non-taxable matches still consume shares from the pool but don’t generate a CGT entry

Mixed-Year Residency

If you were resident for part of the year and non-resident for the rest, the calculator handles each disposal individually based on its date. Your report will show:

  • A “Mixed residency” status indicator in the summary
  • The number of days spent as resident vs non-resident
  • A separate table of excluded disposals showing each sale that fell outside your UK-resident periods, with the gain or loss that was excluded

Configuring Residency

Open the Settings panel (gear icon) and switch to the Residency Status tab. Add a period for each time your status changed:

  • Start date — when this status began (required)
  • End date — when this status ended (leave blank if ongoing)
  • Status — Non-Resident or Temporary Non-Resident

You only need to add periods where you were not UK resident. Any dates not covered by a period are treated as UK resident by default. Your residency configuration is saved in your browser and applied automatically to future calculations.

Supported Brokers

Which brokers are supported, what file format to export, and what each broker covers.

Try free examples in the app →
Quick Summary
  • 8 brokers supported — IBKR, Trading 212, Schwab, Freetrade, Morgan Stanley, Revolut, Binance, Coinbase
  • Auto-detection — upload any supported CSV and the format is detected automatically
  • Multi‑broker — combine files from different brokers into one report
BrokerStocksOptionsDividendsInterestCorporate Actions
Interactive BrokersYesYesYesYesYes
Trading 212YesYesYesSplits
Charles SchwabYesYesYesMergers
FreetradeYesYesYes
Morgan Stanley (MSSB)Yes
RevolutYesYesSplits
BinanceCrypto
CoinbaseCrypto
Upload
your.csv
Headers scanned
Auto Detect
Detected
IBKR
Activity Statement
Format Detected

Upload any supported CSV and the calculator identifies the broker from the file headers. No manual selection needed — just drag and drop.

Interactive Brokers (IBKR)

The most feature-rich integration. Supports all transaction types including options, corporate actions, FX trades, and dividends. You must use the Activity Statement CSV format — the simple trades export does not support options.

  1. Log in to IBKR Client Portal
  2. Go to Performance & ReportsStatements
  3. Select Activity statement type
  4. Choose your date range (max 365 days per export)
  5. Select CSV format
  6. Click Run and download

The Activity Statement CSV is a multi-section file. We parse these sections:

  • Trades — stocks, options, and FX trades with prices, fees, and quantities.
  • Dividends & Withholding Tax — dividend income and foreign tax withheld.
  • Interest — credit interest and bond interest.
  • Corporate Actions — stock splits and stock dividends.
  • Financial Instrument Information — ISIN codes used to match your holdings with ERI data.

Trade codes: each trade row has a Code column with flags separated by semicolons. We use these to understand what happened:

  • O — opening trade (new position)
  • C — closing trade
  • A — option assignment — e.g. A;C on an option means it was closed by assignment, A;O on a stock means the shares were received from that assignment

Option symbols: IBKR uses the format TICKER DDMMMYY STRIKE P/C. For example, LULU 06JUN25 305 P is a LULU put with a $305 strike expiring 6 Jun 2025. We parse this automatically to extract the underlying stock, strike price, expiry date, and option type.

Option assignments: when we detect the A code on an option trade, the premium is folded into the stock’s cost basis — you won’t see a separate gain/loss line for the assigned option. This matches how HMRC treats assigned options: the grant and assignment are one transaction, not two.

Trading 212

Supports stocks, ETFs, dividends, interest, and stock splits. Both 2020 and 2024 export formats are supported. Currency conversion is built into the export. Not available for CFD accounts (Invest/ISA only).

Trading 212 exports calendar year data (Jan–Dec), so to cover a full UK tax year (6 Apr – 5 Apr) you need two calendar year exports.

  1. Open Trading 212 app or website
  2. Go to History section
  3. Click the Export icon (top-right)
  4. Select timeframe (max 365 days per export)
  5. Click Export to download CSV

Charles Schwab

Supports stock trades, dividends, interest, RSUs, and corporate actions (cash mergers). If you have equity awards (RSUs), you need both the Brokerage CSV and the Equity Awards CSV — without the awards file, vest events will be missing.

  1. Log in to Schwab
  2. Navigate to AccountsHistory
  3. Select your account and date range
  4. Set filter to All Transactions
  5. Click Export (top-right) → CSV

For RSU awards: Accounts → Transaction History → Select “Equity Award Center” → Custom Date Range → Search → Download

Freetrade

Supports stock trades, dividends (with withholding tax), and interest. Stamp duty and FX fees are extracted automatically. Corporate actions are not included — contact support for a full statement.

  1. Open the Freetrade app
  2. Go to Activity tab
  3. Tap the download icon (top-right)
  4. Select All Activity
  5. Export file to your device

Morgan Stanley (MSSB)

For RSU/equity award holders. You need two files: the Releases Report (RSU vest events at Fair Market Value) and the Withdrawals Report (share sales and cash transfers). Without the Releases Report, you’ll see “no purchase record found” because vest events are stored separately.

  1. Log in to Morgan Stanley at Work (StockPlan Connect)
  2. Go to the report download page and export your transaction history
  3. Upload both Releases Report.csv and Withdrawals Report.csv

Revolut

Supports stock trades, dividends (with withholding tax), and stock splits. Revolut is commission-free — the FX spread is embedded in the exchange rate, not shown as a separate fee. Revolut exports statements as Excel (.xlsx) files, which are converted automatically on upload.

  1. Open the Revolut app
  2. Go to InvestMore (three dots)
  3. Select DocumentsStocksAccount Statement
  4. Select the Excel tab, choose your date range
  5. Tap Get Statement and upload the .xlsx file

Binance

Supports cryptocurrency trades from two CSV formats. Covers fiat-quoted pairs, stablecoin pairs (USDT mapped to USD), and crypto-to-crypto swaps. See Crypto for details on how swaps, fees, stablecoins, staking rewards, and airdrops are handled.

We accept two export formats:

  • Trade History — spot buy/sell trades. Simplest export, covers most users
  • Statements — includes trades, staking rewards, airdrops, and BNB dust conversions. Use this if you have staking income or airdrops

Upload both and duplicates are removed automatically — we keep the Statements version when a trade appears in both.

  1. Log in to Binance
  2. Go to OrdersTrade History
  3. Select your date range and click Export
  4. Choose CSV format and download
  1. Log in to Binance
  2. Go to WalletTransaction History
  3. Click Generate all statements
  4. Select your date range and click Generate
  5. Download the CSV when ready

Coinbase

Supports the Coinbase Retail transaction history CSV — the export any Coinbase.com user can generate from their account. Covers fiat Buy/Sell, Advanced Trade, Convert (crypto–to–crypto swaps split per HMRC CRYPTO22100), Receive (referrals, Earn, staking rewards), Send, and Rewards/Staking Income. Four header variants (V4 current, V3/V2/V1 legacy) are auto-detected. See Crypto for details on how swaps, fees, stablecoins, staking rewards, and airdrops are handled.

  1. Log in to Coinbase.com
  2. Open your profileStatements (or Taxes and reports)
  3. Choose Transaction historyCSVGenerate report
  4. Select a date range that covers your full UK tax year (6 Apr – 5 Apr)
  5. Download the .csv when ready

Multi-Broker Support

File 1
IBKR CSV
File 2
T212 CSV
File 3
Schwab CSV
Unified Report
All holdings merged
HMRC rules applied

Upload multiple CSV files from different brokers at once. The calculator combines them into a single report — matching rules are applied across all your holdings regardless of which broker they’re held at.

Manual Transaction Entry

If your broker isn’t listed, you can add transactions manually. Available fields include date, ticker, action (buy/sell), quantity, price, fees, and currency. Manual entries appear alongside CSV transactions and follow the same HMRC matching rules.

This is useful for unsupported brokers, one-off corrections, or historical trades that aren’t in your broker export.

Report Output

Understanding your CGT report — what each section means and how to use it for Self Assessment.

Quick Summary
  • Tax-year grouped — everything organised by UK tax year (6 April – 5 April)
  • SA108 ready — proceeds, costs, and gains map directly to your Self Assessment boxes
  • Full audit trail — every disposal shows which matching rule was applied and a complete calculation breakdown
  • Download as PDF — save a clean PDF via browser print for your records
DISPOSALS
47 sales
Stocks · Options · FX
ACQUISITIONS
124 buys
Matched by HMRC rules
INCOME
36 dividends
With treaty relief
SA108 Report
Proceeds £12,400
Costs £8,200
Gain £4,200
READY
HMRC
Ready to file
Self Assessment
SELF ASSESSMENT COMPLETE

Your broker data — disposals, acquisitions, and income — flows through HMRC share matching rules and produces a complete SA108 tax report. Proceeds £12,400 minus costs £8,200 = £4,200 net gain. Download it as a PDF to file with your Self Assessment or keep for your records.

What’s in Your Report

The report is organised into sections. Not all sections appear every time — you only see the ones relevant to your data.

SectionWhat It ShowsAppears When
WarningsMissing purchases, incomplete data, or unknown transaction typesIssues found in your data
Self Assessment SummaryTotal proceeds, allowable costs, and net gain/loss for SA108Always
Matching SummaryHow many shares matched under each rule: Same Day, B&B, Section 104You made disposals
Stock DisposalsEach sale with ticker, date, quantity, proceeds, cost, and gainYou sold stocks
Transaction DetailsPer-sale breakdown showing which purchases matched, by which rule, and FX rates usedYou sold stocks or options
Section 104 PoolsRemaining holdings with quantity, total cost, and average cost — click any row to expand full historyYou still hold shares
HoldingsUnrealised positions with quantity and cost per tickerYou still hold shares after matching
Option DisposalsOption trades with underlying, strike, expiry, and gain/lossYou traded options
FX DisposalsForeign exchange trades with currency pair, amount, and gain/lossYou traded currencies
Income SummaryDividends and interest with withholding tax, treaty relief, and tax by bandYou received dividends or interest
ERI SectionExcess Reportable Income from offshore funds with per-unit calculationsYou hold reporting funds

Self Assessment (SA108)

The Self Assessment Summary at the top of your report gives you the numbers for HMRC’s SA108 Capital Gains page. SA108 splits disposals into separate sections by asset type — you enter the totals for each section into a different group of boxes:

SA108 SectionProceedsCostsGainsLosses
Listed shares & securitiesBox 24Box 25Box 26Box 27
CryptoassetsBox 13.2Box 13.3Box 13.4Box 13.5
Other property, assets & gainsBox 15Box 16Box 17Box 19

Box numbers are taken from the SA108 form for 2025-26 (year ending 5 April 2026). The Cryptoassets section (boxes 13.1–13.8) was added from 2024-25 onwards — before that, crypto disposals went into “Other property, assets and gains”.

Crypto users — read this

The Assessment Summary still groups crypto disposals into the “Stocks” row. Until we split it out, find your crypto tickers (BTC, ETH, USDT, …) in the Stock Disposals table, sum their proceeds, costs, gains and losses on their own, and put those subtotals in boxes 13.2–13.5 — not 24–27.

For dividends and interest, use the Income Summary to fill in the relevant boxes on your SA100 main return.

Downloading Your Report

Click Download PDF to open a print-ready view of your report. Use Ctrl+P (Windows) or Cmd+P (Mac) to save as PDF. Print styles hide navigation and format tables for paper.