How we calculate.
All the maths behind our calculators is described here in full. We believe users should be able to verify our numbers themselves, and spot any errors we've made.
Monthly payment formula
We use the standard amortising mortgage formula used by every major UK lender:
M = P × r × (1 + r)n / ((1 + r)n − 1)
Where M is the monthly payment, P is the principal (outstanding balance), r is the monthly interest rate (annual rate ÷ 12) and n is the number of monthly payments remaining. This gives a fixed monthly payment that amortises the loan over the full term.
Month-by-month simulation
Rather than using a simplified formula, we simulate every single month of the mortgage:
- At the start of each month, calculate interest = current balance × monthly rate.
- Subtract interest from the monthly payment to get the capital repayment.
- Add any overpayment (monthly or lump sum) to the capital repayment.
- Deduct the total capital repayment from the balance.
- Track the annual overpayment total against the 10% allowance.
- If the annual overpayment breaches the allowance, apply the ERC to the excess.
- Continue until the balance reaches zero.
Verification: the MSE comparison
MoneyHelper and MoneySavingExpert both publish worked examples of mortgage overpayments. Our calculator matches MSE's published example to the pound:
MSE's worked example: £200,000 mortgage, 25 years, 3% rate, £200/month overpayment
MSE statesSaves £21,622, cuts 5y 11m
Our calculator showsSaves £21,622, cuts 5y 11m
MatchExact
ERC calculation
When a user enters an Early Repayment Charge percentage, we apply it to the excess of annual overpayments over the allowance cap. If the cap is £20,000 and annual overpayments total £25,000, the £5,000 excess is charged at the ERC rate.
We track this year-by-year rather than as a single lump, so if overpayments exceed the cap every year, the ERC accumulates. This is a simplification, real lender ERCs often taper across the fix period, but users can model the average by entering a mid-range ERC value. Our full ERC guide explains the range of approaches lenders use.
Rate changes
If the user specifies a rate change (e.g. "my fix ends in 2 years, then I'll be on 4.8%"), the simulation updates the monthly rate from that month onward. The contractual payment is optionally recalculated at that point if the user has selected "lower the payment" behaviour, otherwise the payment stays the same and the remaining balance just clears faster.
Savings and investment comparisons
For the savings comparison, cash ISA, stocks & shares ISA, pension and LISA calculators, we:
- Simulate the same month-by-month growth of the alternative investment (compounding monthly at the chosen rate).
- For taxable accounts, apply the Personal Savings Allowance (£1,000 basic-rate, £500 higher-rate, £0 additional-rate) and tax the excess at the user's marginal rate.
- For pensions, apply tax relief on the way in (effectively grossing up net contributions), then apply a typical drawdown treatment at the end (25% tax-free + 75% taxed at basic rate).
- For LISAs, add a 25% government bonus on contributions up to £4,000 per year.
What we don't (yet) model
In the interest of honesty, here are the things we simplify:
- Tapering ERCs. We use a single ERC percentage rather than a schedule that decreases year by year. Users can average this out themselves.
- Future changes to tax rules. The PSA, ISA allowance, LISA bonus and pension tax relief are all subject to change. We use 2025/26 rules.
- Market volatility in ISA/pension comparisons. We use a flat annual return. Real investment returns vary significantly year by year.
- Inflation. The headline "interest saved" figure is in nominal pounds, not today's purchasing power. A future version may add an inflation adjustment.
- Overpayment placement within the month. We assume overpayments are applied at the end of the month for simplicity. Real lenders vary, some apply on receipt, some monthly in arrears.
Reporting errors
If you spot a calculation error, please let us know. We publish corrections openly and will credit the first reporter of any bug.