Documentation
Get your report in 3 steps
- Export your CSVDownload a statement from your broker — pick your broker’s steps.
- Upload itDrop the file(s) on the calculator. Everything runs in your browser.
- Review & fileCheck 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.
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 control | What you can do |
|---|---|
| Broker transactions | Correct the date, type, ticker, quantity, price, fees or currency of any imported trade — or delete a row entirely. |
| Manual transactions | Add trades by hand that never appeared in a broker export. |
| Exchange rates | Override the GBP conversion rate on any transaction when HMRC hasn’t published one. |
| Crypto prices | Enter the GBP value of a coin on the trade date when a price can’t be fetched. |
| Tax profile | Set 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 actions | Set 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 funds | Flag 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.
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.
| Form | What it covers | What we work out | See it |
|---|---|---|---|
| SA108 | Capital gains — share, crypto, option and currency disposals | Proceeds, allowable cost and gain/loss for each asset class, plus losses to carry forward | Trading 212 → |
| SA106 | Foreign income — overseas dividends and interest | A per-country grid with Foreign Tax Credit Relief capped at the treaty rate, and the box 6 de-minimis flag | Foreign dividends → |
| SA100 | The main return — UK dividends and UK interest | The UK-vs-foreign split, so each figure lands on the right form | Freetrade → |
For the box-by-box mapping see Report output; for a plain-English walkthrough read Self Assessment for investors: SA108, SA106 & SA100.
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.
- 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
| Broker | Stocks | Options | Dividends | Interest | Corporate Actions |
|---|---|---|---|---|---|
| Interactive Brokers | Yes | Yes | Yes | Yes | Yes |
| Trading 212 | Yes | — | Yes | Yes | Splits |
| Charles Schwab | Yes | Yes | Yes | Yes | Mergers |
| Freetrade | Yes | — | Yes | Yes | — |
| Hargreaves Lansdown | Yes | — | — | Yes | — |
| Morgan Stanley (MSSB) | Yes | — | — | — | — |
| Revolut | Yes | — | Yes | — | Splits |
| Robinhood | Yes | Yes | Yes | Yes | — |
| Fidelity | Yes | — | Yes | Yes | — |
| Vanguard | Yes | — | Yes | Yes | — |
| Interactive Investor | Yes | — | Yes | Yes | — |
| Binance | Crypto | — | — | — | — |
| Coinbase | Crypto | — | — | — | — |
Upload any supported CSV and the calculator identifies the broker from the file headers. No manual selection needed — just drag and drop.
Interactive Brokers (IBKR)
The most complete integration — stocks, options, corporate actions, FX trades, dividends and interest. Use the Activity Statement CSV; the simple trades export leaves out options.
- Log in to IBKR Client Portal
- Go to Performance & Reports → Statements
- Select Activity statement type
- Choose your date range (max 365 days per export)
- Select CSV format
- Click Run and download
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.
- Open Trading 212 app or website
- Go to History section
- Click the Export icon (top-right)
- Select timeframe (max 365 days per export)
- Click Export to download CSV
Charles Schwab
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.
- Log in to Schwab
- Navigate to Accounts → History
- Select your account and date range
- Set filter to All Transactions
- Click Export (top-right) → CSV
For RSU awards: Accounts → Transaction History → Select “Equity Award Center” → Custom Date Range → Search → Download
Freetrade
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.
- Open the Freetrade app
- Go to Activity tab
- Tap the download icon (top-right)
- Select All Activity
- Export file to your device
Hargreaves Lansdown
BetaStock, 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.
- Log in to Hargreaves Lansdown
- Go to My accounts → Tax centre
- Pick the account and the tax year, and open the transaction summary
- 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 theDRI…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.
- Log in to Morgan Stanley at Work (StockPlan Connect)
- Go to the report download page and export your transaction history
- Upload both Releases Report.csv and Withdrawals Report.csv
Revolut
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.
- Open the Revolut app
- Go to Invest → More (three dots)
- Select Documents → Stocks → Account Statement
- Select the Excel or CSV tab, choose your date range
- Tap Get Statement and upload the
.xlsxor.csvfile
Robinhood
BetaStock 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.
- Open the Robinhood UK app or website and sign in
- Go to Account (person icon) → Reports and statements
- Under Account activity reports, select Reports
- Tap Generate new report, pick a date range covering your full UK tax year (6 Apr – 5 Apr), and include all transaction types
- 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
BetaTwo 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.
- Sign in at Fidelity.com
- Go to Accounts & Trade → History (or Activity & Orders)
- Set the date range to cover your full UK tax year (6 Apr – 5 Apr)
- 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.
- Log in to Fidelity Personal Investing
- Open Account summary → Transaction history
- Set Timeframe to the tax year you need (or a custom range covering 6 Apr – 5 Apr)
- Leave Account on All Accounts and choose Export → CSV
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
BetaFund 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.
- Log in to Vanguard Investor UK
- Go to Documents → Report generator
- Choose Client Transaction Listing Excel and a date range covering your full UK tax year (6 Apr – 5 Apr)
- Upload the downloaded
.xlsxworkbook
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 File → Save 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 classes — ERI 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
BetaStock 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.
- Log in to Interactive Investor
- Open the account and go to Transactions (cash statement)
- Set the date range to cover your full UK tax year (6 Apr – 5 Apr)
- Choose Download → CSV 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.
- Log in to Binance
- Go to Orders → Trade History
- Select your date range and click Export
- Choose CSV format and download
- Log in to Binance
- Go to Wallet → Transaction History
- Click Generate all statements
- Select your date range and click Generate
- Download the CSV when ready
Coinbase
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.
- Log in to Coinbase.com
- Open your profile → Statements (or Taxes and reports)
- Choose Transaction history → CSV → Generate report
- Select a date range that covers your full UK tax year (6 Apr – 5 Apr)
- Download the
.csvwhen ready
Multi-Broker Support
Upload multiple CSV files from different brokers at once. The calculator combines them into a single report — matching rules are applied across all your holdings regardless of which broker they’re held at.
Manual Transaction Entry
If your broker isn’t listed, you can add transactions manually. Available fields include date, ticker, action (buy/sell), quantity, price, fees, and currency. Manual entries appear alongside CSV transactions and follow the same HMRC matching rules.
This is useful for unsupported brokers, one-off corrections, or historical trades that aren’t in your broker export.
Report Output
Understanding your CGT report — what each section means and how to use it for Self Assessment.
- Tax-year grouped — everything organised by UK tax year (6 April – 5 April)
- SA108 ready — proceeds, costs, and gains map directly to your Self Assessment boxes
- Full audit trail — every disposal shows which matching rule was applied and a complete calculation breakdown
- Download as PDF or CSV — a clean PDF for your records, or one spreadsheet holding every figure
Your broker data — disposals, acquisitions, and income — flows through HMRC share matching rules and produces a complete SA108 tax report. Proceeds £12,400 minus costs £8,200 = £4,200 net gain. Download it as a PDF to file with your Self Assessment or keep for your records.
What’s in Your Report
The report is organised into sections. Not all sections appear every time — you only see the ones relevant to your data.
| Section | What It Shows | Appears When |
|---|---|---|
| Warnings | Missing purchases, incomplete data, or unknown transaction types | Issues found in your data |
| Self Assessment Summary | Total proceeds, allowable costs, and net gain/loss for SA108 | Always |
| Matching Summary | How many shares matched under each rule: Same Day, B&B, Section 104 | You made disposals |
| Stock Disposals | Each sale with ticker, date, quantity, proceeds, cost, and gain | You sold stocks |
| Transaction Details | Per-sale breakdown showing which purchases matched, by which rule, and FX rates used | You sold stocks or options |
| Section 104 Pools | Remaining holdings with quantity, total cost, and average cost — click any row to expand full history | You still hold shares |
| Holdings | Unrealised positions with quantity and cost — shares, bonds, crypto, open option contracts, and foreign currency | You still hold anything after matching |
| Option Disposals | Option trades with underlying, strike, expiry, and gain/loss | You traded options |
| FX Disposals | Foreign exchange trades with currency pair, amount, and gain/loss | You traded currencies |
| Income Summary | Dividends and interest with withholding tax, treaty relief, and tax by band | You received dividends or interest |
| ERI Section | Excess Reportable Income from offshore funds with per-unit calculations | You hold reporting funds |
Self Assessment (SA108)
The Self Assessment Summary at the top of your report gives you the numbers for HMRC’s SA108 Capital Gains page. SA108 splits disposals into separate sections by asset type — you enter the totals for each section into a different group of boxes:
| SA108 Section | Proceeds | Costs | Gains | Losses |
|---|---|---|---|---|
| Listed shares & securities | Box 24 | Box 25 | Box 26 | Box 27 |
| Cryptoassets | Box 13.2 | Box 13.3 | Box 13.4 | Box 13.5 |
| Other property, assets & gains | Box 15 | Box 16 | Box 17 | Box 19 |
Box numbers are taken from the SA108 form for 2025-26 (year ending 5 April 2026). The Cryptoassets section (boxes 13.1–13.8) was added from 2024-25 onwards — before that, crypto disposals went into “Other property, assets and gains”.
The Assessment Summary still groups crypto disposals into the “Stocks” row. Until we split it out, find your crypto tickers (BTC, ETH, USDT, …) in the Stock Disposals table, sum their proceeds, costs, gains and losses on their own, and put those subtotals in boxes 13.2–13.5 — not 24–27.
For 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 / Box | What goes in it |
|---|---|
| A | Country or territory code (resolved from the withholding row, then the holding’s ISIN) |
| B | Gross income before any foreign tax |
| C | Foreign 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) |
| F | Taxable amount — a copy of column B when claiming FTCR, otherwise B − C |
| Box 6 / Box 4 | Total taxable: dividends (box 6) and interest (box 4) — the sum of column F |
| Box 2 | Total 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 Edit → Tax Profile → Taxpayer 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.
- Same Day Rule — sells are matched to buys on the same day first
- Bed & Breakfast Rule — then matched to buys within the next 30 days
- Section 104 Pool — remaining shares use your average cost basis
When you sell shares, HMRC doesn't let you choose which purchase to match the sale against. Instead, three rules are applied in a strict order. You can't skip or reorder them.
1. Same Day Rule
If you buy and sell the same stock on the same calendar day, those transactions are matched against each other first, before any other rule. All acquisitions on that day are pooled and matched against all disposals on that day.
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 at £10, then 50 at £14. Pool holds 150 shares at £1,700 total (avg £11.33). Sell 80 — cost basis is 80 x £11.33 = £906.67. Pool keeps 70 shares at £793.33.
Short Positions
If you sell shares you don’t own (short selling), the calculator tracks the short position separately. When you buy to cover, purchases are matched to the short sale in first-in-first-out (FIFO) order. Gain or loss is calculated as the difference between the sale proceeds and the covering purchase cost.
How Fees Are Handled
When you buy shares, any broker fees and commissions are added to your cost basis. When you sell, fees are deducted from your proceeds.
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.
- 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:
| Action | Tax Event? | Effect on Pool |
|---|---|---|
| Stock Split / Reverse Split | No | Shares multiply (or reduce on a reverse split), cost per share adjusts, total cost unchanged |
| Cash Merger | Yes — disposal | All shares removed, proceeds trigger capital gain/loss |
| Spin-Off | No | Cost basis split between parent and new company, at a percentage you enter |
| Ticker Rename | No | Pool merges to new symbol, cost basis unchanged |
| Return of Capital | No | Reduces cost basis (increases future gain on disposal) |
| Stock Dividend | No (acquisition at market value) | New shares added at market value on dividend date |
| Transfer In | No | Shares added to pool with original cost basis |
| Transfer Out | No | Shares removed from pool; receiving broker inherits cost basis |
Stock Splits
When a company does a stock split (e.g. 4:1), your share count increases but your total cost basis stays the same. You just have more shares, each worth less. 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.
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.
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.
100 shares of ParentCo (cost £10,000). After spin-off with 10% allocation: ParentCo retains £9,000 cost basis, NewCo receives £1,000. Total preserved: £9,000 + £1,000 = £10,000.
Ticker Renames
When a company changes its ticker symbol, the calculator merges the old and new pools automatically. Your cost basis transfers to the new symbol with no tax event. The following renames are handled automatically:
| Old Ticker | New Ticker | Effective Date | Company |
|---|---|---|---|
| FB | META | 9 Jun 2022 | Facebook → Meta Platforms Inc. |
| TWTR | X | 24 Jul 2023 | Twitter → X Corp. |
FB pool (cost £8,000) becomes META pool (cost £8,000). Nothing changes except the symbol. The calculator merges the pools automatically.
Return of Capital
Sometimes a company returns capital to shareholders. This isn't income — it reduces your cost basis instead. If you later sell the shares, your gain will be higher because your cost basis is lower.
You receive £2,000 return of capital. Share count stays at 100, but cost basis drops from £10,000 to £8,000. If you sell at £120/share, gain is (£12,000 − £8,000) = £4,000 instead of £2,000.
Stock Dividends
When a company pays a dividend in shares instead of cash, the new shares are added to your Section 104 pool. Their cost basis is the market value on the dividend date. This is not a disposal — no capital gains tax is due at the time you receive the shares.
Transfers In & Out
When you transfer shares between brokers, no CGT event occurs:
- Transfer In — shares transferred from another broker are added to your Section 104 pool with their original cost basis.
- Transfer Out — shares transferred to another broker are removed from the pool. The receiving broker inherits the cost basis.
Options Trading
How call and put options are taxed under UK rules — from simple covered calls to complex multi-leg strategies.
- Each option is a separate asset — never pooled like shares
- Writing (selling) — premium received is taxable when you write it
- Buying — premium paid is your cost basis
- Exercise/Assignment — option premium adjusts stock cost basis
- Expiration — worthless options create a capital loss (or gain for writers)
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:
You write a call and receive $300 premium. If it expires worthless, you keep the full premium as a capital gain — dated to when you wrote it, not when it expired.
Buying an option — the premium you pay becomes your cost basis. Sell it later for a gain or loss.
You buy a call for $500 and later sell it for $700. Your gain is the difference minus fees: $700 − $505 = $195.
Expiration — when an option expires worthless, the outcome depends on which side you were on:
The buyer loses their premium (capital loss). The writer keeps theirs (capital gain, dated to writing date). Both sides are calculated automatically.
Exercise and Assignment
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:
You exercise your $150 call. Stock cost basis becomes: strike ($15,000) + premium ($500) + fees ($6) = $15,506. The option disappears — its cost is baked into the stock.
Assignment — your short option gets assigned. The premium you received reduces the stock cost:
Your short $105 put is assigned — you buy 100 shares at $105. The $300 premium you received reduces your cost: $10,500 − $300 + $2 fees = $10,202.
Cross-Tax-Year Trades
If you write an option in one tax year and close it in the next, the calculator splits the tax correctly across both years. The premium is taxed in the year you wrote it, and the closing cost creates a repay entry in the closing year. 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:
| Category | Strategies |
|---|---|
| Single-Leg | Long Call, Long Put, Short Call, Short Put, Covered Call, Cash-Secured Put, Protective Put |
| Vertical Spreads | Bull Call, Bear Call, Bull Put, Bear Put, Ladders (Bull/Bear Call/Put) |
| Calendar & Diagonal | Calendar Call/Put, Diagonal Call/Put, Double Diagonal |
| Butterflies | Long/Short Call Butterfly, Long/Short Put Butterfly, Iron Butterfly, Inverse Iron Butterfly |
| Condors | Long/Short Call Condor, Long/Short Put Condor, Iron Condor, Inverse Iron Condor |
| Straddles & Strangles | Long/Short Straddle, Long/Short Strangle, Covered Short Straddle/Strangle, Guts/Short Guts |
| Combos & Synthetics | Collar, Long/Short Combo, Jade Lizard, Reverse Jade Lizard, Synthetic Future/Put, Strap, Strip |
| Ratio & Broken Wing | Call/Put Ratio Spread, Call/Put Ratio Backspread, Call/Put Broken Wing (regular & inverse) |
Crypto
How UK Capital Gains Tax applies to cryptocurrency, and how we handle your Binance and Coinbase data.
- Crypto is property, not currency — every sale, swap, or spend is a taxable disposal
- Same matching rules as shares — Same Day, Bed & Breakfast, Section 104 Pool
- Swapping tokens creates two events — a disposal of one and an acquisition of another
- Stablecoins like USDT and USDC are mapped to USD for pricing
How HMRC Taxes Crypto
HMRC treats crypto as property, not currency (CRYPTO22200). Selling, swapping, or spending crypto is a disposal — and Capital Gains Tax applies. The gain or loss is the difference between your disposal proceeds in GBP and the cost from your Section 104 pool.
The matching rules 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.
You swap 0.5 BTC for 8 ETH on 15 March 2024. This becomes:
- SELL 0.5 BTC — matched against your BTC pool
- BUY 8 ETH — added to your ETH pool
If your BTC pool cost was £10,000/BTC and the market price that day was £52,000/BTC:
(0.5 × £52,000) − (0.5 × £10,000) = £26,000 − £5,000 = £21,000 gain
Fees are allocated to the first side only, to avoid double-counting.
Stablecoins
Stablecoins are pegged to fiat, so we map them to their fiat equivalent. A BTC/USDT trade is treated as BTC/USD — and the USD amount is then converted to GBP at the HMRC daily rate.
We recognise USDT, USDC, BUSD, DAI, TUSD, FDUSD, USDP, UST, USD1, USDS, USDSOLD, RLUSD, PAX, and VAI as USD equivalents. AEUR and EURI map to EUR, GYEN to JPY. Anything not on the list is treated as a crypto-to-crypto swap and priced independently.
Both Binance (Trade History + Statements) and Coinbase Retail (all four header variants) are supported. See Supported Brokers for export instructions.
Fees
Exchange fees can be paid in different currencies. We handle each case:
- Fee in the quote currency (e.g. USDT) — used directly
- Fee in the traded asset (e.g. you buy ETH, fee charged in ETH) — converted via the trade price. If you’re selling, fee tokens are also a disposal from your pool per CRYPTO22280 — so the disposed quantity increases to include them
- Fee in a third token (e.g. BNB) — converted to GBP at the daily price. If the price isn’t available, the fee is recorded as zero with a warning
Staking & Airdrops
If you upload a Statements CSV (see Supported Brokers), staking rewards and airdrops are also processed:
- Staking rewards — reported as miscellaneous income at the GBP value on the date received, and added to your Section 104 pool at the same value. Covers earn products, staking interest, referral commissions, and card cashback
- Unsolicited airdrops — added to your Section 104 pool but not treated as income on receipt (CRYPTO22500). Airdrops received in return for a service may be taxable as miscellaneous income (CRYPTO22400). The CGT event happens when you later sell or swap those tokens
How Prices Are Converted to GBP
Every transaction needs a GBP value. The conversion path depends on how the pair is quoted:
- GBP pair (BTC/GBP) — already in GBP, no conversion
- Other fiat pair (ETH/USD, SOL/EUR) — converted to GBP at HMRC’s daily exchange rate
- Stablecoin pair (BTC/USDT) — USDT is mapped to USD, then converted to GBP via the HMRC rate
- Crypto pair (ETH/BTC) — the quote asset (BTC) is priced in GBP using daily data from CryptoCompare and CoinGecko. The GBP value of the trade is then derived as: BTC amount × BTC/GBP rate
If a price isn’t available for a given date, we check ±1 day. If 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.
- 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.
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.
- 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:
- Cost basis adjustment (on the fund’s reporting date) — your Section 104 pool cost increases by the ERI amount. This prevents you from being taxed again when you eventually sell.
- Taxable income (6 months after the reporting date) — the same amount becomes reportable income, usually taxed as dividends or interest depending on the fund type.
Fund reports ERI on 30 June. Your pool cost adjusts immediately. Six months later (30 December), the same amount is reportable as dividend income on your tax return.
You hold 200 shares of 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.
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.
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
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:
| Provider | Coverage | Popular Funds |
|---|---|---|
| iShares | 2018–2025 (3,500+ entries) | SWDA, CSPX, EMIM, EIMI, ISF |
| Vanguard Funds Plc | 2018–2025 (1,400+ entries) | VWRL, VWRP, VUSA, VUAG, VHYL, VEVE, VFEM |
| BlackRock | 2019–2025 (3,200+ entries) | BGIF, BGF, BSF (institutional funds) |
| Invesco | 2018–2024 (530+ entries) | SPXP, gilt & bond ETFs |
| VanEck | 2022–2025 (37 entries, partial) | Defense, Uranium & Nuclear, Quantum Computing |
Vanguard Data Sources
| Reporting Period | Download | Status |
|---|---|---|
| June 2025 | VF Plc ERI Jun 2025 | Bundled |
| June 2024 | VF Plc ERI Jun 2024 | Bundled |
| December 2025 | VIS Plc ERI Dec 2025 | Bundled |
| December 2022–2024 | VIS Plc ERI Dec 2022–2024 | Bundled |
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 Range | Coverage | Status |
|---|---|---|
| BlackRock Global Index Funds (BGIF) | 2020–2025 | Bundled |
| BlackRock Global Funds (BGF) | 2020–2024 | Bundled |
| BlackRock Strategic Funds (BSF) | 2020–2024 | Bundled |
Source: BlackRock Reporting Fund Status
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.
- 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 sold | Example | What happens |
|---|---|---|
| A gilt in our DMO list | GB00BYZW3G56 — 1½% Treasury Gilt 2026 | Excluded from CGT. Card in the Notes modal noting s115. |
| A UK corporate bond | GB00B2NGPM57 — Paragon Banking 6.125% 2026 | Counted 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 bond | US912810TJ69 — US Treasury 4% 2052 | Counted as a normal share. No warning — the ISIN isn’t UK. |
| A UK share with a GB ISIN | GB00B03MLX29 — Rio Tinto plc | Counted 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:
- 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.
- 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.
- TCGA 1992 s115 (legislation.gov.uk)
- HMRC Capital Gains Manual CG54900 (gov.uk)
- UK Debt Management Office, Gilts In Issue (D1A) (dmo.gov.uk)
Dividends & Interest
How dividend income and interest income are taxed, including allowances and double taxation relief.
- 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 Year | Allowance |
|---|---|
| 2024/25 onwards | £500 |
| 2023/24 | £1,000 |
| 2018/19 – 2022/23 | £2,000 |
After the allowance, dividends are taxed at:
| Tax Band | Rate | Example (£1,000 taxable) |
|---|---|---|
| Basic rate | 10.75% | £107.50 |
| Higher rate | 35.75% | £357.50 |
| Additional rate | 39.35% | £393.50 |
Here is how the calculation works:
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.
$100 gross dividend, US withholds $15 (15%). At FX rate 0.79: declare £79 income, claim £11.85 tax credit. You pay UK tax on £79 minus the £11.85 credit. The calculator matches withholding tax to dividends automatically.
Treaty relief is calculated automatically for supported countries:
| Country | Withholding Rate | Treaty Relief Rate |
|---|---|---|
| USA | 15% | 15% |
| Canada | 25% | 15% |
| Ireland | 25% | 15% |
| Switzerland | 35% | 15% |
| Poland | 19% | 10% |
This relief is formally Foreign Tax Credit Relief (FTCR), capped at the UK tax on the same 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 Band | Personal Savings Allowance | Tax Rate |
|---|---|---|
| Basic rate | £1,000 | 20% |
| Higher rate | £500 | 40% |
| Additional rate | £0 | 45% |
£1,500 interest earned. As a basic rate taxpayer, £1,000 PSA is deducted → £500 taxable at 20% = £100 tax. As higher rate: £500 PSA, £1,000 taxable at 40% = £400 tax. The report shows all bands.
Note: Interest is grouped by month and broker in the report for easy cross-referencing with your broker statements. 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:
| Band | Your total income | Interest rate |
|---|---|---|
| Tax-free | Up to £12,570 | 0% |
| Basic | £12,570 – £50,270 | 20% |
| Higher | £50,270 – £125,140 | 40% |
| Additional | Over £125,140 | 45% |
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 interest | Other income | Their band | Tax on that interest |
|---|---|---|---|
| Person A | £20,000 | Basic | £200 (£1,000 tax-free, rest at 20%) |
| Person B | £80,000 | Higher | £600 (£500 tax-free, rest at 40%) |
| Person C | £200,000 | Additional | £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:
| Include | Leave out |
|---|---|
| Salary and wages | This year’s interest |
| Pension income | This year’s dividends |
| Rental and other taxable income | Capital 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.
- 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:
| Status | Meaning | CGT Effect |
|---|---|---|
| UK Resident | You live in the UK and meet the Statutory Residence Test | All disposals taxable normally |
| Non-Resident | You don’t meet the UK residency criteria | Share disposals excluded from UK CGT |
| Temporary Non-Resident | You left the UK temporarily (under 5 years) and returned | Gains deferred — taxed when you come back |
You sell 50 shares on 15 August 2024 with a £2,400 gain. But your residency config shows you were non-resident on that date. The disposal is excluded from UK CGT — the gain is £0 for UK tax purposes. The calculator tracks these excluded disposals separately in your report.
Taxability Rules
Taxability depends on both when you sold and when you acquired the shares:
| Status at Disposal | Status at Acquisition | Taxable? |
|---|---|---|
| UK Resident | Any | Yes \u2014 always taxable |
| Non-Resident | Any | No \u2014 excluded from UK CGT |
| Temporary Non-Resident | UK Resident | Yes \u2014 gain deferred until return |
| Temporary Non-Resident | Non-Resident | No \u2014 no UK nexus |
| Temporary Non-Resident | Temporary Non-Resident | No \u2014 both periods abroad |
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.
- 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.
| Deduction | How it is worked out |
|---|---|
| Income Tax | Bands 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 Insurance | Employee Class 1: 8% between £12,570 and £50,270, 2% above. Annualised — matches an even monthly salary. |
| Pension | Salary 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 loans | Plans 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.
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.
- 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.
| Input | What it does |
|---|---|
| Price & deposit | The 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 & term | The 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 type | Repayment 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. |
| Overpayment | A 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 →
- Stamp Duty Land Tax rates (gov.uk)
- MoneyHelper mortgage calculator (moneyhelper.org.uk)
- Bank of England effective interest rates (bankofengland.co.uk)
Retirement Calculator
A browser-only FIRE projection for estimating a spending target, possible timing and the monthly saving needed for a chosen age.
- 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.
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.
- 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.
| Input | What it does |
|---|---|
| Starting amount & contributions | The lump sum invested now and the amount added each month. Contributions can rise by a chosen percentage after each completed year. |
| Return & term | The assumed annual return and number of years invested. Returns are projections, not guarantees, and investments can fall as well as rise. |
| Frequency & timing | Annual, 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. |
| Inflation | An 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 →
- MoneyHelper savings calculator (moneyhelper.org.uk)
- Bank of England inflation calculator (bankofengland.co.uk)
- FCA guidance on investing (fca.org.uk)
Privacy & Security
Your financial data is sensitive. Here’s exactly what happens to it — and what doesn’t.
- 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.
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:
- Your file is received — the CSV is parsed in memory. It is never written to disk.
- Exchange rates are applied — HMRC’s official monthly rates convert foreign-currency trades to GBP.
- The engine calculates your report — all matching rules, option strategies, corporate actions, and income calculations run in memory.
- 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.
| Feature | All plans |
|---|---|
| Where calculations run | Our server |
| Data sent to server | Yes — processed in memory only |
| Data stored on disk | No |
| Data in any database | No |
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
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.
- 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
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.
- 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:
| Situation | When you qualify | What you get |
|---|---|---|
| Changed your mind | Within 14 days, and before you open the paid report | Full refund |
| Something’s broken | Any 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.
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.