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.
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
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
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.
- 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.
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:
- Your browser reads the file — the CSV is parsed locally. The raw file never leaves your device.
- Exchange rates are fetched — HMRC’s official monthly rates are downloaded so foreign-currency trades can be converted to GBP.
- The engine calculates your report — all matching rules, option strategies, corporate actions, and income calculations happen inside the WASM engine running in your browser.
- You see the result — the finished report is rendered on screen. You can download it as a PDF.
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.
| Feature | Free Tiers | Paid Tiers |
|---|---|---|
| Where calculations run | Server | Your browser (WASM) |
| Data sent to server | Yes — processed in memory only | No — never leaves your device |
| Data stored on disk | No | No |
| Data in any database | No | No |
Why WebAssembly?
We chose WebAssembly for three reasons:
| Benefit | What It Means for You |
|---|---|
| Privacy | Calculations happen inside your browser. Your data stays on your machine. |
| Speed | WASM runs significantly faster than JavaScript — even large portfolios with thousands of trades are processed in under a second. |
| No installs | It 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
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.
- Same Day Rule — sells are matched to buys on the same day first
- Bed & Breakfast Rule — then matched to buys within the next 30 days
- 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.
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 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.
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.
- 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:
| Action | Tax Event? | Effect on Pool |
|---|---|---|
| Stock Split | No | Shares multiply, cost per share adjusts, total cost unchanged |
| Cash Merger | Yes — disposal | All shares removed, proceeds trigger capital gain/loss |
| Spin-Off | No | Cost basis split between parent and new company |
| Ticker Rename | No | Pool merges to new symbol, cost basis unchanged |
| Return of Capital | No | Reduces cost basis (increases future gain on disposal) |
| Stock Dividend | No (acquisition at market value) | New shares added at market value on dividend date |
| Transfer In | No | Shares added to pool with original cost basis |
| Transfer Out | No | Shares 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.
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.
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.
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 Ticker | New Ticker | Effective Date | Company |
|---|---|---|---|
| FB | META | 9 Jun 2022 | Facebook \u2192 Meta Platforms Inc. |
| TWTR | X | 24 Jul 2023 | Twitter \u2192 X Corp. |
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.
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.
- 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:
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.
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:
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:
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:
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:
| Category | Strategies |
|---|---|
| Single-Leg | Long Call, Long Put, Short Call, Short Put, Covered Call, Cash-Secured Put, Protective Put |
| Vertical Spreads | Bull Call, Bear Call, Bull Put, Bear Put, Ladders (Bull/Bear Call/Put) |
| Calendar & Diagonal | Calendar Call/Put, Diagonal Call/Put, Double Diagonal |
| Butterflies | Long/Short Call Butterfly, Long/Short Put Butterfly, Iron Butterfly, Inverse Iron Butterfly |
| Condors | Long/Short Call Condor, Long/Short Put Condor, Iron Condor, Inverse Iron Condor |
| Straddles & Strangles | Long/Short Straddle, Long/Short Strangle, Covered Short Straddle/Strangle, Guts/Short Guts |
| Combos & Synthetics | Collar, Long/Short Combo, Jade Lizard, Reverse Jade Lizard, Synthetic Future/Put, Strap, Strip |
| Ratio & Broken Wing | Call/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.
- 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.
You swap 0.5 BTC for 8 ETH on 15 March 2024. This becomes:
- SELL 0.5 BTC — matched against your BTC pool
- 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:
- GBP pair (BTC/GBP) — already in GBP, no conversion
- Other fiat pair (ETH/USD, SOL/EUR) — converted to GBP at HMRC’s daily exchange rate
- Stablecoin pair (BTC/USDT) — USDT is mapped to USD, then converted to GBP via the HMRC rate
- 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.
- 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.
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.
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.
- 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:
- 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.
- 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.
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
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.
| Provider | Coverage | Popular Funds |
|---|---|---|
| Vanguard Funds Plc | 2018–2025 (510+ entries) | VWRL, VUSA, VUAG, VHYL, VEVE, VFEM |
| iShares (BlackRock) | 2020–2025 (3,000+ entries) | SWDA, CSPX, EMIM, EIMI, ISF |
Vanguard Data Sources
| Reporting Period | Download | Status |
|---|---|---|
| June 2025 | VF Plc ERI Jun 2025 | Bundled |
| June 2024 | VF Plc ERI Jun 2024 | Bundled |
| December 2025 | VIS Plc ERI Dec 2025 | Available June 2026 |
Source: Vanguard UK Tax Information
iShares (BlackRock) Data Sources
| Fund Range | Coverage | Status |
|---|---|---|
| BlackRock Global Index Funds (BGIF) | 2020–2025 | Bundled |
| BlackRock Global Funds (BGF) | 2020–2024 | Bundled |
| BlackRock Strategic Funds (BSF) | 2020–2024 | Bundled |
Source: BlackRock Reporting Fund Status
Dividends & Interest
How dividend income and interest income are taxed, including allowances and double taxation relief.
- 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 Year | Allowance |
|---|---|
| 2024/25 onwards | £500 |
| 2023/24 | £1,000 |
| 2018/19 – 2022/23 | £2,000 |
After the allowance, dividends are taxed at:
| Tax Band | Rate | Example (£1,000 taxable) |
|---|---|---|
| Basic rate | 8.75% | £87.50 |
| Higher rate | 33.75% | £337.50 |
| Additional rate | 39.35% | £393.50 |
The report shows tax for all three bands — use whichever matches your income level. Here is how the calculation works:
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.
$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:
| Country | Withholding Rate | Treaty Relief Rate |
|---|---|---|
| USA | 15% | 15% |
| Canada | 25% | 15% |
| Ireland | 25% | 15% |
| Switzerland | 35% | 15% |
| Poland | 19% | 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 Band | Personal Savings Allowance | Tax Rate |
|---|---|---|
| Basic rate | £1,000 | 20% |
| Higher rate | £500 | 40% |
| Additional rate | £0 | 45% |
£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.
- 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:
| Status | Meaning | CGT Effect |
|---|---|---|
| UK Resident | You live in the UK and meet the Statutory Residence Test | All disposals taxable normally |
| Non-Resident | You don’t meet the UK residency criteria | Share disposals excluded from UK CGT |
| Temporary Non-Resident | You left the UK temporarily (under 5 years) and returned | Gains deferred — taxed when you come back |
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 Disposal | Status at Acquisition | Taxable? |
|---|---|---|
| UK Resident | Any | Yes \u2014 always taxable |
| Non-Resident | Any | No \u2014 excluded from UK CGT |
| Temporary Non-Resident | UK Resident | Yes \u2014 gain deferred until return |
| Temporary Non-Resident | Non-Resident | No \u2014 no UK nexus |
| Temporary Non-Resident | Temporary Non-Resident | No \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 →- 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
| Broker | Stocks | Options | Dividends | Interest | Corporate Actions |
|---|---|---|---|---|---|
| Interactive Brokers | Yes | Yes | Yes | Yes | Yes |
| Trading 212 | Yes | — | Yes | Yes | Splits |
| Charles Schwab | Yes | — | Yes | Yes | Mergers |
| Freetrade | Yes | — | Yes | Yes | — |
| Morgan Stanley (MSSB) | Yes | — | — | — | — |
| Revolut | Yes | — | Yes | — | Splits |
| Binance | Crypto | — | — | — | — |
| Coinbase | Crypto | — | — | — | — |
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.
- Log in to IBKR Client Portal
- Go to Performance & Reports → Statements
- Select Activity statement type
- Choose your date range (max 365 days per export)
- Select CSV format
- 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 tradeA— option assignment — e.g.A;Con an option means it was closed by assignment,A;Oon 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.
- Open Trading 212 app or website
- Go to History section
- Click the Export icon (top-right)
- Select timeframe (max 365 days per export)
- 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.
- Log in to Schwab
- Navigate to Accounts → History
- Select your account and date range
- Set filter to All Transactions
- 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.
- Open the Freetrade app
- Go to Activity tab
- Tap the download icon (top-right)
- Select All Activity
- 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.
- Log in to Morgan Stanley at Work (StockPlan Connect)
- Go to the report download page and export your transaction history
- 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.
- Open the Revolut app
- Go to Invest → More (three dots)
- Select Documents → Stocks → Account Statement
- Select the Excel tab, choose your date range
- Tap Get Statement and upload the
.xlsxfile
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.
- Log in to Binance
- Go to Orders → Trade History
- Select your date range and click Export
- Choose CSV format and download
- Log in to Binance
- Go to Wallet → Transaction History
- Click Generate all statements
- Select your date range and click Generate
- 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.
- Log in to Coinbase.com
- Open your profile → Statements (or Taxes and reports)
- Choose Transaction history → CSV → Generate report
- Select a date range that covers your full UK tax year (6 Apr – 5 Apr)
- Download the
.csvwhen ready
Multi-Broker Support
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.
- 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
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.
| Section | What It Shows | Appears When |
|---|---|---|
| Warnings | Missing purchases, incomplete data, or unknown transaction types | Issues found in your data |
| Self Assessment Summary | Total proceeds, allowable costs, and net gain/loss for SA108 | Always |
| Matching Summary | How many shares matched under each rule: Same Day, B&B, Section 104 | You made disposals |
| Stock Disposals | Each sale with ticker, date, quantity, proceeds, cost, and gain | You sold stocks |
| Transaction Details | Per-sale breakdown showing which purchases matched, by which rule, and FX rates used | You sold stocks or options |
| Section 104 Pools | Remaining holdings with quantity, total cost, and average cost — click any row to expand full history | You still hold shares |
| Holdings | Unrealised positions with quantity and cost per ticker | You still hold shares after matching |
| Option Disposals | Option trades with underlying, strike, expiry, and gain/loss | You traded options |
| FX Disposals | Foreign exchange trades with currency pair, amount, and gain/loss | You traded currencies |
| Income Summary | Dividends and interest with withholding tax, treaty relief, and tax by band | You received dividends or interest |
| ERI Section | Excess Reportable Income from offshore funds with per-unit calculations | You 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 Section | Proceeds | Costs | Gains | Losses |
|---|---|---|---|---|
| Listed shares & securities | Box 24 | Box 25 | Box 26 | Box 27 |
| Cryptoassets | Box 13.2 | Box 13.3 | Box 13.4 | Box 13.5 |
| Other property, assets & gains | Box 15 | Box 16 | Box 17 | Box 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”.
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.