Documentation
Get your report in 3 steps
- 01Export your statementDownload it from your broker — see supported formats.
- 02Upload itDrop the file(s) on the calculator. Everything runs in your browser.
- 03Review & 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 file, and get a tax report back.
Nothing is final — correct any figure, add a missing trade, override an FX rate, then recalculate. When a calculation rule changes, saved reports are marked out of date so you can rerun them; the changelog says what changed.
Currency Conversion
A trade in dollars, euros or any foreign currency has to be priced in pounds for UK tax. We convert at HMRC’s monthly exchange rate for the month of the trade — the price, the fees and the total.
10 shares at $150 on 15 March 2024: $1,500 ÷ 1.27 = £1,181.10. A sale in June uses June’s rate — every transaction converts on its own month.
- One rate per month — a weekend or bank-holiday trade uses it too
- Your own rate wins — type it in the FX/GBP cell, or send it in the generic CSV’s
Share_FX_Rate_To_GBPcolumn, and it is used at full precision instead of HMRC’s. CG78310 asks only that your method is reasonable and consistent - Otherwise HMRC’s table is our only source — not your broker’s rate, not a market feed
- ERI converts at the reporting period end — not the payout date beside it
- No rate published? Those transactions are flagged and left out of the totals until you type a rate into the FX/GBP cell in Edit → Broker Transactions
What you can edit
Open Edit from any report, or start on the Add by hand tab.
| What you control | What you can do |
|---|---|
| Broker transactions | Date, type, ticker, quantity, price, fees, currency — or delete the row. |
| Statements | Add a later or earlier statement. It is read together with the ones already in the report, and your edits are put back. |
| Manual transactions | Add trades that never appeared in an export. |
| Exchange rates | Override the GBP rate on any transaction. |
| Crypto prices | Set a coin’s GBP value when no price is found. |
| Tax profile | Residency periods, annual income, and the name and UTR printed on the PDF. |
| Corporate actions | Split a spin-off’s cost between parent and new ticker. |
| Offshore funds (ERI) | Add your own entries — ISIN, reporting date, per-unit. |
| Bond / interest funds | Mark tickers paying interest rather than dividends. |
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
You don’t pick the boxes — every figure comes out with the box it belongs in, grouped by form.
| Form | What it covers | What we work out | See it |
|---|---|---|---|
| SA108 | Capital gains — shares, crypto, options, currency | Proceeds, cost and gain/loss per asset class, plus losses to carry forward | Trading 212 → |
| SA106 | Foreign income — overseas dividends and interest | A per-country grid, with tax credit relief capped at the treaty rate | Foreign dividends → |
| SA100 | The main return — UK dividends and interest | The UK-vs-foreign split, so each figure lands on the right form | Freetrade → |
Box-by-box mapping: Report output. Plain-English walkthrough: Self Assessment for investors.
Where Your Files Are Processed
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.
Reference calculations to help with your Self Assessment — not financial or tax advice. The figures you submit to HMRC are yours. When in doubt, ask a qualified tax adviser.
Supported formats
- Nothing to pick — upload the file as it downloads; the broker is read from its headers
- Multi‑broker — files from different brokers combine into one report
- Broker not listed? — use Generic CSV, the classic cgtcalculator.com format, or add trades by hand
The broker is read from the file headers — no manual selection. Just drag and drop.
Worked reports from real exports: Interactive Brokers · Trading 212 · multi-broker.
Try a free example in the app →Supported Brokers
| 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 + Crypto | — | Yes | — | Splits |
| Robinhood | Yes | Yes | Yes | Yes | — |
| Fidelity | Yes | — | Yes | Yes | — |
| Vanguard | Yes | — | Yes | Yes | — |
| Interactive Investor | Yes | — | Yes | Yes | Cash takeovers |
| AJ Bell | Yes | — | — | Yes | — |
| Binance | Crypto | — | — | — | — |
| Coinbase | Crypto | — | — | — | — |
Generic CSV Format
Create a comma-separated .csv file or start with the canonical template. Headers are case-insensitive and may appear in any order; extra columns are ignored. Numbers may group thousands with commas (1,121.76); a decimal comma (103,86) is refused rather than guessed.
Example file
| Date | Action | Ticker | ISIN | Quantity | Price | Fees | Currency |
|---|---|---|---|---|---|---|---|
| 2024-01-12 | BUY | AVG | 10000 | 0.525 | 36.25 | GBP | |
| 2024-04-05 | DIVIDEND | AVG | 1 | 125.00 | GBP | ||
| 2024-06-03 | STOCK_SPLIT | AVG | 2 | GBP | |||
| 2024-09-16 | TRANSFER | CASH | 1 | 1000.00 | GBP | ||
| 2024-11-01 | TRANSFER_OUT | AVG | 20000 | 0.525 | GBP | ||
| 2024-11-01 | TRANSFER_IN | AVG | 20000 | 0.525 | GBP | ||
| 2025-02-14 | RETURN_OF_CAPITAL | AVG | 1 | 200.00 | GBP | ||
| 2025-05-20 | SELL | AVG | 2500 | 0.680 | 10.00 | GBP |
Supported actions
| Action | Description |
|---|---|
BUY | Purchase |
SELL | Disposal |
DIVIDEND | Dividend; Quantity × Price is the payment |
STOCK_SPLIT | Stock split; Quantity is the split factor |
TRANSFER | Cash movement; no CGT effect |
TRANSFER_IN, TRANSFER_OUT | Securities moved between accounts |
SPOUSE_TRANSFER_IN, SPOUSE_TRANSFER_OUT | No-gain/no-loss spouse transfer with carried allowable cost |
RETURN_OF_CAPITAL | Capital returned; Quantity × Price is the payment |
ACCUMULATION_DISTRIBUTION (alias ACCUMULATION), EQUALISATION | UK accumulation fund: Quantity 1, Price = the £ amount, Currency GBP; the pair shares one date and ticker |
Action names are case-insensitive. Keep the header row in the file.
Required headers: Date, Action, and at least one of Symbol, Ticker, or ISIN. A buy or sell also needs a positive Quantity and Price. Sell quantities may be written as positive or negative; they are normalised to a disposal.
Dates: use YYYY-MM-DD, YYYY/MM/DD, UK DD/MM/YYYY, or US MM/DD/YYYY; a two-digit year such as 28/01/25 also works. The order is decided for the whole file: one date like 28/01/2025 makes every date in it day-first. If no date settles it, 01/02/2024 means 2 January. Invalid calendar dates are excluded with a row warning.
| Field | Omitted or blank | Supplied |
|---|---|---|
Share_Currency | Currency, then USD | Canonical value wins; a conflict with Currency produces a warning |
Fees_Currency | GBP for GBX shares; otherwise share currency | Used for both Fees and Tax |
Share_FX_Rate_To_GBP | Fixed GBP/GBX rate, otherwise historical lookup | Positive GBP per source unit; overrides lookup |
Fees_FX_Rate_To_GBP | Fixed rate, matching explicit share rate, then lookup | Positive GBP per fee-currency unit; overrides lookup |
Fees / Tax | Zero, independently | Both are converted using the fee currency and rate |
Transferred_Allowable_Cost_GBP | Required for spouse transfer in | Positive total GBP cost carried from the transferor |
- An omitted optional header and a blank cell use the same fallback. Whitespace around values is ignored.
GBPis always1;GBXis always0.01. A different positive override is ignored with a warning. A malformed, zero, or negative supplied rate excludes the row with a warning.- An unknown three-letter currency is accepted when a positive rate is supplied. Without a resolvable rate, the row is excluded and the missing currency/date is named.
- Canonical currency fields win over a conflicting legacy
Currencyvalue and the row is accepted with a warning. Legacy files without canonical headers retain their original single-currency behaviour. - Unsupported or blank actions and rows missing action-required values are skipped with a row warning; other valid rows in the file are still calculated.
- Custom rates are user-provided inputs. The calculator applies them exactly but does not independently certify their source.
Spouse transfers: SPOUSE_TRANSFER_OUT removes the quantity and its Section 104 cost without a gain, loss, proceeds, or reportable disposal. SPOUSE_TRANSFER_IN adds shares on the transfer date using the required total Transferred_Allowable_Cost_GBP; Price is ignored for both actions.
Downloadable cookbook:
- Basic Generic CSV and GBP trades
- GBX shares with GBP fees
- One foreign currency and different share and fee currencies
- User-supplied rates and automatic historical rates
- Spouse transfer in/out and mixed portfolio
cgtcalculator.com Format
In cgtcalculator.com, select Format/Sort, copy the Trades field, and save it as a .txt file.
Example file
Column labels are not part of the file.
| Command | Date | Company | Shares | Price | Charges | Tax |
|---|---|---|---|---|---|---|
| B | 12/01/2024 | AVG | 10000 | 0.525 | 10.00 | 26.25 |
| S | 20/05/2025 | AVG | 2500 | 0.680 | 10.00 |
Supported commands
| Command | Description |
|---|---|
B, BUY | Purchase |
S, SELL | Disposal |
R | Restructuring |
Rights | Rights issue |
T | Spouse transfer |
C | Ignored legacy command |
Separate fields with spaces or tabs; do not add a header row. Trailing U/L markers are accepted but ignored because they belong to discontinued taper relief rules. Trades before 6 Apr 2008 produce a warning.
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. More on the Interactive Brokers CGT calculator page.
- 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. More on the Trading 212 CGT calculator page.
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. More on the Charles Schwab CGT calculator page.
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), gilts with their coupons, cash interest and share-lending income. Stamp duty and FX fees are read automatically. Corporate actions aren’t included — contact Freetrade support for a full statement. More on the Freetrade CGT calculator page.
- 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 has the same columns and works too. Everything is in sterling, so no FX 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. More on the Hargreaves Lansdown CGT calculator page.
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.
- A holding you also keep at another broker — HMRC pools shares of the same class as one holding however many brokers they sit at, but an HL name cannot be matched to the symbol or SEDOL another broker uses, so the two stay separate pools. Upload both and you are warned; give the two holdings the same name on the edit page to pool them.
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. More on the Morgan Stanley CGT calculator page.
- Log in to StockPlan Connect
- Go to Activity → Reports
- Releases Report: dates from your first vest, download CSV
- Withdrawals Report: same dates, download CSV
- Upload both CSVs together
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. More on the Revolut CGT calculator page.
Crypto has its own account statement, recognised on sight. Buys and sells (including Revolut X) in £, € or $ are converted at HMRC monthly rates, fee included in cost. Staking and Learn rewards are miscellaneous income at the day’s value and join the pool at that cost. Stake/Unstake and Send/Receive to your own wallet are not disposals (CRYPTO22100): coins move at cost, the withdrawal fee is not allowable. See Crypto for details.
- 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
- Open the Revolut app and tap your profile (top left)
- Select Documents and statements → Crypto → Account Statement
- Choose CSV and a date range from your first purchase to today — the cost of what you sell comes from earlier years
- Tap Get Statement and upload the
crypto_account_statement_….csvfile
Staking and Learn reward rows carry a quantity and no value, so each is priced for its coin on its day; the report names any it could not value, and those rewards are left out of the income and the pool until a price is found.
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. More on the Robinhood UK CGT calculator page.
- 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: all transaction types, dates from your first buy
- Download the CSV once it is ready
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. Both are supported, and whichever you upload is recognised on sight. More on the Fidelity CGT calculator page.
Fidelity.co.uk (Fidelity International) — fund and share trades (including the units Fidelity sells to settle its service fee), fund distributions, dividends, charge rebates, stock splits and cash interest from the Transaction history CSV exported with All Transactions. Dealing fees, stamp duty, the PTM levy and FX charges are matched to their trades automatically, and no FX conversion is needed. Upload both tax-year files when a holding spans years; a Custom export of the same account uploaded alongside is matched by reference number and not counted twice. ISA, Junior ISA and SIPP rows in All Accounts exports are skipped.
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.
- Log in to Fidelity Personal Investing
- Open Transactions & Reports → 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.
- 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.
- Options and corporate actions — not parsed yet (UK: a stock split is read from its Shares Added/Removed rows; nothing else is). 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 pays cash interest net of basic-rate tax and states the tax on a row of its own. We add the two back together so 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.
- Foreign income paid in sterling (UK) — dividends arrive in pounds with no country on the row. US shares,
Fidelity Funds -SICAVs and depositary receipts go to the foreign pages from their names; a US dividend has already had 15% US tax taken off, which the export doesn’t show, so enter it yourself for the foreign tax credit. An ETF we can’t place stays with UK dividends and is named in the ISIN warning — set its ISIN on the edit page to move it. - 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. More on the Vanguard CGT calculator page.
Upload the .xlsx as it downloads — every sheet is read, so there is no tab to pick. The General Account tab produces the report; ISA, Junior ISA, SIPP and Summary tabs are skipped, and you are told which. The workbook is checked against itself too: Vanguard’s running Balance column has to tie out to the penny, and where it doesn’t we refuse the file by name 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 history CSV — a debit/credit cash ledger, one per currency. More on the Interactive Investor CGT calculator page.
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.
Currency sub-accounts have their own ledger. Shares bought in Canadian or US dollars sit in a separate Transaction history whose figures all read CA$ or US$; upload it together with the sterling ledger. Those trades are booked in their currency and converted at the HMRC monthly rate, and a conversion that appears in both ledgers under the same Reference is counted once.
US dividends on the dollar ledger arrive net of withholding. ii credits what is left after the 15% US treaty tax and never shows the tax. For a company named like a US corporation (INC, CORP), the calculator rebuilds the gross and books the tax for Foreign Tax Credit Relief on SA106: $48.96 on 60 shares is 60 × $0.96 = $57.60, with $8.64 withheld. Dividends from other companies are booked as paid. Check either against the dividend voucher and correct it on the edit page.
- Log in to ii.co.uk in a desktop browser — the app has no CSV download
- Go to Portfolio → Transaction history (older layout: My Accounts → Transaction History)
- Pick your Trading Account and set the date range from your first buy to today, so the cost of what you sell is in the file
- Click the download icon above the table (next to the search icon) and choose CSV, then upload that file
Each export covers one account and never says which one it is. Upload the Trading Account file: an ISA or SIPP export is spotted from its subscription rows and the report warns you about it. If you trade in US$ or CA$, the currency account has its own Transaction history: download it too and upload both files together.
- 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.
AJ Bell
BetaFund, share and ETF trades plus cash interest from the AJ Bell Transaction history CSV. Everything is in sterling, so there is no FX to convert. Export the Dealing account only — the file doesn’t say which account it came from, and ISA, Lifetime ISA and SIPP gains are tax-free. More on the AJ Bell CGT calculator page.
Add the Cash statement too
It carries income the Transaction history does not: cash interest, gilt coupons (savings interest, not dividends) and fund charge rebates. A rebate is other taxable income with basic-rate tax already taken off, so it goes in boxes 17 and 19 of your main return. Its purchases and sales are left to the Transaction history, so uploading both never counts a trade twice.
Charges
The file has no fee column, so charges are worked out for you (allowable under TCGA92/S38):
| Charge | Allowable? | What we do |
|---|---|---|
| Dealing charge (£5.00 shares and ETFs, £1.50 funds) | Yes | Read from the gap between quantity × price and the cash that moved; added to cost or taken off proceeds |
| Stamp duty and PTM levy on UK share purchases | Yes | Same gap; added to cost |
| Quarterly custody charge | No | Left out — a platform fee, not a cost of the trade |
On a fund priced at hundreds of pounds a unit, AJ Bell rounds the unit count so much that the charge can’t be separated from the rounding. That row shows no charge rather than a guess; the gain is unaffected.
Holdings are pooled by name
The file has no ticker, ISIN or SEDOL, so the fund name identifies a holding. If the same fund appears under two spellings, or you also hold it at another broker, give both the same name on the edit page and they pool as one.
- Log in to ajbell.co.uk in a desktop browser — the mobile app and Dodl have no CSV download
- Choose your Dealing account in the View account dropdown (top left)
- Click My account (top right) → Documents and statements → Transaction history
- Set the Date range to cover your tax year (6 Apr – 5 Apr) and any earlier years in which you bought shares you still hold; leave Type on All
- Click the download (down-arrow) icon above the table to save the CSV, then upload it
The print icon next to it gives a PDF, which we cannot read. Each export covers one account; if you hold shares in more than one Dealing account, download each and upload them together.
- Accumulation fund income — the
Accumulation DistributionandEqualisation Acc Unitsrows are not booked automatically yet. Each fund is named in a warning with both amounts. Add them on the edit page as Accumulation and Equalisation rows for that fund and date — see Accumulation units. - Excess reportable income — ERI is matched on a fund’s ISIN, which the file doesn’t carry. Add the ISIN on the edit page for any ETF or offshore fund.
- Shares transferred in or out — a
Transfer InorTransfer Outof units is named in a warning, not booked: whether it is a disposal depends on whose account is at the other end. Add the purchase or sale on the edit page at the cost or market value that applies. - Dividends paid out, options and corporate actions — not parsed yet. Any row we don’t recognise is named in a warning so you can add it by hand.
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, and the Binance CGT calculator page for the worked example.
- 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, and the Coinbase CGT calculator page for the worked example.
- Log in to Coinbase.com
- Open your profile → Statements (or Taxes and reports)
- Choose Transaction history → CSV → Generate report
- Set the date range from your first purchase to today — the cost of what you sell comes from earlier years
- 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
No usable export? Add trades by hand — date, ticker, action, quantity, price, fees and currency, in any currency the Broker tab offers. A non-sterling row is converted at the HMRC monthly rate unless you type your own FX/GBP rate, the same way the generic template’s Share_FX_Rate_To_GBP works. They sit alongside imported rows and follow the same HMRC matching rules, so this also covers a one-off correction or a trade your export is missing.
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 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 |
Where the country comes from
- the jurisdiction named on your broker’s withholding row, if there is one;
- otherwise the holding’s ISIN — its country of registration, never its trading currency. A German company paying in euros is 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 maths).
Rows you have to finish
Some exports do not carry enough to name the country. Rather than guess, the report gives the holding its own row and marks it:
| Row marked | When | What to do |
|---|---|---|
| enter code | A US-listed depositary receipt (ADR) of a foreign company — Charles Schwab gives no ISIN and labels the tax only “Foreign Tax Paid”; other brokers give it a US ISIN, and tax withheld at anything other than the US 15% gives it away. Also foreign-currency interest from a UK broker (Interactive Brokers, Trading 212, Revolut), listed by currency. | Name the issuer’s home country under Edit → Advanced → Dividend countries (Toyota is Japan, Novo Nordisk is Denmark). No Foreign Tax Credit Relief is credited until you do. |
| check code | A bond or bill discount, placed by the issuer’s ISIN; cash interest from a US broker (Charles Schwab, Robinhood, Fidelity, Morgan Stanley), placed in the US. | Confirm the code is right. |
The table helps you choose. Beside each holding it shows the rate actually withheld: where only one country withholds at that rate (Japan 15.315%, Taiwan 21%, Denmark 27%) the row is pre-filled for you to confirm; where several do (25% is Ireland, France, Canada and Norway alike) it lists them and you pick. Name a country the rate contradicts and the row is marked, and the next report carries a Dividend tax mismatch warning. Retyping a row’s ticker clears its country.
Tax withheld above the treaty rate
The excess is not creditable against UK tax — you reclaim it from the country that took it, not from HMRC. Novo Nordisk withholds Denmark’s 27%, so nearly half of it comes 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). The report shows you the difference.
Small amounts
You can skip SA106 and use the SA100 instead: foreign dividends in box 6 up to the year’s limit (£500 from 2024/25, £1,000 for 2023/24, £2,000 before that, counting UK dividends too) and up to £2,000 of foreign interest in box 3. The report says so under the grid when your figures fit.
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 with everything the report has, for anyone 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).
Layout
The first column of every row names its table — DISPOSAL, DIVIDEND, HOLDING, SA_BOX, and so on — and each table starts with its own header row. Filter on the first column to get one clean table at a time.
What no broker export has
- The exchange rate actually used on every transaction, and the trade converted at it — check it against the HMRC monthly rate by hand.
- The working behind each figure — the purchases matched against every disposal (shares, currencies and options alike), income tax by band, Foreign Tax Credit Relief per country.
- Your Advanced settings — residency periods, spin-off splits, interest and non-reporting fund tickers, ERI entries.
Reading the numbers
- Rounding — sterling totals are rounded to the penny; quantities, exchange rates and per-unit costs are written in full, so quantity × average cost still reconciles with the total beside it.
- Moved cost — a transaction’s sterling column is the broker’s own line converted. Where a rule moves cost between rows, such as an assigned option’s premium joining the shares it bought (CG12313), the figure the calculator used is in OPTION_ASSIGNMENT and HOLDING, not beside the trade.
- Leading apostrophe — a text cell that would start with =, +, - or @ gets one, so a description like - TW Tax stays text instead of becoming a formula. Delete it if you would rather not see it.
Re-importing the File
The same CSV is your report’s save file. Drop it on the upload page on its own and the report comes back as you left it — transactions, hand edits, Manual-tab rows, every Advanced setting, taxpayer details and the original broker statements, so Add files on the Edit page still works. Restoring a report you already paid for costs no report credit. The statements embedded in the file stay in your browser; only the transaction rows and settings are sent for recalculation.
- Figures are recalculated, not copied — an older export comes back under the current rules. If the total differs from the one in the file, the report opens with both figures side by side.
- Edited in a spreadsheet? The calculator trusts the transaction rows, not the totals, so the same notice appears. Re-save as CSV with the rows intact.
- Damaged file — refused, not guessed at.
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 | Old ticker read as new |
|---|---|---|---|---|
| FB | META | 9 Jun 2022 | Facebook → Meta Platforms Inc. | 18 May 2012 – 25 Jun 2025 |
| SQ | XYZ | 21 Jan 2025 | Square → Block, Inc. | Any date |
| BLL | BALL | 10 May 2022 | Ball Corporation | Any date |
| VIACA | PARAA | 17 Feb 2022 | ViacomCBS → Paramount Global (Class A) | Any date |
An old ticker can be taken by another security later, so the rename is decided row by row. A row that carries the company’s ISIN is renamed whatever its date. A row without one is renamed only while the old ticker still belonged to that company: FB is read as META from Meta’s IPO on 18 May 2012 until 25 June 2025 — since 26 June 2025 FB is the ProShares S&P 500 Dynamic Buffer ETF and keeps its own pool. If your ISIN-less FB rows fall on both sides of that day, the report carries a warning; write META on the Meta rows to make it certain.
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, Coinbase and Revolut crypto 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.
Binance (Trade History + Statements), Coinbase Retail (all four header variants) and the Revolut crypto account statement are supported. See Supported formats 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 formats), 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. The figures for eight providers are already in the calculator.
Look up Excess Reportable Income by ISIN →- Both share classes — accumulating (VWRP) and distributing (VWRL) offshore reporting funds publish ERI every year
- Taxed as income, not as a gain — and your pool cost rises by the same amount, so it is not taxed twice
- A period we don’t hold is named in the report, never treated as nil
- Non-reporting funds are worse — the whole gain is income, with no annual exemption
Eight providers publish excess income as spreadsheets and PDFs — one row per share class per period. Those are already read in, 2018 to 2025, so a covered fund is valued at the right date and rate the moment you upload.
What is ERI?
Some offshore funds earn income they never pay out to you — Irish-domiciled ETFs from iShares or Vanguard are the common case. HMRC taxes your share of it anyway, whether or not you sold anything. That is Excess Reportable Income.
Accumulating classes (VWRP, VUAG) reinvest everything, so their ERI is large. Distributing ones (VWRL, VUSA) pay most of it out as dividends, so theirs is small or nil — but if any excess is left, it is still reportable.
How ERI Works
The fund publishes one figure per unit per year, and it lands on your return in two stages:
- Your pool cost goes up, on the fund’s reporting date — so the same money isn’t taxed again when you sell.
- The same amount becomes income, six months later — as a dividend or as interest, depending on the fund.
A fund holding more than 60% in bonds or cash pays interest, not dividends. Vanguard says which of its funds are bond funds, so those are treated as interest automatically. For any other provider’s bond fund, add it under Interest Fund Tickers.
Fund reports ERI on 30 June. Your pool cost adjusts immediately. Six months later (31 December), the same amount is reportable as dividend income on your tax return.
Hold 200 shares of VWRP on 30 June 2024, when Vanguard publishes $2.063 per unit at a rate of 0.79: 200 × $2.063 × 0.79 = £325.95. That goes onto your Section 104 pool that day, and is dividend income on 31 December 2024 — so your gain on the eventual sale is £325.95 smaller.
Adding ERI yourself
Needed only when your fund isn’t bundled, or the report names a period we don’t hold. The figure is in the provider’s UK reporting fund status document, one row per share class. Go to Edit → Advanced → Custom ERI Entries and fill in four fields:
| Field | What to type |
|---|---|
| ISIN or Ticker | One of the two, matching a holding in Edit → Transactions. Prefer the ISIN — it names the exact share class. Schwab, Morgan Stanley, Revolut and Fidelity exports have no ISIN, so type the ticker; Hargreaves Lansdown has neither, so type the fund name in the ISIN cell. |
| Reporting period end | The date on the provider’s report. ERI goes to whoever held the shares that day — buy later and it is not yours. |
| Currency and per unit | The figure for one share, in the fund’s own currency, as the report prints it. If we hold the ISIN and the period, both are filled in for you and the amount turns green; type a different figure and it turns amber, with ours on hover. A period we don’t hold turns the date amber — Save takes your figure as typed. |
| FX rate to GBP | Leave blank for the HMRC monthly rate, or type your own as GBP per one unit of the currency (0.8 means $1 = £0.80). |
Per unit means one share, not your total. We multiply by the shares you held. Hold 500 units, type the £250 total instead of £0.50 per unit, and the report charges you £125,000.
Many rows at once
Paste rows takes a block copied from a spreadsheet or a CSV, one fund and period per line. A header line is fine; the FX rate is optional:
ISIN,Period end,Currency,Per unit,FX rate IE00BK5BQT80,30/06/2024,USD,2.063,0.79 IE00B4L5Y983,30/06/2024,USD,1.4619 VAGS,30/06/2024,GBP,0.6794
Good lines are added; bad ones are listed by line number so you can fix them.
Changing a figure we applied
The report’s Excess Reportable Income table has an Override link on every fund. It opens this table with the row already filled in — you only change the figure or type your own FX rate. The same funds also sit in the table as grey detected rows, each with a ⋮ menu:
- Override — the row becomes yours to edit. Type a different figure and it turns amber: yours is used instead of ours, the report says so, and the ↵ takes you back to our figure. A row that agrees with ours stays plain, whatever FX rate you give it.
- Delete — no ERI is charged for that fund and period. Use it when you had sold before the period end on a statement you didn’t upload, or your broker already shows the income. The row turns red until you save, then leaves the table; the header shows 1 excluded next to the ⋮ — click either and Restore the ERI for brings the grey row straight back (one period, or all of them at once); save, and the report charges the period again.
Say you sold your 1,000 VAGS on 20 June 2024 but only uploaded this year’s statement. The report still charges £679.40 for 30 June 2024. Delete that period and save: the £679.40 is gone.
Non-reporting funds — taxed as income
Everything above is about funds with UK reporting status. Sell a fund without it — a non-reporting fund — and the gain is taxed as income, not as a capital gain:
- at your income tax rate, up to 45%;
- with no £3,000 allowance;
- a loss stays a capital loss and cannot be set against these gains.
Buy for £8,000, sell for £16,000. In a reporting fund that is an £8,000 capital gain, £5,000 of it taxable after the allowance. In a non-reporting fund the whole £8,000 is income — £3,200 of tax at the 40% rate.
Check the factsheet or HMRC’s reporting funds list — the status belongs to the share class, not the fund, and where the fund is based says nothing. Broker exports don’t show it either, so add the holding under Edit → Advanced → Non-reporting offshore funds.
Hold an offshore fund we have no ERI for and the report asks you to check which it is. An offshore ISIN can belong to a fund or an ordinary share, so where the statement labels its securities (IBKR writes ETF, COMMON, ADR) shares are left alone, and where it doesn’t you get a note rather than a warning.
ERI and the Matching Rules
ERI follows the shares you held on the reporting date, and the calculator splits them for you:
- Pool shares — ERI on your Section 104 quantity on that date.
- B&B shares — a holding sold before the reporting date and bought back within 30 days counts as held, so its ERI is income too. It does not raise the pool cost, because those shares had already left the pool.
Bundled ERI Data
If your fund is in here, its ERI is applied the moment you upload.
| Provider | Coverage | Popular Funds | Source |
|---|---|---|---|
| iShares | 2018–2026 (4,300+ entries) | SWDA, CSPX, EMIM, EIMI, ISF | iShares tax library |
| Vanguard Funds Plc | 2018–2025 (1,400+ entries) | VWRL, VWRP, VUSA, VUAG, VHYL, VEVE, VFEM | Vanguard UK tax information |
| BlackRock | 2019–2025 (3,800+ entries) | BGIF, BGF, BSF (institutional funds) | BlackRock reporting fund status |
| Xtrackers (DWS) | 2018–2024 (2,000+ entries) | XDWD, XMWO, XS2D, XUKS, XDJP | Xtrackers reportings |
| State Street (SPDR) | 2018–2025 (970+ entries) | SWLD, SPPW, GLDV, UKDV, ZPRV | SSGA announcements |
| Invesco | 2018–2025 (1,300+ entries) | FWRG, SPXP, gilt & bond ETFs | Invesco ETF documents |
| Amundi / Lyxor | 2025 only (176 entries) | CSH2, MWRL, LCWL, CD9, FLXI | Retail-UK-ETF@amundi.com |
| VanEck | 2022–2025 (37 entries, partial) | Defense, Uranium & Nuclear, Quantum Computing | VanEck report to participants |
- State Street (SPDR) — the year-end is 31 March, not December, so the income falls due on 30 September and the report follows shortly after.
- Xtrackers — Xtrackers, Xtrackers II and Xtrackers IE plc are bundled from 2018 (31 December year-end). The db X-trackers reports before that list some share classes twice with different figures, so they are left out rather than guessed at.
- Amundi / Lyxor — only the period ended 30 September 2025, because that is the only report we have: Amundi doesn’t publish it on its UK site and it arrived by email. Held one before October 2024 and the report names the earlier periods it is missing — unless the class only became a UK reporting fund partway through, when there is no earlier figure to add. Amundi also gives each class a period start, and 29 of its 176 classes begin mid-year; CSH2’s first runs from 10 March 2025.
- VanEck — only share classes launched after 2021. The 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 keep that warning.
- BlackRock — Global Index Funds (BGIF), Global Funds (BGF) and Strategic Funds (BSF), all from 2020–2025.
- Invesco — Invesco Markets II plc (FWRG and the bond ETFs, 31 December year-end) and Invesco Markets plc (the FTSE 100, FTSE 250, EURO STOXX 50 and MSCI trackers, 30 November year-end), both from 2018. Two figures are left out because Invesco’s own report cannot be read for them — RDX for the period ended 30 November 2018 and the STOXX Europe 600 Optimised Utilities ETF for 30 November 2019 — and a holder of either is told so.
- Vanguard — the four reports bundled, if you want to check a figure against the source:
| Reporting Period | Report |
|---|---|
| June 2025 | VF Plc ERI Jun 2025 |
| June 2024 | VF Plc ERI Jun 2024 |
| December 2025 | VIS Plc ERI Dec 2025 |
| December 2022–2024 | VIS Plc ERI Dec 2022–2024 |
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. Vanguard’s bond funds are recognised by their ISIN, so you only need to add other providers’ funds.
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.
Accumulation units
An accumulation (“Acc”) fund does not pay its income out — it reinvests it, so your units simply become worth more. HMRC still treats that reinvested income as taxable income in the year it is reinvested. In return, the same amount is added to the cost of your units (HMRC CG57707), so you are not taxed on it a second time as a gain when you sell.
| What happens | Amount | In your report |
|---|---|---|
| You buy 1,000 units | £1,000 | Pool cost £1,000 |
| The fund reinvests its income (Accumulation) | £40 | £40 − £10 = £30 taxed as income |
| Part of it was already in your purchase price (Equalisation) | £10 | Pool cost rises by £30 to £1,030 |
| You sell all units | £1,050 | Gain £20, not £50 |
Equalisation is the part of the first reinvestment after you bought that was already included in your purchase price. It is not income, so it is taken off before the income is taxed. If your voucher shows no equalisation, enter only the accumulation.
How to enter it
- Take the figures from your fund manager’s tax voucher or your platform’s consolidated tax certificate. In an AJ Bell export they are the Accumulation Distribution and Equalisation Acc Units rows.
- On the Edit page, add a transaction with the Accumulation action — fund, date and £ amount. Add an Equalisation row with the same fund and date if your voucher shows one. In a Generic CSV the actions are
ACCUMULATION_DISTRIBUTIONandEQUALISATION. - For a money-market or bond fund, add its ticker under Advanced › Bond / Interest Fund Tickers so the income is taxed as interest. Otherwise it is taxed as dividends.
The report tags these rows Accumulation in the income table and shows the cost uplift in the pool history. This applies to UK funds only: an offshore fund (non-GB ISIN) reports its reinvested income as Excess Reportable Income instead.
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)
Buy-to-Let Calculator
A free buy-to-let profitability calculator. It is separate from the CGT report — nothing to upload, no sign-in, and it runs entirely in your browser.
- Type a price, rent, deposit and rate — the yield and cashflow update as you type
- Monthly cashflow is shown before and after tax, with the Section 24 mortgage-interest restriction applied
- Also shows return on cash, a total return that layers in your projected capital growth, the ICR mortgage stress test and stamp duty
- Personal or limited-company ownership across England & NI, Wales and Scotland; your inputs live in the URL so a scenario can be shared
What the inputs mean
| Input | What it does |
|---|---|
| Ownership | Whether you own the property personally or through a limited company (SPV). Personal ownership is taxed at your Income Tax band under Section 24; a company deducts mortgage interest in full and pays Corporation Tax (19% up to £50k, 25% above £250k). |
| Nation | Where the property is — England & NI, Wales or Scotland. It picks the purchase tax (SDLT, LTT or LBTT) and, for Scotland, the Scottish Income Tax rates. |
| Price & rent | The purchase price and expected monthly rent. Gross yield is a year of rent over the price; net yield takes off the running costs first. |
| Projected property growth | The assumed annual rise in the property’s value (2% by default, and it can be negative for a falling market). It leaves the yield and cashflow untouched and only feeds the total return — the geared capital growth added on top of the post-tax cashflow. |
| Deposit, rate & type | The loan is price minus deposit (entered in £ or %). Most buy-to-lets are interest-only, so the monthly cost is loan × rate; a repayment loan uses the annuity formula instead. |
| Management, voids & costs | A letting agent’s fee as a percentage of rent, the share of the year the property sits empty, and everything else — insurance, maintenance, service charges. |
| Tax band | Your highest Income Tax band (personal ownership only). It sets the Section 24 outcome and the interest-cover ratio the lender needs (125% or 145%). In Scotland the band maps to the Scottish rates (basic 20%, higher 42%, top 48%). |
| Purchase costs | The purchase tax for the nation is worked out automatically, with the additional-dwelling charge on by default. Legal fees and refurbishment add to the cash invested. |
Section 24 — why higher-rate landlords pay more
Since April 2020 an individual landlord cannot deduct mortgage interest from rental income. The tax is charged on the full profit and then cut by a credit worth 20% of the interest. A basic-rate taxpayer ends up where the old rules left them; a higher- or additional-rate taxpayer does not, because the profit is taxed at 40% or 45% while the interest is only relieved at 20% — which is why a mortgaged buy-to-let can show a profit on paper and still lose money each month.
Personal or a limited company
Switch the ownership toggle to compare the two. A company deducts mortgage interest in full and pays Corporation Tax on the profit — 19% up to £50,000, 25% above £250,000, with marginal relief in between — and Section 24 does not apply. The tool does not model the further tax on taking the profit out of the company as dividends, so treat the company figure as pre-extraction.
What it deliberately leaves out
It models a single property. It covers the purchase tax in all three nations (SDLT, LTT and LBTT) and, for Scotland, an approximate mapping of the Scottish Income Tax rates. For a company it stops at Corporation Tax and does not model dividend extraction, associated-company scaling of the profit limits, HMOs, holiday lets, or refurbish-refinance strategies. The figures are a year-one snapshot at today’s rate — a planning estimate, not tax advice.
Total return and capital growth
Rental cashflow is only part of the story. The projected-growth input applies to the whole property value, so with a mortgage it is geared against the cash you actually put in: at 2% a £250,000 property gains £5,000 a year, which on a £79,000 deposit-and-costs stake is worth far more than 2% on your money. The total return adds that capital growth to the post-tax cashflow over the cash invested. It is a first-year assumption, not a guarantee — set it to 0 to judge the deal on cashflow alone, or go negative to stress a downturn.
Sharing a calculation
The inputs are mirrored in the URL. /buy-to-let-calculator?price=200000&rent=1100&band=higher opens with a £200,000 purchase let at £1,100 a month for a higher-rate landlord already applied. Anything else in the link, such as campaign tags, is left untouched.
When you actually sell
For the Capital Gains Tax on a real disposal — with private-residence and letting relief, the annual exempt amount and your remaining basic-rate band all applied — use the main CGT calculator.
Open the Buy-to-Let Calculator →
- Stamp Duty Land Tax rates — England & NI (gov.uk)
- Land Transaction Tax rates — Wales (gov.wales)
- Land and Buildings Transaction Tax — Scotland (revenue.scot)
- Tax relief for residential landlords — Section 24 (gov.uk)
- Capital Gains Tax rates (gov.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 |
When a report is saved to your reports list, the statements it was built from are kept in your browser’s own storage beside it, so a statement you add later on the Edit page is read together with them. They stay on your device, are never sent anywhere the report itself is not, and are deleted with the report.
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.