Documentation

New here?

Get your report in 3 steps

  1. Export your CSV
    Download a statement from your broker — pick your broker’s steps.
  2. Upload it
    Drop the file(s) on the calculator. Everything runs in your browser.
  3. Review & file
    Check the numbers and copy them onto your SA108 self-assessment.

When you sell an asset for more than you paid, the profit may be liable to UK Capital Gains Tax (CGT). This calculator works out how much.

How It Works

Upload your broker CSV, and get a tax report back.

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

Nothing is final until you say so — after uploading you can review every parsed transaction, correct any figure, add trades by hand, or override an FX rate, then recalculate.

A saved report is also marked out of date when we change a calculation rule, so you can recalculate it against the current rules. The changelog records what changed in each version of the engine.

What you can edit

Open Edit from any report, or start on the Add by hand tab. Every figure that feeds your Capital Gains Tax calculation is yours to check and change:

What you controlWhat you can do
Broker transactionsCorrect the date, type, ticker, quantity, price, fees or currency of any imported trade — or delete a row entirely.
Manual transactionsAdd trades by hand that never appeared in a broker export.
Exchange ratesOverride the GBP conversion rate on any transaction when HMRC hasn’t published one.
Crypto pricesEnter the GBP value of a coin on the trade date when a price can’t be fetched.
Tax profileSet your UK residency periods and annual income, so tax is worked out at the right band — and the taxpayer name, UTR and broker to print on the PDF.
Corporate actionsSet the cost split for a spin-off between the parent and the new ticker.
Offshore funds (ERI)Add custom excess reportable income entries (ISIN, reporting date, currency, per-unit).
Bond / interest fundsFlag tickers whose payments are interest rather than dividends.

Currency Conversion

Every trade in a foreign currency must be converted to pounds sterling for UK tax. The calculator does this automatically using official HMRC monthly exchange rates.

Where do the rates come from?

These are the rates HMRC expects you to use when reporting gains — not your broker’s rate, and not the market rate on the day.

  • 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

What if a rate isn't available?

Sometimes a rate can't be fetched — an unusual currency HMRC doesn't publish, a month that isn't out yet, or a temporary connection problem. Instead of failing the whole report, the calculator flags those transactions with a Missing exchange rates warning and leaves them out of the totals. Open Edit, type the rate into the FX/GBP cell (look it up on HMRC's page), and recalculate — the transaction is then valued and the warning clears.

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 offshore reporting ETFs (accumulating and distributing)
  • Multi‑broker — combine files from different brokers in one report

Which Self Assessment forms you get

Your report maps straight onto HMRC's Self Assessment forms. You don't decide which boxes the numbers go in — the report shows the exact box for every figure, grouped by the form it belongs to.

FormWhat it coversWhat we work outSee it
SA108Capital gains — share, crypto, option and currency disposalsProceeds, allowable cost and gain/loss for each asset class, plus losses to carry forwardTrading 212 →
SA106Foreign income — overseas dividends and interestA per-country grid with Foreign Tax Credit Relief capped at the treaty rate, and the box 6 de-minimis flagForeign dividends →
SA100The main return — UK dividends and UK interestThe UK-vs-foreign split, so each figure lands on the right formFreetrade →

For the box-by-box mapping see Report output; for a plain-English walkthrough read Self Assessment for investors: SA108, SA106 & SA100.

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.

Where Your Files Are Processed

For what happens to your broker file along the way, see Privacy & Security. Firms that cannot send client files to a third party at all can have a dedicated deployment on the Business plan, where every step above happens inside the browser — see Private Instance.

Supported Brokers

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

Try free examples in the app →

Prefer to see the finished output first? Browse worked example reports for Interactive Brokers, Trading 212, and a combined multi-broker upload — each generated from a real CSV export.

Quick Summary
  • 13 brokers supported — IBKR, Trading 212, Schwab, Freetrade, Hargreaves Lansdown, Morgan Stanley, Revolut, Robinhood, Fidelity, Vanguard, Interactive Investor, 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 SchwabYesYesYesYesMergers
FreetradeYesYesYes
Hargreaves LansdownYesYes
Morgan Stanley (MSSB)Yes
RevolutYesYesSplits
RobinhoodYesYesYesYes
FidelityYesYesYes
VanguardYesYesYes
Interactive InvestorYesYesYes
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 complete integration — stocks, options, corporate actions, FX trades, dividends and interest. Use the Activity Statement CSV; the simple trades export leaves out 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

Trading 212

Stocks, ETFs, dividends, interest and stock splits (2020 and 2024 export formats). Invest/ISA only — CFD accounts aren’t supported.

Trading 212 exports by calendar year, so a full UK tax year (6 Apr – 5 Apr) needs two 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

Stock trades, options, dividends, interest, RSUs and cash mergers. If you have equity awards (RSUs), upload both the Brokerage CSV and the Equity Awards CSV together so vest events get their cost basis — adding the awards file later on the edit page won’t link them.

US Treasury bills held to maturity are treated as Deeply Discounted Securities: the discount is booked as foreign interest, not a capital gain. Detected automatically — no manual flagging needed.

  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

Stock trades, dividends (with withholding tax) and interest. Stamp duty and FX fees are read automatically. Corporate actions aren’t included — contact Freetrade 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

Hargreaves Lansdown

Beta

Stock, fund and ETF trades plus credit interest, from the Transaction summary CSV in the Tax centre — the Portfolio history download from the account page has the same columns and works too. Everything is in sterling, so no FX conversion is involved. The dealing charge isn’t stated in the file; it is read back from the gap between the trade and the cash amount.

HL rows carry no ISIN and no ticker, so holdings are matched by name: rename a fund between two exports and its pool splits in two. Give both halves the same name on the edit page and they pool again — an ISIN won’t do it, because pools are keyed on the name.

Gilts are recognised from their name. A row such as Treasury 0.125% 31/01/2028 Gilt is matched against the UK Debt Management Office register on its coupon and redemption date, so the disposal is exempt even though the export states no ISIN. A gilt fund is not — the exemption covers gilts themselves, not units in a fund that holds them.

  1. Log in to Hargreaves Lansdown
  2. Go to My accountsTax centre
  3. Pick the account and the tax year, and open the transaction summary
  4. Use the CSV export link at the foot of the report

The Portfolio history tab on the account works too: set the date range and download — HL saves it as portfolio-summary.csv, with the same columns. Neither file states the dealing charge; it is derived from the row.

  • Dividends — a capital-account export doesn’t contain them. HL splits capital (01C…) and income (01I…) accounts, and the DRI… rows you see are transfers from the income account, not the dividends themselves. The income-account export isn’t supported yet.
  • Excess reported income (ERI) — offshore-fund handling keys on the ISIN, which the export omits, so it can’t fire automatically for Irish-domiciled ETFs.
  • Corporate actions — not parsed yet; adjust the pool manually on the edit page.
  • Account type — the file doesn’t state it, so an ISA export looks exactly like a Fund & Share one. Gains inside an ISA or a SIPP aren’t chargeable, so every export carrying a trade gets a note saying the type is unknown — raised to a warning when a row names one of those products.
  • Reinvested income — HL books it as two rows, the cash arriving and the purchase it pays for, matching to the penny. If no file in the upload holds the purchase, the reinvestment is flagged by amount and date — the amount, because HL truncates the security name mid-word. The export is short of rows, so download the period again; entering the buy by hand needs a unit count that appears nowhere in the CSV, only on your HL statement or contract note.

Morgan Stanley (MSSB)

For RSU/equity-award holders. You need two files: the Releases Report (vest events) and the Withdrawals Report (sales and transfers). Without the Releases Report you’ll see “no purchase record found”, because vests are stored separately. The Releases Net Shares Report works as a vest source too, and UK-locale exports with £ prices are read as sterling directly — uploading both release reports together won’t double-count.

  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

Stock trades, dividends (with withholding tax) and stock splits. Upload the Account Statement (Excel or CSV) — the “Income from Sells” profit/loss summary is not a valid input.

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

Robinhood

Beta

Stock trades, options, dividends, cash-sweep interest, FX conversions and UK stock rewards from the Robinhood UK account activity report. Written options follow HMRC CG55545, including buy-to-close and assignment adjustments. USD amounts use HMRC monthly average rates — worked through on a sample statement.

  1. Open the Robinhood UK app or website and sign in
  2. Go to Account (person icon) → Reports and statements
  3. Under Account activity reports, select Reports
  4. Tap Generate new report, pick a date range covering your full UK tax year (6 Apr – 5 Apr), and include all transaction types
  5. Wait for the report to be generated (usually minutes, occasionally up to 24h) and download the CSV

Robinhood UK calls this an “Account activity report” in the UI, but the file we parse is the same CSV format historically known as the Activity Statement.

  • Stock splits and mergers — skipped with a warning; if you held a stock through one during the year, adjust the pool manually on the edit page.
  • Withholding on stock rewards (NRAT) — the tax Robinhood withholds from a reward is flagged with a warning rather than credited automatically; check whether it can be set against the reward income on your return.

Fidelity

Beta

Two platforms share the name and both are supported; whichever you upload is recognised on sight, so you never have to say which is which.

Fidelity.com (US) — stock trades and dividends from the History CSV. Trades are in USD, converted at HMRC monthly average rates; dividend reinvestments into the core cash fund (e.g. SPAXX) are treated as purchases — worked through on a sample export.

Fidelity.co.uk (Fidelity International) — fund and ETF trades, dividends and cash interest from the Transaction history CSV. Dealing fees are matched automatically, and no FX conversion is needed. Upload both tax-year files when a holding spans years; ISA, Junior ISA and SIPP rows in All Accounts exports are skipped.

  1. Sign in at Fidelity.com
  2. Go to Accounts & TradeHistory (or Activity & Orders)
  3. Set the date range to cover your full UK tax year (6 Apr – 5 Apr)
  4. Choose Download and save the CSV; upload that file

Fidelity caps each download to a limited window (historically about 90 days), so a full tax year usually spans several files. Download each range and upload them all together — rows that overlap between files are de-duplicated automatically.

  1. Log in to Fidelity Personal Investing
  2. Open Account summaryTransaction history
  3. Set Timeframe to the tax year you need (or a custom range covering 6 Apr – 5 Apr)
  4. Leave Account on All Accounts and choose ExportCSV

Export one file per tax year and upload them together: a fund bought in one year and sold in the next needs both files to work out the cost. Only the Transaction history download is readable — a portfolio or valuation export carries no dealing rows. ISA, Junior ISA and SIPP rows are skipped as tax-free wrappers with no CGT to report.

  • Options and corporate actions — not parsed yet. Use Interactive Brokers if you trade options.
  • Missing purchase history — a sale with no matching buy is excluded with a warning (never booked at £0 cost); add the earlier purchase to complete it.
  • Offshore-fund income (US) — US money-market and bond fund distributions (e.g. SGOV) are recorded as dividends; UK rules may treat them as interest, so review if you hold these.
  • Tax deducted from interest (UK) — Fidelity International deducts UK tax at source on a row of its own. Your interest is reported gross, which is the figure the return asks for, but the tax already paid isn’t carried through — enter it yourself when you complete the savings pages.
  • Fund ISINs (UK) — ERI attaches through a fund’s ISIN, which this export doesn’t carry. We resolve Vanguard funds from their names; for anything else, and for a Vanguard name we can’t place with certainty, we leave the ISIN blank rather than guess, and tell you which fund it was so you can fill it in.
  • Other Fidelity downloads — a portfolio, positions or valuation export has no dealing rows in it, so it is refused by name rather than read as an empty year.

Vanguard

Beta

Fund and ETF trades, dividends and cash interest from the Vanguard Investor UK Client Transaction Listing. Everything settles in sterling, so no FX conversion is involved. ETF dealing fees are treated as an allowable incidental cost of the trade (TCGA92/S38); the platform Account Fee is not allowable for CGT, so it is excluded.

Upload the .xlsx as it downloads — every sheet is read, so there is no tab to pick. The General Account tab is the one that produces the report; ISA, Junior ISA and SIPP tabs are skipped because those wrappers are outside CGT, the Summary sheet is skipped as a summary, and you are told which tabs were left out. The workbook is also checked against itself: Vanguard’s running Balance column has to tie out to the penny, and where it doesn’t we refuse the file by name and ask you to save the account tab as CSV yourself, rather than report a number we can’t stand behind.

  1. Log in to Vanguard Investor UK
  2. Go to DocumentsReport generator
  3. Choose Client Transaction Listing Excel and a date range covering your full UK tax year (6 Apr – 5 Apr)
  4. Upload the downloaded .xlsx workbook

Every tab is read and the General Account is the one that produces the report — ISA, Junior ISA and SIPP tabs are skipped as tax-free wrappers with no CGT to report, and so is the Summary sheet. If we tell you the workbook could not be read, open it, select the account tab, choose FileSave As (or Export) → CSV and upload that instead, keeping both the Cash Transactions and Investment Transactions tables in it.

  • Corporate actions — not parsed; if you held a fund through one, adjust the pool manually on the edit page.
  • Ambiguous share classesERI attaches through a fund’s ISIN, which the export doesn’t carry, so we resolve it from Vanguard’s own fund data. Where one name matches several share classes we leave it unresolved, and that fund’s excess reportable income is missing from the report.
  • A dividend with no trade of the same fund — a dividend row names only a ticker, so we identify the fund behind it from a trade elsewhere in the same upload. A year of dividends with no buy or sell in it leaves the fund unidentified, and an offshore fund’s dividend is then reported as a UK one rather than on the foreign pages. Upload the year holding the purchase alongside it.

Interactive Investor

Beta

Stock and gilt trades, dividends, gilt coupons and cash interest from the ii transaction listing CSV — a debit/credit cash ledger, everything in sterling.

Gilts are recognised from their SEDOL. The export carries no ISIN, so one is derived from the SEDOL and matched against the UK Debt Management Office register: gilt disposals come out CGT-exempt (TCGA92 s115), and a gilt coupon — which ii labels Div in the ledger — is booked as savings interest, not a dividend, because that is what it is for the SA100.

Foreign-currency purchases (e.g. buying US dollars ahead of a trade) are recorded as FX acquisitions, so a later conversion back to sterling is matched against the pounds you actually paid.

  1. Log in to Interactive Investor
  2. Open the account and go to Transactions (cash statement)
  3. Set the date range to cover your full UK tax year (6 Apr – 5 Apr)
  4. Choose DownloadCSV and upload that file
  • Corporate actions — a scheme-of-arrangement cash-out is recorded as a disposal. The ledger omits the share count, so the calculator sizes it from the shares your uploaded trades show held on that date — include the export that covers the purchase, and check the figure against the contract note. Other corporate actions are flagged with a warning.
  • Missing purchase history — a sale with no matching buy is excluded with a warning (never booked at £0 cost); add the earlier purchase to complete it.
  • Account type — the file doesn’t state it, so export the trading (GIA) account; ISA and SIPP gains aren’t chargeable and have nothing to report.

Binance

Cryptocurrency trades from two exports: Trade History (spot buys/sells — covers most people) or Statements (also includes staking rewards, airdrops and BNB dust). Upload both if unsure — duplicates are removed automatically. See Crypto for how swaps, fees and rewards are handled.

  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

The Coinbase Retail transaction-history CSV that any Coinbase.com user can export. Covers Buy/Sell, Advanced Trade, Convert (crypto-to-crypto swaps), Receive, Send and staking rewards. See Crypto for how swaps, fees and rewards 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 or CSV — a clean PDF for your records, or one spreadsheet holding every figure
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 — shares, bonds, crypto, open option contracts, and foreign currencyYou still hold anything 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 UK dividends and UK interest, use the Income Summary to fill in the relevant boxes on your SA100 main return.

Self Assessment (SA106 — Foreign income)

Foreign dividends and overseas interest go on the SA106 Foreign pages, not the main return. SA106 is a per-row grid — one line per country — so the report lays your foreign income out the same way:

Column / BoxWhat goes in it
ACountry or territory code (resolved from the withholding row, then the holding’s ISIN)
BGross income before any foreign tax
CForeign tax taken off — the lower of what was withheld and what the treaty allows as a credit
E“X” to claim Foreign Tax Credit Relief (when there is creditable foreign tax)
FTaxable amount — a copy of column B when claiming FTCR, otherwise B − C
Box 6 / Box 4Total taxable: dividends (box 6) and interest (box 4) — the sum of column F
Box 2Total Foreign Tax Credit Relief on income — depends on your tax band

The country in column A comes from whatever your broker actually tells us: the jurisdiction named on the withholding row if there is one, otherwise the holding’s ISIN (its country of registration), not the trading currency — so a German company paying in euros is reported as Germany, not Ireland. Foreign Tax Credit Relief is the smaller of the foreign tax paid and the UK tax on that income, capped at the treaty rate (see Dividends & interest for the FTCR maths). If your foreign dividends total £300 or less, the report flags that you can put them on the SA100 main return instead.

Some exports do not carry enough to name the country. A US-listed depositary receipt (ADR) of a foreign company is the common case: Charles Schwab gives no ISIN, and it labels the tax only as Foreign Tax Paid — enough to know the tax was not American, not enough to know whose it was. Other brokers give the receipt a US ISIN, which names the listing venue rather than the issuer; tax withheld at anything other than the US 15% gives it away. Rather than guess, the row is named after the holding and marked enter code, and no Foreign Tax Credit Relief is credited for it until you name the issuer’s home country under Edit → Advanced → Dividend countries (Toyota is Japan, Novo Nordisk is Denmark, for instance). Once you have, the SA106 code and the treaty cap follow that country. Each such holding gets its own row, because each may be a different country.

The table helps with the naming without doing it for you. Beside each holding it shows the rate actually withheld, and every country in the list carries the rates it withholds at. Where only one country withholds at the rate seen — Japan’s 15.315%, Taiwan’s 21%, Denmark’s 27% — the row is filled in and waits for you to confirm it; where several do (25% is Ireland, France, Canada and Norway alike) it lists them and leaves the choice to you, because column A is your statement to HMRC, not ours. Name a country the rate contradicts and the row is marked at once; the next report says so too, with the Dividend tax mismatch warning pointing back at the setting. Retype a row’s ticker and its country is cleared — it was chosen for the old holding — so the rate help starts over for the new one.

If more than the treaty rate was withheld, the report says so and gives you the amount: the excess is not creditable against your UK tax, and you reclaim it from the country that took it rather than from HMRC. Novo Nordisk withholds Denmark’s 27%, for example, so nearly half of it has to be claimed back from the Danish authorities. That is also why column C can read less than your broker deducted — HMRC defines it as the lower of the tax withheld and the credit the treaty allows (HS263), and the grid tells you what the difference is.

See it on a real report: the foreign dividends example. For a plain-English walkthrough, read Self Assessment for investors.

Downloading Your Report

The Download button on your report opens a short menu, grouped by file format. Under PDF, pick Full report for a print-ready view, then save it with Ctrl+P (Windows) or Cmd+P (Mac).

When your report has both capital gains and income, the same group offers just the part a Self Assessment section needs:

  • Capital gains · SA108 — summary, the SA108 guide and every disposal section, for your capital-gains pages
  • Income · SA100 / SA106 — the SA100/SA106 box guide plus your dividends, interest and ERI, for your income pages
  • Full report — everything, including your Portfolio Holdings carry-forward snapshot

Foreign dividends and interest are income, so they appear only in the Income and Full reports — never in the capital-gains file.

All data (CSV)

Under CSV the same menu offers All data — one spreadsheet holding everything the report has, for an accountant who would rather work in Excel than read a PDF. It saves as cgtcalculator-<name>-<tax year>.csv, using the taxpayer’s name when you have set one (see below).

The first column of every row names the part of the report it came from — DISPOSAL, DIVIDEND, HOLDING, SA_BOX, and so on — and the row under each name lists that part’s own column headings. Filter the first column in your spreadsheet to get one clean table at a time.

Several things in it are on no broker export. Every transaction carries the exchange rate the calculator actually used and that trade converted at it, so a foreign trade can be checked against the HMRC monthly rate by hand. The working behind each figure comes too — the purchases matched against every disposal, share, currency and option alike, income tax by band, and Foreign Tax Credit Relief per country — and so do your advanced settings: residency periods, spin-off splits, interest and non-reporting fund tickers, and any ERI entries you added.

Sterling totals are rounded to the penny for reading. Quantities, exchange rates and per-unit costs are written in full, so quantity × average cost still reconciles with the total beside it.

Two things are worth knowing before you read the file. A transaction’s sterling column is the broker’s own line converted at that rate — where a rule moves cost between rows, such as an assigned option’s premium joining the shares it bought (CG12313), the amount the calculator went on to use is in the OPTION_ASSIGNMENT and HOLDING tables rather than beside the trade. And a text cell that would otherwise start with =, +, - or @ is written with a leading apostrophe, so a broker description like - TW Tax is text in your spreadsheet instead of a formula. Delete the apostrophe if you would rather not see it.

Your Name and UTR on the PDF

Filing for more than one person? Put the taxpayer on the document so you can tell one computation from another.

In EditTax ProfileTaxpayer details, fill in what you want, Save, then download. Name, UTR and Broker / account are each optional, and only the ones you set are printed:

  • a band under the header: TAXPAYER John A. Smith UTR 1234567890 BROKER IBKR · U1234567
  • the name at the end of the footer line, so a loose page still says whose it is
  • the suggested filename: Tax Report - John A Smith - 2024-25 - Securities
  • in the CSV: the file’s first row, and its filename

All three PDF downloads carry the band, and searching Recent by name finds the report. The values stay in your browser and are never sent to us — they are labels, so they cannot change a figure. See Privacy & Security.

Engine Version

Every report is stamped with the version of the calculation engine that produced it, shown as v1.27 at the bottom of the report. When a rule changes the version goes up, and your saved report is marked out of date so you can recalculate it against the current rules. The changelog lists what changed in each version — click the stamp on your own report to jump straight to its entry.

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 against each other first, before any other rule. All acquisitions on that day are pooled and matched against all disposals on that day.

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 Section 104 pool — a running total of all your purchases at their average cost per share:

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.

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
  • Most corporate actions are not disposals — they just adjust your Section 104 pool
  • Cash mergers are the main taxable one — treated as a disposal at the merger price
  • Splits, renames, spin-offs, return of capital and stock dividends all carry your cost basis across with no CGT event
  • The calculator applies all of these automatically — except the spin-off split, which needs a percentage only you can supply

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

ActionTax Event?Effect on Pool
Stock Split / Reverse SplitNoShares multiply (or reduce on a reverse split), 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, at a percentage you enter
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. A reverse split (e.g. 1:10, common for leveraged ETFs) is the mirror image: your share count decreases and each remaining share carries proportionally more cost. Either way it is a reorganisation, not a disposal — no gain or loss arises, and the pool’s total cost is unchanged.

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.

Broker quirk (TD Ameritrade / Schwab): after a reverse split, TDA-migrated exports can report the same holding under a numeric CUSIP before the split and its plain ticker afterwards. The calculator recognises these as one security and applies the split from the migration journal, so your cost basis carries across instead of splitting into two holdings.

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. TCGA 1992 s126–131 sets the split by the two holdings’ market values on the first day they trade separately — a figure no broker statement carries, so it is the one corporate action you have to supply yourself. Take the percentage from the parent company’s investor relations page (US spin-offs usually publish it in the Form 8937), then enter the parent ticker, the new ticker and that percentage under Edit → Advanced → Spin-Off Cost Allocation.

Until you enter it, the spun-off shares stand at nil cost and the report carries a warning naming them. Selling them in that state is taxed on the full proceeds, and the parent’s pool keeps cost that should have moved across — so the gain is overstated now and understated later.

The percentage splits the cost of a spin-off your data reports — it cannot create the holding. If the statement you uploaded does not cover the distribution, the new shares never reach a pool, selling them reads as a disposal with no purchase on record, and the report says the allocation went unused. Upload the statement covering the spin-off, or add the row under Edit → Broker Transactions with the type Spin-Off, the new ticker, the shares received and the date.

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 → Meta Platforms Inc.
TWTRX24 Jul 2023Twitter → 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)

HMRC has a special rule for options: when you write (sell) one, the date you write it is the CGT event — not when it later 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

When an option is exercised or assigned, HMRC doesn’t tax the option separately — the premium adjusts what you paid (or received) for the stock.

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. Our blog follows this end to end for the wheel strategy.

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. 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 are the same as for shares — see Share Matching.

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 it still can’t be found, the disposal isn’t valued — instead a Missing prices warning lists the affected coins and dates. You can supply the value yourself: follow the warning to the edit page, find the coin’s row, and enter the GBP value of one coin on the trade date. The disposal is valued on recalculation and the warning clears.

FX Conversions

Why converting currency in your brokerage account is not a taxable event for an individual — and what still is.

Quick Summary
  • Converting a currency balance is not chargeable for an individual
  • The tax sits on the share trade, not on the cash moving between trades
  • Currency options and futures are still chargeable
  • We list your conversions anyway, outside the total, so you can see they were accounted for

If you hold USD in your brokerage account between trades and later convert it back to sterling, that conversion does not create a capital gain. Your cash balance is a debt your broker owes you, and s.251(1) TCGA 1992 puts no chargeable gain on the disposal of a simple debt.

Section 252 takes that exemption away again for foreign currency held with a bank — but only where the account holder is not an individual, a trustee or a personal representative. It was rewritten by Finance Act 2012 with effect from 6 April 2012, and HMRC's own manual now reads that foreign currency bank accounts give rise to gains and losses “for periods up to 5 April 2012”. Before that date the position was the opposite, and the old rules had a narrow “personal expenditure abroad” test — repealed along with s.252A and Schedule 8A.

What is still taxable

The exemption is narrower than “currency is untaxed”. Three things stay in scope:

  • The FX inside a share disposal. Buy a US stock in dollars and sell it in dollars, and the gain is still measured in sterling: cost at the exchange rate on the buy date, proceeds at the rate on the sell date. Currency movement between those two dates is taxed — as part of the share gain. We do this automatically on every foreign-currency trade.
  • Currency options and futures. The 2012 change explicitly does not reach them. Options appear in your report under Options, not here. Futures are not yet modelled — the report flags them instead of taxing them.
  • Physical currency. Banknotes and coin are outside the bank-account rule and keep the old treatment — though currency bought to spend abroad is exempt in its own right (s.269).

Companies are different

None of this applies to a company. Corporate foreign-exchange movements are not capital gains at all — they run through the loan relationships rules (CTA 2009 Part 5) and are taxed as income on the CT600. This calculator produces an SA108 for individuals, so if you are filing for a company, treat the conversions listed in your report as a starting figure for that separate computation rather than a CGT number.

What you will see in your report

Conversions are still read from your statements, pooled and matched, and shown in the FX Conversions section with a running gain or loss. That figure is excluded from your assessment total and from every SA108 box. It is there so you can confirm nothing was missed, and so an accountant filing for a company has the number to hand.

Your broker may label a trade GBP.USD while the report shows USD/GBP. Sterling is your home currency, so it can’t be the asset — the calculator flips the pair to track the foreign side. Selling GBP/USD means acquiring USD; buying it means disposing of USD. Every figure is converted to sterling at the rate on the trade date.

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.

ERI / Offshore Funds

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

Quick Summary
  • Offshore reporting funds — both accumulating (e.g. VWRP) and distributing (e.g. VWRL) — 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
  • Non-reporting funds are different — the whole gain when you sell is taxed as income (an “offshore income gain”), not a capital gain. Flag them by ISIN (or ticker) under Edit → Advanced → Non-reporting offshore funds
  • Bundled data for iShares, Vanguard, BlackRock, Invesco and VanEck funds — applied automatically (view bundled data)
  • More providers coming — Xtrackers and Amundi planned

What is ERI?

If you hold offshore funds with UK reporting status (Irish-domiciled ETFs from iShares or Vanguard are the common case), you may owe tax on “phantom income” — income the fund earned but didn’t pay out to you in cash. This is called Excess Reportable Income. It applies to both accumulating and distributing share classes — accumulating funds (e.g. VWRP, VUAG) typically have large ERI because they reinvest everything, while distributing funds (e.g. VWRL, VUSA) usually have small or zero ERI because most income is already paid out as dividends. Either way, if there is excess income, it must be reported.

It is taxable whether or not you sold anything — it is income the fund earned on your behalf, not a gain on a sale.

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 VWRP (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 VWRP, your cost basis is £325.95 higher — so you won’t be taxed on that amount again as a capital gain.

Adding ERI yourself

Only iShares, Vanguard, BlackRock, Invesco and the newer VanEck share classes are applied automatically. For anything else — Xtrackers, Amundi, VanEck’s pre-2022 classes and the rest — the figure comes from the provider: look for the “UK reporting fund status” or “UK tax information” document on the fund’s own site. It lists one row per share class, and is published within six months of the reporting period end. Enter it under Edit → Advanced → Custom ERI Entries: the identifier, the reporting period end date, the currency, and the excess income per unit.

Per unit means one share. Copy the figure your statement quotes, in the fund’s own currency. We multiply it by the units you held, so a total typed here gets multiplied a second time: hold 500 units, enter the £250 you worked out for the whole holding, and the report charges you £125,000.

For the identifier, use the ISIN if your statement has one. It names the exact share class, so nothing else can be mistaken for it. Schwab, Morgan Stanley, Revolut and Fidelity publish no ISIN, so use the ticker instead. Hargreaves Lansdown publishes neither, so use the fund name. Whichever you pick has to match something in Edit → Transactions. If it matches nothing, the report tells you rather than dropping the income.

ERI attaches to the units you held on the reporting period end date. Buy after that date and the period’s figure is not yours to declare, however large it is — the next period’s will be.

Non-reporting funds — a different tax treatment

Everything above is about funds with UK reporting status. Not every offshore fund has it. A fund without reporting status is a non-reporting fund, and its tax treatment is different — and usually worse for you.

How a non-reporting fund is taxed

When you sell an interest in a non-reporting fund, the profit is an “offshore income gain” — charged to income tax, not capital gains tax. That means:

  • taxed at your income rates (up to 45%), not the lower CGT rates;
  • no capital-gains annual exempt amount (the £3,000 allowance does not apply);
  • a loss on the fund stays an allowable capital loss, but it cannot be set against offshore income gains.

Where the fund is based tells you nothing about its status. An Irish or Luxembourg fund can be either, and the status belongs to the share class, not the fund. Look it up on the fund’s factsheet, or search HMRC’s reporting funds list. If your share class is not on that list, treat it as non-reporting.

Nothing in your broker export says which it is, so you have to tell us. Add the holding under Edit → Advanced → Non-reporting offshore funds and its gains are taxed as income instead. If you hold an Irish or Luxembourg fund we have no ERI figures for, the report asks you to check: either it is reporting and its income is missing, or it is non-reporting and needs flagging.

An Irish or Luxembourg ISIN does not mean you hold a fund. Both countries also number the ordinary shares of companies incorporated there, Linde and Accenture among them. Some statements say what each holding is: IBKR labels its securities ETF, COMMON, ADR, and where we see that label we say nothing about the ordinary shares. Where no statement says, we leave a note instead of a warning — a fund may be missing its ERI, and a share needs nothing at all.

Example

You buy 1,000 units for £8,000 and later sell them for £16,000 — an £8,000 gain.

Reporting fund: a capital gain — after the £3,000 allowance, £5,000 taxed at CGT rates.

Non-reporting fund: the full £8,000 is an offshore income gain — taxed as income (e.g. £3,200 at the 40% higher rate), with no allowance.

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 CSV:

ProviderCoveragePopular Funds
iShares2018–2025 (3,500+ entries)SWDA, CSPX, EMIM, EIMI, ISF
Vanguard Funds Plc2018–2025 (1,400+ entries)VWRL, VWRP, VUSA, VUAG, VHYL, VEVE, VFEM
BlackRock2019–2025 (3,200+ entries)BGIF, BGF, BSF (institutional funds)
Invesco2018–2024 (530+ entries)SPXP, gilt & bond ETFs
VanEck2022–2025 (37 entries, partial)Defense, Uranium & Nuclear, Quantum Computing

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 2025Bundled
December 2022–2024VIS Plc ERI Dec 2022–2024Bundled

Source: Vanguard UK Tax Information

iShares Data Sources

iShares ETFs (CSPX, SWDA/IWDA, EMIM, etc.) are bundled for 2018–2025. Source: iShares UK Tax Information Library

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

Invesco Data Sources

Invesco ETFs are bundled for 2018–2024. Source: Invesco ETF Documents

VanEck Data Sources

Only VanEck UCITS ETFs plc share classes launched after 2021 are bundled (2022–2025). VanEck’s report for the period ended 31 December 2021 is not published at any reachable address, and bundling a fund with a gap in its series would quietly under-state your pool cost while hiding the warning that asks you to fill it in. Older classes therefore keep that warning, and you can add their figures under Edit → Advanced. Source: VanEck Report to Participants

Gilts & UK Government Bonds

If you sell a UK gilt, there’s no Capital Gains Tax. There’s also no allowable loss. The rule is symmetric and it’s been the law since 1992.

Quick Summary
  • Sell a gilt at a profit — no tax
  • Sell a gilt at a loss — you can’t offset it against other gains
  • Coupon interest is still taxed as savings income on your Self Assessment
  • We identify gilts by ISIN, against a list we keep in sync with the UK Debt Management Office

What a gilt actually is

A gilt is a bond the UK government sells when it needs to borrow. You hand over cash, they pay you a coupon twice a year, and on the redemption date you get your principal back. The Debt Management Office (DMO) does the issuing.

There are two flavours. Conventional gilts have a fixed coupon — 4¼% Treasury Gilt 2032 pays 4.25% of nominal twice a year until March 2032, then redeems. Index-linked gilts uplift both the coupon and the principal in line with RPI. Both kinds are exempt from CGT.

Why no CGT

Section 115 of the Taxation of Chargeable Gains Act 1992 says it directly: a disposal of a gilt-edged security isn’t a chargeable disposal.

The exemption is just for the sale. The interest the gilt pays you — the coupon — is still taxable as savings income. If you sell between coupon dates, the accrued interest goes on your return separately under the Accrued Income Scheme.

How we know it’s a gilt

We match by ISIN against a list of every gilt the DMO has issued. The list is in the codebase — view it here — sourced from DMO’s own data feed and snapshotted from 2022 onwards so historical disposals work too.

ISIN prefixes alone aren’t enough — GB00B* also shows up on UK corporate bonds and even UK equities. The only reliable signal is the exact ISIN against the issuer’s register.

What you soldExampleWhat happens
A gilt in our DMO listGB00BYZW3G56 — 1½% Treasury Gilt 2026Excluded from CGT. Card in the Notes modal noting s115.
A UK corporate bondGB00B2NGPM57 — Paragon Banking 6.125% 2026Counted as a normal share. You get a warning so you can double-check it’s really a corporate bond and not a gilt we missed.
A foreign government bondUS912810TJ69 — US Treasury 4% 2052Counted as a normal share. No warning — the ISIN isn’t UK.
A UK share with a GB ISINGB00B03MLX29 — Rio Tinto plcCounted as a share. Your broker reports the asset class as stock, so we never confuse it with a bond.

If you see “UK bond not in registry”

This warning appears when your broker reports a bond disposal with a GB-prefixed ISIN that isn’t in our list. Two possibilities:

  1. It’s a UK corporate bond. Those are taxable like any other share. Leave the calculation alone — the warning is just asking you to confirm.
  2. It’s a gilt we don’t recognise yet. Either a very new issue (after our last DMO refresh) or a very old one (redeemed before our snapshots start in 2022). Cross-check the ISIN against the DMO website. If it’s a gilt, remove the disposal manually before exporting your return — or open a ticket so we add it to the registry.

Either way the safe default is to treat it as a normal share — you might overpay on a gilt we missed, but you can’t accidentally underpay.

What this chapter doesn’t cover

If you only hold gilts, skip the rest — you’re done. The list below is for completeness.

  • UK Treasury Bills are short-term Treasury paper, under a year. Different report at DMO, handled separately.
  • Gilt strips are zero-coupon securities created by stripping a gilt into its component cashflows. Different tax treatment in detail. Not in v1.
  • Gilt futures and options are derivatives. Different rules, handled by the options pipeline.
  • Foreign government bonds — US Treasuries, Bunds, JGBs — are taxed normally under UK CGT, with any treaty relief claimed separately.
HMRC Reference

Dividends & Interest

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

Quick Summary
  • Dividends — taxed at special rates (10.75%–39.35%) with a £500 allowance (2026/27)
  • 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 rate10.75%£107.50
Higher rate35.75%£357.50
Additional rate39.35%£393.50
Rates shown are for the 2026/27 tax year (Autumn Budget 2025). Earlier years are lower — 8.75%/33.75%/39.35% for 2022/23–2025/26 and 7.5%/32.5%/38.1% up to 2021/22. The report applies the correct rate for the year you are calculating.

Here is how the calculation works:

GROSS
£1,500
Total dividends
Allowance: £500
Minus Allowance
TAXABLE
£1,000
Basic: £107.50 tax
Higher: £357.50 tax

You receive £1,500 in dividends. Subtract the £500 allowance → £1,000 is taxable. At basic rate (10.75%): £107.50 tax. At higher rate (35.75%): £357.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%

This relief is formally Foreign Tax Credit Relief (FTCR), capped at the UK tax on the same dividend:

FTCR = min(foreign tax paid, UK tax on the dividend)

You claim it on the Foreign pages (SA106) of your Self Assessment — see Report output for the box-by-box mapping.

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%
These rates apply through the 2026/27 tax year; they rise by 2pp per band (22%/42%/47%) from 2027/28 (Autumn Budget 2025).
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. Deeply discounted securities are the exception — each instrument gets its own named row.

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.

Non-reporting offshore funds: A gain on selling a non-reporting offshore fund is taxed as income (an “offshore income gain”) rather than a capital gain — at income rates, with no annual exempt amount. A loss is not an offshore income loss, but it stays an allowable capital loss. If you hold such funds, add their ISIN (preferred, since a ticker can collide across exchanges) or ticker in the Settings panel under Non-reporting offshore funds. The gain goes in box 41 of the SA106 Foreign pages (“Gains on disposals of holdings in offshore funds”) — the amount of the gain, not the tax on it — and the filling guide shows the figure to copy. See ERI / Offshore Funds for details, or HS265 for HMRC’s own guidance.

US Treasury bills (T-bills): Held-to-maturity T-bills are Deeply Discounted Securities. The discount earned at redemption is income, not a capital gain, and it counts as savings income — so it gets the Personal Savings Allowance and the savings rates (SAIM1080). A US issuer makes the discount relevant foreign income, which goes on the SA106 Foreign pages (SAIM3070); SA101 box 3 is for UK deeply discounted securities such as gilt strips. The calculator detects T-bills in Schwab, IBKR and Fidelity exports and lists each one as its own interest row, tagged DDS — no manual flagging required.

Annual income

Interest and dividends are taxed on top of your other income — so the tax on the same interest depends on how much you already earn. This applies to all your interest and dividends (broker cash interest, foreign interest, fund distributions and the T-bill discount), not just one source.

Your band is set by your total income (salary + interest + dividends). The thresholds:

BandYour total incomeInterest rate
Tax-freeUp to £12,5700%
Basic£12,570 – £50,27020%
Higher£50,270 – £125,14040%
AdditionalOver £125,14045%

If interest crosses a threshold, the part above is taxed at the next rate. Below, two people earn the same £2,000 of interest but pay different tax — only because their salaries differ:

Same £2,000 interestOther incomeTheir bandTax on that interest
Person A£20,000Basic£200 (£1,000 tax-free, rest at 20%)
Person B£80,000Higher£600 (£500 tax-free, rest at 40%)
Person C£200,000Additional£900 (no tax-free, all at 45%)

That is why we ask which band you are in: without it we cannot tell whether your interest sits in the 20%, 40% or 45% band, so the report shows every band and you pick your own. The Tax Profile tab gives you two ways to get a single figure instead. A tax code (like 1257L) does not help — it only states your tax-free allowance, not your total income.

Pick a band, or enter your income

Select a band (Basic / Higher / Additional) if you would rather not disclose the exact figure. Picking a band still tells us something precise: it caps your total income, and we already know the investment part of that total from your transactions. Subtract one from the other and your remaining income has a known ceiling — so we charge you as if you earned exactly that, which is the most anyone in your band could owe. The result is labelled approximate throughout the report, because it is an upper bound rather than your actual bill.

Where that ceiling is low enough, the reliefs stop being guesswork and we apply them in full. A Basic-rate filer with £12,000 of interest and £30,000 of dividends cannot have more than £8,270 of other income, which is under the personal allowance whatever the true figure — so the starting rate for savings and the unused allowance both apply, and the bill is £2,921.25 rather than the £4,781.25 that flat band rates would charge. Three rules still need the actual number when the ceiling is too high to force them:

  • Starting rate for savings. If your non-savings income is below £17,570, part of your interest is taxed at 0% (ITA 2007 s12). With a small portfolio the band leaves room for far more income than that, so we cannot tell whether you qualify and the figure over-states your tax — someone on a £15,000 salary with £3,000 of interest owes £0, but the Basic band figure shows £400.
  • Unused personal allowance. If your income does not use up the £12,570 allowance, the remainder shelters your investment income. Again a small portfolio leaves the ceiling too high to prove it: £5,000 of salary plus £2,000 of staking rewards owes £0, but the Basic band figure shows £400.
  • Band straddle. Where your income lands inside the band changes which slice of your interest or dividends crosses a threshold. We assume the top of the band, so the split is the least favourable one available to you.

Because the band is read as a statement about total income, picking one that is too low now shows as an error rather than a quietly cheaper bill: if your interest and dividends alone exceed the band’s ceiling, no such taxpayer exists and the report says so.

Enter your income for the exact figure and the precise marginal split is computed instead. The two are one choice, not two settings: picking a band clears any income you had entered, and entering an income clears the band. Choose Rather not say to go back to the every-band table.

What to enter

Your other taxable income for the year, before this year’s interest and dividends:

IncludeLeave out
Salary and wagesThis year’s interest
Pension incomeThis year’s dividends
Rental and other taxable incomeCapital gains

If none of that applies to you — no salary, no pension, no rent — enter 0. That is a real answer, not a blank, and it is the case where entering the figure helps most: with nothing using up your £12,570 personal allowance, it shelters your interest and dividends instead, and the bill is often nil. No band can tell us that.

What changes in your report

  • The tax-band badge changes from “All bands” to your band (e.g. “Higher rate”). When you picked the band rather than entering income, hovering the badge notes the figure is approximate.
  • The three-row Tax by Income Band table becomes a single Income Tax Due figure, using the right tax-free allowance for your band.
  • Your Capital Gains Tax is unchanged — neither your income nor your band affects it.

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, and the calculator checks each disposal against them 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

Taxability depends on both when you sold and when you acquired the shares:

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

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.

Salary Calculator

A free take-home pay calculator for the 2024/25, 2025/26 and 2026/27 tax years. It is separate from the CGT report — nothing to upload, no sign-in, and it runs entirely in your browser.

Quick Summary
  • Type a gross salary — take-home per year, month and week updates as you type
  • Covers rUK and Scottish income tax, employee NI, pension contributions and student loans
  • Shows where every pound goes, and how your salary compares with other UK taxpayers
  • Your inputs live in the page address, so a set-up can be shared as a link

What it deducts

Everything is computed from the published thresholds for the tax year you pick — the rate tables on the page itself show the exact figures used. Tick Resident in Scotland and the income tax section switches to the Scottish bands; NI and student loans are the same UK-wide.

DeductionHow it is worked out
Income TaxBands for England, Wales & NI (20/40/45%) or the six Scottish bands (19–48%), after the £12,570 personal allowance. Above £100,000 the allowance shrinks by £1 per £2 of adjusted net income.
National InsuranceEmployee Class 1: 8% between £12,570 and £50,270, 2% above. Annualised — matches an even monthly salary.
PensionSalary sacrifice (taken before tax and NI) or relief at source (you pay 80%, your provider claims 20%). Both reduce adjusted net income, so both can restore a tapered allowance.
Student loansPlans 1, 2, 4 and 5 at 9% above each plan’s threshold; Postgraduate Loan at 6% above £21,000. A plan loan and a postgraduate loan are collected at the same time.

Reading the results

The headline figure is annual take-home, with monthly and weekly alongside. The table beneath explains the gap: gross salary, then each deduction, then the total taken. The diagram draws the same split to scale — the wide band is what you keep.

Below the table, two lines place you against HMRC’s income distribution — the share of UK taxpayers who earn less than you, and the share who pay less Income Tax. Both come from the Survey of Personal Incomes for 2023/24, the latest year HMRC has published.

What it deliberately leaves out

The result is an annualised estimate for a standard tax code. Bonuses, benefits in kind, net-pay-arrangement pensions and Marriage Allowance are not modelled. For relief-at-source pensions the calculator shows payslip-level tax: higher-rate taxpayers reclaim the extra relief through Self Assessment, and that reclaim is not folded into the numbers.

Sharing a calculation

The inputs are mirrored in the URL. /salary-calculator?salary=110000&pension=10 opens with £110,000 and a 10% salary-sacrifice pension already applied — useful for sending someone the exact scenario you are looking at. Anything else in the link, such as campaign tags, is left untouched.

Once you know your take-home

A monthly take-home figure is the input most people actually want a mortgage payment measured against, so the Mortgage Calculator sits next to this one and works the same way — nothing to upload, no sign-in. If you also sold shares, funds or crypto during the year, the CGT rate you pay turns on the taxable income this page gives you; the CGT report takes it from there.

Open the Salary Calculator →

HMRC Reference
  • Income Tax rates and Personal Allowances (gov.uk)
  • National Insurance rates and categories (gov.uk)
  • Personal Allowances: adjusted net income (gov.uk)
  • Repaying your student loan: how much you pay (gov.uk)
  • Scottish Income Tax 2026/27 (gov.scot)

Mortgage Calculator

A free mortgage repayment calculator. It is separate from the CGT report — nothing to upload, no sign-in, and it runs entirely in your browser.

Quick Summary
  • Type a price, deposit, rate and term — the monthly payment updates as you type
  • Repayment or interest-only, with the total cost of the mortgage over its life
  • A chart shows the balance falling month by month against the interest paid so far, and what overpaying saves
  • Your inputs live in the page address, so a scenario can be shared as a link

What the inputs mean

Every figure is computed month by month in exact pence — the same simulation drives the headline stats, the cost table and the chart, so they always agree.

InputWhat it does
Price & depositThe loan is price minus deposit; the deposit can be typed in pounds or as a percentage. Loan-to-value (loan ÷ price) is shown alongside — lenders price by LTV bands.
Rate & termThe annual interest rate and length of the mortgage. A repayment mortgage charges the annuity amount M = P·r(1+r)ⁿ/((1+r)ⁿ−1) each month; interest-only charges P·r.
Repayment typeRepayment clears the loan by the end of the term. Interest-only costs less per month, but the whole capital is still owed at the end and appears as its own line in the cost table.
OverpaymentA fixed monthly amount paid straight off the capital. The result shows how many months earlier the mortgage ends and the interest saved.

What it deliberately leaves out

Stamp Duty Land Tax, product and arrangement fees, valuation, legal costs and insurance are not modelled — the result is the loan arithmetic only. The rate is assumed constant for the whole term; when a fixed deal ends, recalculate with the new rate.

Sharing a calculation

The inputs are mirrored in the URL. /mortgage-calculator?price=350000&rate=5&term=30 opens with a £350,000 purchase at 5% over 30 years already applied. Anything else in the link, such as campaign tags, is left untouched.

Working out what you can afford

A lender cares about what lands in your account, not your gross salary. The Salary Calculator gives you the monthly take-home figure to hold the payment above against — Income Tax, National Insurance, pension and student loan taken off.

Open the Mortgage Calculator →

Reference

Retirement Calculator

A browser-only FIRE projection for estimating a spending target, possible timing and the monthly saving needed for a chosen age.

Quick Summary
  • Divide annual spending by a selected withdrawal rate to estimate target capital
  • Project one fee- and inflation-adjusted monthly schedule in today’s money
  • Compare expected timing with the minimum monthly saving for a target age
  • Share the scenario using the page address without uploading the figures

Calculation contract

The target is annual spending divided by the withdrawal rate and is rounded upward to a penny. Monthly real growth uses ((1 + return) × (1 − fees) ÷ (1 + inflation))^(1/12) − 1. Growth is rounded to pence before each month-end contribution is added.

The target-age solver searches whole-penny monthly contributions and returns the lowest amount whose projection reaches the target. If the target age is today, it reports a capital shortfall instead; if the supported contribution ceiling is insufficient, it says so rather than returning a capped answer.

Important limitations

The deterministic estimate does not model sequence-of-returns risk, tax, State Pension, pension access rules, defined-benefit income or changing spending. A 4% withdrawal rate is a guideline rather than a guarantee, and investments can fall as well as rise.

Open the Retirement Calculator →

Compound Interest Calculator

A free savings and investment growth calculator. Nothing is uploaded or stored, no sign-in is needed, and every calculation runs in your browser.

Quick Summary
  • Combine an initial amount with regular monthly contributions
  • Compare everything contributed with the interest added by compounding
  • Model contribution increases, payment timing and inflation
  • Share the exact scenario using the page address

What the inputs mean

The projection is simulated month by month in integer pence. Its headline figures, growth chart and yearly table all use the same schedule.

InputWhat it does
Starting amount & contributionsThe lump sum invested now and the amount added each month. Contributions can rise by a chosen percentage after each completed year.
Return & termThe assumed annual return and number of years invested. Returns are projections, not guarantees, and investments can fall as well as rise.
Frequency & timingAnnual, quarterly, monthly or daily compounding is converted to an equivalent monthly growth factor. Start-of-month contributions receive one more growth period than end-of-month contributions.
InflationAn optional discount that restates each balance in today’s money. It changes estimated purchasing power, not the nominal balance.

What it deliberately leaves out

The result is before tax and costs. It does not compare ISA, pension or General Investment Account wrappers, and it does not deduct Capital Gains Tax, dividend tax, fund charges, dealing costs or platform fees. Reduce the return assumption if you want to allow approximately for recurring costs.

Open the Compound Interest Calculator →

Reference

Privacy & Security

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

Quick Summary
  • Processed in memory, never on disk — your broker files are used only to build your report, then discarded
  • 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

Your broker file travels over an encrypted connection to our server, where it is processed entirely in memory — never written to disk or saved to any database.

IN MEMORY
FILE
broker.csv
Your trades
ENGINE
Server
In memory
REPORT
SA108
Back to you
ON DISK
DATABASE
Empty
No trades stored
FILES
Empty
No CSVs saved
REPORTS
Empty
No history kept
PROCESSED IN MEMORY — NEVER STORED

Your broker file is sent over an encrypted connection and processed in memory to build your report, then discarded. We write nothing to disk — our database has zero records of your trades.

When you upload a broker CSV, four things happen — all in memory on our server:

  1. Your file is received — the CSV is parsed in memory. It is never written to disk.
  2. Exchange rates are applied — HMRC’s official monthly rates convert foreign-currency trades to GBP.
  3. The engine calculates your report — all matching rules, option strategies, corporate actions, and income calculations run in memory.
  4. You see the result — the finished report is sent back to your browser and rendered on screen. You can download it as a PDF, and nothing is kept afterwards.

Data Storage by Tier

On every plan, your CSV is sent to our server for calculation, processed in memory only, and never stored.

FeatureAll plans
Where calculations runOur server
Data sent to serverYes — processed in memory only
Data stored on diskNo
Data in any databaseNo

Firms that cannot send client files to a third party at all can have a dedicated deployment on the Business plan, where the engine runs in the browser and files never reach us — see Private Instance.

The taxpayer name, UTR and broker you can put on a report (see Your Name and UTR on the PDF) never leave your browser at all. They are kept there, on the one report they belong to: they are not part of any calculation request, they are in no analytics event, and they are never logged. The PDF and the CSV are both built on your own device, so putting your name on either sends us nothing. The tax engine never sees them, so they cannot change a single figure — they are labels on a document.

Because they belong to that one report, there is deliberately no “remember this for next time” setting anywhere in the product: filling them in for one client can never pre-fill or leak them onto another client’s report. Clearing the section removes all three at once, and deleting the report from Recent deletes them with it. And because your browser is where they live, they are on that device only — a different browser, or one whose data you have cleared, has no copy.

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 or trade your data, and we do not share it with advertisers or data brokers
  • We do not store your broker files, transaction history, or calculated reports
  • We do not receive the taxpayer name, UTR or broker on your report — they stay in your browser
  • 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.

If You Sign In

Sign-in is only needed for paid tiers. If you sign in with Google, two pieces of information end up on file:

  • Your email and display name, taken from the Google sign-in token
  • An internal account ID, the date you signed up, and the date you last logged in

That is the entire record, and none of it is linked to your trades or reports.

The legal basis is contract performance (Article 6(1)(b) of the UK GDPR): we need this much to run the account.

Who Else Touches Your Data

A short list of services involved in running the site:

  • Supabase — holds the sign-in record (EU region, encrypted at rest and in transit)
  • Google — runs the OAuth sign-in itself (US, transfers covered by Standard Contractual Clauses)
  • Vercel — hosts the site and runs the cookieless analytics described above

If we add or change any of these, this page is updated.

How Long Things Are Kept

The sign-in record lives as long as the account does. Ask us to delete the account and it goes too. Supabase keeps short-term backups for service recovery, typically a few days.

If you have never signed in, there is no record of you to keep or delete.

Your Rights

Under UK and EU data protection law you can ask us to:

  • Show you what we have on file (it’s only what’s listed under “If You Sign In”)
  • Correct anything that’s wrong
  • Delete the account and the record with it
  • Send you a copy as a JSON export
  • Stop processing it

Email support@cgtcalculator.io and say what you need. Mention the email address you signed in with so we can find the record. We reply within 30 days under the GDPR clock, usually much sooner. There is no form to fill in.

If you think we mishandled your data, you can also complain to the UK Information Commissioner’s Office at ico.org.uk.

Private Instance

If sending client files to a third party is not an option, we can run the calculator on a separate instance where your broker files never reach our servers.

Quick Summary
  • A separate instance of the app — set up for you, running under your own licence
  • The engine runs in your browser — broker files are read and calculated on your device and never reach us
  • Set up for an agreed period — renewable, not a permanent parallel service
  • Available on the Business plan, by request — email partnerships@cgtcalculator.io

How It Works

The calculation engine is compiled to WebAssembly (WASM) — a format that runs natively in your browser, just like JavaScript, but faster. On a private instance it is the browser that parses your broker files and applies every matching rule, so the files themselves stay on the machine that opened them.

What Still Travels

Your transactions stay on your device. Three things still cross the network, and none of them carry your trades:

  • Exchange rates — HMRC’s official monthly rates, so foreign-currency trades can be converted to GBP
  • Crypto prices — looked up per coin and date, if your report includes cryptoassets
  • Your sign-in — the account and licence check that unlocks the plan

You can confirm this yourself: open your browser’s Network tab (F12 → Network) while generating a report. You will see those requests and the WASM binary itself — and no request carrying your trades, positions, or amounts.

Who It Is For

Accountancy practices and platforms that handle other people’s financial data, where the question is not whether you trust us but whether you are permitted to send client files anywhere at all.

On the public site every plan calculates on our server, in memory, and nothing is stored — see Privacy & Security for what that involves. A private instance changes where the calculation happens, not what we keep.

To ask about it, email partnerships@cgtcalculator.io or use our contact page.

How Long It Runs

A private instance is set up for a period agreed with you when we scope the deployment, and can be renewed at the end of it. It is not a permanent parallel service: if the agreed period ends without renewal, we retire the deployment and your licence goes back to the public site.

Retiring an instance puts none of your work at risk. Nothing of yours lives on it — no broker files, no transactions, no reports — so there is nothing to migrate out and nothing left behind to delete.

Where Your Data Goes

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.

Subscription & Refunds

The paid plan is a yearly subscription. Here’s how billing, cancelling, and refunds work.

Quick Summary
  • One paid plan — Investor (“Fish & Chips”), billed yearly, renews on its own
  • Cancel anytime from Account → Subscription; access lasts to the end of the period you paid for
  • 14-day cooling-off — full refund if you haven’t opened the paid report yet
  • Broken report? Fixed or refunded, no time limit

What You Get

The free plan (Museum) runs a small report on our server. The paid Investor (“Fish & Chips”) and Business (“High Tea”) plans unlock the full per-trade report, PDF export, options and fund handling, and unlimited disposals. Each includes a set number of report generations per year — more on Business, which can also buy top-up packs. The current prices are on the pricing section.

Billing

Renewal is automatic, once a year. If the price ever changes, we email you first and you can cancel before it takes effect. Payment goes through Stripe; we never see or store your card.

Cancelling

Cancel from the Subscription tab in your account. From there:

  • Access stays full until your renewal date — the end of the period you’ve already paid for
  • After that the plan drops to Free and nothing renews — no more charges

Refunds

Two ways a refund applies:

SituationWhen you qualifyWhat you get
Changed your mindWithin 14 days, and before you open the paid reportFull refund
Something’s brokenAny time, once we confirm the fault (won’t parse, or a real bug)We fix it, or a full refund

The change-of-mind refund closes once you open the paid report — it unlocks on payment, so opening it counts as using it (your right under the Consumer Contracts Regulations 2013). Unsure? Run the free plan first. If something is genuinely broken on our side, we’ll fix it or refund you any time, opened or not — send the file with the “Send report” button so we can check.

Asking for a refund

If a report failed or looks wrong, use the “Send report” button in the error so we get the file. For anything else, email support@cgtcalculator.io from your sign-in address.

Full legal wording is in the Terms.