Choose a display mode that works best for you. Modes can be combined. Your preference is saved for your next visit.
Enter your salary — we'll calculate the exact net pay after all taxes and deductions.
Enter your salary above and press Calculate.
| Item | Annual | Monthly | Weekly | Daily |
|---|---|---|---|---|
| Gross salary | £40,000.00 | £3,333.33 | £769.23 | £153.85 |
| Income tax | £5,486.00 | £457.17 | £105.50 | £21.10 |
| National Insurance | £2,194.40 | £182.87 | £42.20 | £8.44 |
| Take-home pay | £32,319.60 | £2,693.30 | £621.53 | £124.31 |
Your — bonus is taxed at your — marginal rate in the month it's paid. National Insurance is also higher in your bonus month — an extra — compared to a regular month.
This is calculated using HMRC's per-period NI rules, not an annual average. Your actual bonus month deductions depend on your employer's payroll software and whether they use cumulative or Week 1 basis.
All figures are estimates calculated using HMRC's published 2026/27 income tax rates, National Insurance thresholds and official government guidance. They are for illustrative and educational purposes only — not a guarantee of your actual pay.
Payslp is not authorised or regulated by the Financial Conduct Authority (FCA). Nothing on this website constitutes financial, tax, investment or legal advice. Do not make significant financial decisions based solely on these figures — always consult a qualified adviser. Payslp may earn a commission from partner referrals shown in the information panel — this never affects our calculations or the accuracy of our tax figures. The information displayed in that panel is tailored by income band to show relevant topics, not by commercial relationships with any provider.
Your actual take-home may vary due to a non-standard tax code, employer-specific pension arrangements, other payroll deductions, mid-year tax code changes, or personal tax circumstances not captured here. If in doubt, check with HMRC at gov.uk or speak to a payroll professional.
The salary and figures you enter are processed entirely within your browser. They are never sent to or stored on our servers. We never see them, never store them and never share them.
Side-by-side net pay comparison for any two salaries.
| Item | Salary A | Salary B | Difference |
|---|
Map your take-home pay to your real monthly outgoings.
Information only — not financial advice. Payslp is not FCA authorised. About Payslp
Specialist calculators and planning tools — every rate verified against gov.uk primary sources for 2026/27.
Illustrative retirement pot projections with annual allowance checker, tapered allowance calculator and salary sacrifice NI saving. Not financial advice — always consult a regulated adviser.
Important: Projections are illustrative only and are not a guarantee of future returns. The value of pensions can fall as well as rise. Actual returns depend on investment performance, charges and economic conditions. Tax rules may change. Annual allowance and tapered annual allowance figures are based on current HMRC rules for 2026/27. This calculator does not constitute financial advice. Always consult a regulated financial adviser before making pension decisions. MoneyHelper pension guidance →
Monthly repayments, total interest, rate comparisons and overpayment savings. Download full amortisation schedule as .xlsx. Your home may be repossessed if you do not keep up repayments on a mortgage.
⚠️ Your home may be repossessed if you do not keep up repayments on a mortgage. All figures are illustrative only based on the inputs you provide. Actual repayments will depend on the specific product, lender and your individual circumstances. This calculator does not constitute mortgage advice. Any firm providing mortgage advice must be authorised by the FCA — verify at register.fca.org.uk. MoneyHelper mortgage guidance →
For sole traders, GP partners, locums, landlords and second-income earners. Estimates use HMRC 2026/27 rates: income tax, Class 4 NI, student loan, NHS pension tiered contributions, Section 24 landlord rules and Payments on Account. Verified May 2026 against gov.uk, HMRC technical guidance and NHS Business Services Authority.
Free, transparent and built entirely around you — not advertisers.
Payslp gives every UK employee an instant, accurate breakdown of their take-home pay — completely free, with no sign-up and no ads influencing our calculations.
Most people have no real idea what they take home until payday. The UK tax system is deliberately complicated — tax codes, National Insurance thresholds, student loan repayment plans, pension schemes, benefits in kind. Even a small payslip involves a dozen separate calculations.
We built Payslp because we believe everyone deserves to understand their own money. Whether you're evaluating a job offer, negotiating a pay rise, or simply trying to understand why your take-home changed this month — you should be able to get a clear, accurate answer in seconds, for free.
Our calculations are built directly from HMRC's published tax rates, thresholds and guidance. We update every April when the new tax year begins. We don't estimate — we calculate.
Every figure we show you has a clear source. We publish our methodology openly — see "How We Work It Out" for the full detail on every calculation we perform.
The salary you enter never leaves your browser. It is processed entirely in JavaScript on your device and never sent to our servers. We never see it, never store it, never sell it.
Payslp is and will always be free to use. We display signposting links to third-party financial services providers and may earn a referral fee if you apply via those links. These arrangements never influence our calculations, our tax figures or the information we publish. All partner links are clearly identified and are for informational purposes only — not personal financial advice.
Not accountants. Not tax professionals. Real employees trying to understand their payslip, plan their finances and make confident decisions about their careers and money.
The Payslp salary calculator covers every major deduction that appears on a UK payslip, including income tax under all HMRC bands and Scottish rates, National Insurance contributions, all five student loan repayment plans, workplace pension contributions under relief at source and salary sacrifice arrangements, SIPP contributions with automatic tax relief, benefits in kind including company car, private medical insurance and other employer benefits, bonus and commission income, overtime, car allowance, childcare vouchers, marriage allowance and blind person's allowance.
Beyond the salary calculator, Payslp offers a salary comparison tool, a monthly budget planner, a Finance Hub and a growing library of plain-English guides to UK personal finance.
We will always tell you what we don't know. Our results page always shows a clear disclaimer that figures are estimates based on publicly available tax rates. Everyone's tax situation is unique and we always encourage users to verify with HMRC or a qualified adviser before making significant financial decisions.
We will always be free. No paywalls, no premium tiers, no credit card required.
We will always update on time. Every April when HMRC publishes new rates, we update Payslp before the new tax year begins.
Payslp was founded by a Senior Executive at a major UK listed company holding an MBA with Distinction — someone who has managed workforce costs and salary structures at scale, and grew frustrated with inaccurate calculators giving employees the wrong figures.
That professional background is built into every aspect of how Payslp works — from the accuracy of the calculation engine to the transparency of the methodology and the clarity of how results are presented. This is not a side project built by a developer who has never seen a payslip. It was built by someone who has managed payroll budgets, employment costs and salary structures at a senior level in a major UK organisation.
Beyond the corporate world, Payslp's founder has served as a Board Member for Business Improvement Districts — NGOs operating at the intersection of public and private sector finance — and currently acts as a Board Adviser to two Series A funded technology companies operating in SaaS and sustainability. That breadth of experience across commercial, non-profit and venture-backed environments informs the way Payslp is designed: built for real people making real financial decisions, not for accountants.
We genuinely welcome feedback. If you spot an error in our calculations, have a suggestion for a new feature, or just want to say hello — email us at contact@payslp.com.
Open-source calculation engine — every formula, every threshold, every reference. Read it, test it, challenge it.
Every number Payslp produces comes from the JavaScript running in your browser right now. This page publishes that code in full — chapter by chapter, with Harvard-referenced sources for every constant. Run seRunTests() in your browser console to execute the verification suite live. If you find an error, email contact@payslp.com — we investigate every report within 2 working days.
Income tax is calculated progressively — each band applies only to the slice of income falling within it. The personal allowance taper between £100,000 and £125,140 (£1 reduction per £2 of income over £100,000) creates an effective 60% marginal rate in this range: 40p income tax plus 40p from accelerated withdrawal of the tax-free allowance, which is itself taxed at 40%.
// ── INCOME TAX: England, Wales & Northern Ireland 2026/27 ───────────────
// HMRC (2026) Income Tax rates and Personal Allowances. gov.uk/income-tax-rates
// House of Commons Library (2026) Direct taxes: Rates and allowances. CBP-10618.
// HM Treasury (2024) Autumn Budget 2024 — PA frozen at £12,570 until April 2031.
function ukTaxWithPA(gross, pa = 12570) {
// PA taper: £1 reduction per £2 over £100,000 (effective 60% marginal rate)
if (gross > 100000) pa = Math.max(0, pa - Math.floor((gross - 100000) / 2));
const taxable = Math.max(0, gross - pa);
let tax = 0;
// Basic rate 20%: applies to the first £37,700 of TAXABLE income (ITA 2007 s.10)
const b1 = Math.min(taxable, 37700); if (b1 > 0) tax += b1 * 0.20;
// Higher rate 40%: next £87,440 of taxable income (i.e. up to the additional rate threshold)
const b2 = Math.min(Math.max(0, taxable - 37700), 87440); if (b2 > 0) tax += b2 * 0.40;
// Additional rate 45%: taxable income above £125,140
const b3 = Math.max(0, taxable - 125140); if (b3 > 0) tax += b3 * 0.45;
return tax;
}
// ── Verification (HMRC PAYE tables + House of Commons Library CBP-10618) ──
// £12,570 → £0 (at PA, no tax)
// £20,000 → £1,486 (£7,430 × 20%)
// £40,000 → £5,486 (£27,430 × 20%)
// £50,270 → £7,540 (£37,700 × 20%)
// £60,000 → £11,432 (£7,540 + £9,730×40%)
// £100,000→ £27,432 (full basic + higher bands)
// £125,140→ £42,516 (PA fully withdrawn, basic band stays at £37,700 taxable)
// £150,000→ £53,703 (additional rate on £24,860 above £125,140)
[
[12570,0],[20000,1486],[40000,5486],[50270,7540],
[60000,11432],[100000,27432],[125140,42516],[150000,53703]
].forEach(([g,exp]) => console.assert(Math.abs(ukTaxWithPA(g)-exp)<2,`IT fail £${g}`));Scottish income tax rates and bands are set independently by the Scottish Parliament under the Scotland Act 2016. Audit correction 25 May 2026: the previous code contained 2024/25 band thresholds. The confirmed 2026/27 figures — enacted via Scottish Rate Resolution on 19 February 2026 (93 votes to 29) — show the Basic and Intermediate thresholds increased by 7.4%, while Higher, Advanced and Top thresholds are frozen. The previous code also incorrectly used the gross income Advanced threshold (£125,140) as a taxable income figure, understating the Top rate band by £12,570. All three errors are corrected below.
// ── SCOTTISH INCOME TAX 2026/27 ──────────────────────────────────────────
// Scottish Government (2026) Scottish Budget 2026-27. Edinburgh: Scottish Government.
// Revenue Scotland (2026) Scottish Income Tax. revenue.scot [Accessed May 2026]
// Scotland Act 2016, c.11 — Sections 13-16 devolve income tax rate-setting powers.
function scotTax(gross, pa = 12570) {
// 'to' values = cumulative TAXABLE income thresholds (gross − £12,570 PA).
// Scottish Parliament confirmed these via Scottish Rate Resolution, 19 Feb 2026.
// Basic and Intermediate thresholds rose 7.4% from 2025/26.
// Higher, Advanced and Top thresholds frozen.
const bands = [
{ to: 3967, r: 0.19 }, // Starter 19%: gross £12,571–£16,537
{ to: 16956, r: 0.20 }, // Basic 20%: gross £16,538–£29,526
{ to: 31092, r: 0.21 }, // Intermediate 21%: gross £29,527–£43,662
{ to: 62430, r: 0.42 }, // Higher 42%: gross £43,663–£75,000
{ to: 112570, r: 0.45 }, // Advanced 45%: gross £75,001–£125,140
{ to: Infinity,r: 0.48 }, // Top 48%: above £125,140
];
const taxable = Math.max(0, gross - pa);
let tax = 0, prev = 0;
for (const band of bands) {
if (taxable <= prev) break;
tax += (Math.min(taxable, band.to) - prev) * band.r;
prev = band.to;
}
return tax;
}
// ── Audit correction — 25 May 2026 ───────────────────────────────────────
// PREVIOUS (wrong) bands used 2024/25 figures:
// Starter to: 2306 (gross £14,876) — understated by £1,661 gross
// Basic to: 13991 (gross £26,561) — understated by £2,965 gross
// Advanced to: 125140 — was gross figure used as taxable; overstated band by £12,570
// CORRECTED to confirmed 2026/27 Scottish Rate Resolution figures.
// Verification — Scottish Government Budget 2026-27 (gov.scot, Jan 2026):
// £20,000 gross: Starter 19% on £3,967 + Basic 20% on £3,044 = £1,362.13
// £40,000 gross: above adds Intermediate 21% on £10,474 = £3,561.67 total
// £50,000 gross: above adds Higher 42% on £6,338 = £4,823.97 + earlier bands
console.log('Scotland £20,000:', scotTax(20000).toFixed(2)); // expect ~£1,362
console.log('Scotland £40,000:', scotTax(40000).toFixed(2)); // expect ~£5,638
console.log('Scotland £50,000:', scotTax(50000).toFixed(2)); // expect ~£9,840Employee Class 1 NI is calculated on gross earnings (after salary sacrifice) per pay period. Unlike income tax it is not cumulative — each period is calculated independently. The main rate was reduced from 12% to 10% in Autumn Statement 2023, then to 8% in Spring Budget 2024, and remains at 8% for 2026/27. The thresholds are aligned with the personal allowance at £12,570, frozen until April 2028.
// ── CLASS 1 EMPLOYEE NI 2026/27 ──────────────────────────────────────────
// HMRC (2026) National Insurance rates and categories. gov.uk/national-insurance-rates-letters
// HM Treasury (2024) Spring Budget 2024 — NI main rate reduced from 10% to 8%.
// Social Security Contributions and Benefits Act 1992 — primary NIC legislation.
const NI_PT = 12570; // Primary Threshold — aligned with PA
const NI_UEL = 50270; // Upper Earnings Limit
const NI_MAIN = 0.08; // 8% between PT and UEL
const NI_ADD = 0.02; // 2% above UEL
function ukNI(gross) {
const main = Math.max(0, Math.min(gross, NI_UEL) - NI_PT) * NI_MAIN;
const upper = Math.max(0, gross - NI_UEL) * NI_ADD;
return main + upper;
}
// ── Verification (HMRC PAYE tables + House of Commons Library CBP-10618) ──
// £12,570 → £0 (at PT, no NI)
// £20,000 → £594.40 ((20000-12570)×8%)
// £40,000 → £2,194.40 ((40000-12570)×8%)
// £50,270 → £3,014.40 (full main band)
// £60,000 → £3,208.40 (3014.40 + 9730×2%)
[
[12570,0],[20000,594.4],[40000,2194.4],[50270,3014.4],[60000,3208.4]
].forEach(([g,exp]) => console.assert(Math.abs(ukNI(g)-exp)<1,`NI fail £${g}`));Student loan repayments are deducted after tax and NI and have no effect on taxable income. They are calculated as a percentage of income above each plan's annual threshold. Multiple plans can run simultaneously — a Plan 2 undergraduate loan alongside a Postgraduate loan produces deductions of up to 15% of income above the lower threshold. Note: thresholds in this codebase were corrected on 24 May 2026 after an audit identified the previous values as 2024/25 figures.
// ── STUDENT LOAN REPAYMENTS 2026/27 ──────────────────────────────────────
// HMRC / Student Loans Company (2026) Repaying your student loan.
// gov.uk/repaying-your-student-loan [Accessed May 2026]
// House of Commons Library (2026) Student loans: Interest rates and repayment
// thresholds. CBP-10654. London: HoCL.
// Education (Student Loans)(Repayment) Regulations 2009, SI 470 (as amended 2026).
//
// ⚠ AUDIT CORRECTION 24 May 2026:
// Previous thresholds were 2024/25 figures (Plan1:£24,990 Plan2:£27,295 Plan4:£31,395).
// Corrected to confirmed 2026/27 thresholds below.
const SL_PLANS = {
plan1: { threshold: 26900, rate: 0.09 }, // England/Wales pre-2012
plan2: { threshold: 29385, rate: 0.09 }, // England/Wales 2012–2023
plan4: { threshold: 33795, rate: 0.09 }, // Scotland (all years)
plan5: { threshold: 25000, rate: 0.09 }, // England/Wales post-Aug 2023
postgrad: { threshold: 21000, rate: 0.06 }, // Master's / PhD — always 6%
};
function ukSL(gross, plan = 'none', plan2 = 'none') {
let total = 0;
if (plan !== 'none' && SL_PLANS[plan])
total += Math.max(0, gross - SL_PLANS[plan].threshold) * SL_PLANS[plan].rate;
if (plan2 !== 'none' && SL_PLANS[plan2])
total += Math.max(0, gross - SL_PLANS[plan2].threshold) * SL_PLANS[plan2].rate;
return total;
}
// ── Verification (Student Loans Company repayment calculator) ─────────────
// Plan 2, £35,000: (35000-29385)×9% = £505.35
// Plan 1, £35,000: (35000-26900)×9% = £729.00
// Plan 2 + Postgrad, £35,000: £505.35 + (35000-21000)×6% = £1,345.35
console.assert(Math.abs(ukSL(35000,'plan2')-505.35)<1,'SL P2');
console.assert(Math.abs(ukSL(35000,'plan1')-729)<1,'SL P1');
console.assert(Math.abs(ukSL(35000,'plan2','postgrad')-1345.35)<1,'SL P2+PG');The three pension contribution methods produce different take-home outcomes due to how and when deductions are applied. Under salary sacrifice, contributions reduce both taxable income and NI-liable earnings before either is calculated. Under relief at source and net pay arrangements, contributions are deducted from post-tax income and relief is recovered differently. For higher-rate taxpayers, SIPP contributions attract relief at the marginal rate under current HMRC rules — the net cost of a contribution depends on your individual tax position and may change if tax rates change. This section documents the calculation logic only. It is not a recommendation to use any particular pension arrangement. Always consult a regulated financial adviser or pension provider to understand which arrangement is appropriate for your individual circumstances.
// ── PENSION CONTRIBUTIONS 2026/27 ────────────────────────────────────────
// HMRC (2026) Tax on your private pension contributions.
// gov.uk/tax-on-your-private-pension [Accessed May 2026]
// The Pensions Regulator (2026) Automatic enrolment: detailed guidance.
// thepensionsregulator.gov.uk [Accessed May 2026]
// Finance Act 2004, c.12, Part 4 — pension tax relief legislation.
// Auto-enrolment minimums 2026/27: employee 5% + employer 3% = 8% of qualifying earnings.
function calcPension(gross, pct, scheme = 'relief') {
const contribution = gross * (pct / 100);
if (scheme === 'sacrifice') {
// Deducted before tax AND NI — saves both income tax and employee NI
return { grossDeduction: contribution, niDeduction: contribution, deduction: contribution };
}
if (scheme === 'relief') {
// Deducted from post-tax pay; HMRC adds 20% basic-rate relief into pension pot
// Higher-rate taxpayers claim additional relief via Self Assessment
return { grossDeduction: 0, niDeduction: 0, deduction: contribution };
}
if (scheme === 'netpay') {
// Deducted before income tax but AFTER NI — common in public sector
return { grossDeduction: contribution, niDeduction: 0, deduction: contribution };
}
}
// SIPP relief — added back to take-home (flows into pension, reducing real cost)
function sippRelief(sippAmount, taxableIncome, pa = 12570) {
// Marginal rate thresholds are TAXABLE income limits (per ITA 2007 s.10):
// 45% kicks in above £125,140 taxable; 40% above £37,700; otherwise 20%.
const marginalRate = taxableIncome > 125140 ? 0.45
: taxableIncome > 37700 ? 0.40 : 0.20;
return sippAmount * marginalRate;
}
// Worked comparison — £40,000 salary, £2,000 pension contribution:
// Salary sacrifice: taxable = £38,000, saves £400 tax + £160 NI = £560/yr extra
// Relief at source: HMRC adds £500 (20%) into pot; net cost to employee: £1,500
// Net pay: saves £400 tax but no NI saving; net cost: £1,600All salary inputs (annual, monthly, weekly, daily, hourly) are converted to an annual equivalent before the tax engine runs. A bug identified by a user on 24 May 2026 showed the day rate multiplier was hardcoded to 5 days per week — meaning a £500/day contractor working 4 days per week was shown an annual figure of £130,000 instead of £104,000 (a 25% overstatement). A configurable days/week field was added and the fix deployed the same day.
// ── SALARY PERIOD CONVERSION ─────────────────────────────────────────────
// HMRC (2026) PAYE Manual — calculating weekly pay. gov.uk/hmrc-internal-manuals/paye-manual
// HMRC (2026) Employment Income Manual — day rate workers.
//
// ⚠ BUG FIX 24 May 2026:
// PREVIOUS (incorrect): if(period==='daily') annual = raw * 5 * 52;
// → 5 days hardcoded; contractors on 4-day weeks got wrong annual figure
// CORRECTED: days/week is now read from opt_days input field (default 5)
function toAnnual(raw, period, hrsPerWeek = 37.5, daysPerWeek = 5) {
switch (period) {
case 'annual': return raw;
case 'monthly': return raw * 12;
case 'weekly': return raw * 52;
case 'daily': return raw * daysPerWeek * 52; // ← now configurable
case 'hourly': return raw * hrsPerWeek * 52;
default: return raw;
}
}
// ── Verification ──────────────────────────────────────────────────────────
console.assert(toAnnual(500,'daily',37.5,5) === 130000,'5d ok');
console.assert(toAnnual(500,'daily',37.5,4) === 104000,'4d fix'); // was broken
console.assert(toAnnual(500,'daily',37.5,3) === 78000,'3d fix');
console.assert(toAnnual(3333,'monthly') === 39996,'monthly ok');Class 4 NI is calculated on taxable profit at 6% between the Lower Profits Limit (£12,570) and Upper Profits Limit (£50,270), and 2% above — 2 percentage points lower than the employed Class 1 rate of 8%. Mandatory Class 2 NI was abolished from April 2024. Above the Small Profits Threshold (£7,105 for 2026/27), a qualifying State Pension year is credited automatically at no cost. Below this, voluntary Class 2 of £3.65/week (£189.80/year) protects State Pension entitlement.
// ── CLASS 4 NI: Self-Employed 2026/27 ────────────────────────────────────
// HMRC (2026) National Insurance rates and categories. gov.uk/national-insurance-rates-letters
// LITRG (2026) NI for the self-employed. litrg.org.uk [Accessed May 2026]
// National Insurance Contributions Act 2024, c.10 — abolition of mandatory Class 2.
// HM Treasury (2024) Spring Budget 2024 — Class 4 reduced from 9% to 6%.
// Small Profits Threshold 2026/27: £7,105 (voluntary Class 2: £3.65/wk = £189.80/yr)
function seClass4NI(profit) {
// Calculated on taxable profit (after allowable expenses, before pension)
const main = Math.max(0, Math.min(profit, 50270) - 12570) * 0.06;
const upper = Math.max(0, profit - 50270) * 0.02;
return main + upper;
}
// ── Verification ──────────────────────────────────────────────────────────
// £12,570 → £0 (at LPL, no Class 4)
// £30,000 → £1,045.80 ((30000-12570)×6%)
// £40,000 → £1,645.80 ((40000-12570)×6%)
// £60,000 → £2,454.20 (2260.20 + (60000-50270)×2%)
[
[12570,0],[30000,1045.8],[40000,1645.8],[60000,2454.2]
].forEach(([p,exp]) => console.assert(Math.abs(seClass4NI(p)-exp)<1,`C4 fail £${p}`));The NHS Pension Scheme applies each tier rate to the entire pensionable pay — not marginally. This creates cliff edges: at the Tier 2/3 boundary (£28,854/£28,855), pension contributions jump by £519 for £1 of additional income. Thresholds are indexed by 3.8% CPI from 1 April 2026. Employer contribution: 23.7%. GP partners submit estimated pensionable profit to PCSE by 28 February each year.
// ── NHS PENSION TIERS 2026/27 ─────────────────────────────────────────────
// NHSBSA (2026) NHS Pension Scheme employer contribution rates 2026/27. nhsbsa.nhs.uk
// NHSBSA (2025) Estimate of GP/non-GP provider NHS Pensionable Profits 2026/27 (V1).
// BMA (2026) NHS pension contribution rates. bma.org.uk [Accessed May 2026]
// Thresholds indexed by 3.8% CPI (September 2025) from 1 April 2026.
// ⚠ Rate applies to ENTIRE pay — NOT marginal. Cliff edges at each boundary.
const NHS_PENSION_TIERS = [
{ ceiling: 13259, rate: 0.052 }, // Tier 1: 5.2%
{ ceiling: 28854, rate: 0.065 }, // Tier 2: 6.5%
{ ceiling: 35155, rate: 0.083 }, // Tier 3: 8.3% ← cliff: £519 jump at £28,855
{ ceiling: 52778, rate: 0.098 }, // Tier 4: 9.8%
{ ceiling: 67668, rate: 0.107 }, // Tier 5: 10.7%
{ ceiling: Infinity, rate: 0.125 }, // Tier 6: 12.5%
];
const NHS_EMPLOYER_RATE = 0.237; // 23.7% employer contribution 2026/27
function seNHSPension(pay) {
const tier = NHS_PENSION_TIERS.find(t => pay <= t.ceiling);
return { contribution: pay * tier.rate, rate: tier.rate,
employer: pay * NHS_EMPLOYER_RATE };
}
// ── Verification ──────────────────────────────────────────────────────────
// Tier 1: £13,259 × 5.2% = £689.47 Tier 4: £40,000 × 9.8% = £3,920
// Tier 6: £80,000 × 12.5% = £10,000
// Cliff: £28,854 pension = £1,875.51 ; £28,855 pension = £2,394.97 (+£519.46)
[
[13259, 13259*0.052],[40000, 40000*0.098],[80000, 80000*0.125]
].forEach(([p,exp]) => console.assert(Math.abs(seNHSPension(p).contribution-exp)<1,`NHS fail £${p}`));Section 24 replaced mortgage interest deductibility with a 20% basic-rate tax credit, fully in force since April 2020. Landlords calculate tax on gross rental profit (rent minus other allowable expenses — mortgage interest is not deducted here), then claim 20% of finance costs as a credit off the tax bill. For higher-rate landlords this means 20p relief per £1 of interest instead of 40p: a permanent annual cost of 20% of total mortgage interest. The restriction also inflates declared profit, pushing some basic-rate landlords into the higher-rate band. Does not apply to limited companies.
// ── SECTION 24 LANDLORD TAX 2026/27 ──────────────────────────────────────
// Finance (No.2) Act 2015, c.33, Section 24. London: HMSO.
// HMRC (2026) Restricting finance cost relief for individual landlords.
// gov.uk/guidance/restricting-finance-cost-relief-for-individual-landlords
// HMRC (2026) Work out your rental income. gov.uk/rental-income
// Fully in force from 6 April 2020. Individual landlords only.
function seLandlordTax(rent, mortgage, otherExpenses, otherIncome, isScot = false) {
// Gross rental profit — mortgage NOT deducted (Section 24 change)
const grossRentalProfit = Math.max(0, rent - otherExpenses);
const totalIncome = otherIncome + grossRentalProfit;
// Tax on total income (mortgage not deducted from taxable income)
const grossTax = isScot ? scotTax(totalIncome) : ukTaxWithPA(totalIncome, 12570);
// 20% mortgage interest credit applied after tax calculation
const mortgageCredit = mortgage * 0.20;
const finalTax = Math.max(0, grossTax - mortgageCredit);
// Section 24 extra cost vs pre-2020 rules
const oldProfit = Math.max(0, rent - otherExpenses - mortgage);
const oldTax = isScot ? scotTax(otherIncome+oldProfit) : ukTaxWithPA(otherIncome+oldProfit,12570);
return { finalTax, mortgageCredit, grossRentalProfit,
section24ExtraCost: Math.max(0, finalTax - oldTax) };
}
// ── Verification ──────────────────────────────────────────────────────────
// Higher-rate landlord: £10k interest, 40% taxpayer → extra cost ≈ £2,000
// (20% marginal rate difference × £10,000 interest = £2,000)
const testLL = seLandlordTax(25000, 10000, 3000, 40000, false);
console.assert(Math.abs(testLL.section24ExtraCost - 2000) < 150, 'S24 extra cost');Payments on account are advance payments toward the following year's tax bill. Required when the Self Assessment liability (Income Tax + Class 4 NI only — not CGT or student loans) exceeds £1,000 and less than 80% was collected via PAYE. Each payment is 50% of the prior year's liability. In year two of self-employment this produces the first-January shock: the full year's bill plus 150% falls due on a single date.
// ── PAYMENTS ON ACCOUNT ───────────────────────────────────────────────────
// HMRC (2026) Self Assessment: Payments on account.
// gov.uk/understand-self-assessment-bill/payments-on-account
// LITRG (2026) Tax bill higher than expected? litrg.org.uk [Accessed May 2026]
// Finance Act 1994, c.9, Part IV — original legislative basis.
// Required if: (IT + Class4 NI) > £1,000 AND < 80% collected via PAYE.
// Excludes: CGT, student loans, Class 2 NI.
function sePaymentsOnAccount(incomeTax, class4NI) {
const saLiability = incomeTax + class4NI;
if (saLiability < 1000) return null; // below threshold — no POA
const each = saLiability / 2;
return {
saLiability,
each,
jan: saLiability + each, // full bill + 1st POA — the January shock figure
jul: each // 2nd POA only
};
}
// ── Verification (GOV.UK worked example) ─────────────────────────────────
// £5,000 SA bill → Jan: £7,500 (£5,000 + £2,500 POA); Jul: £2,500
const p = sePaymentsOnAccount(4000, 1000);
console.assert(Math.abs(p.jan - 7500) < 1, 'POA Jan');
console.assert(Math.abs(p.jul - 2500) < 1, 'POA Jul');
console.assert(sePaymentsOnAccount(600, 300) === null, 'POA below threshold');HMRC's approved Mileage Allowance Payment rates allow self-employed individuals to deduct business travel costs. The rates — 45p/mile for the first 10,000 business miles, 25p/mile thereafter for cars — have been unchanged since 2011. For locum clinicians travelling between clinical sites these represent a significant allowable deduction. A locum driving 15,000 business miles deducts £5,250 — worth £2,100 in tax saved at the basic rate.
// ── HMRC MILEAGE ALLOWANCE PAYMENT RATES ─────────────────────────────────
// HMRC (2026) Approved mileage rates.
// gov.uk/government/publications/rates-and-allowances-travel-mileage-and-fuel-allowances
// HMRC Employment Income Manual EIM31200 — MAPs. Rates unchanged since 2011.
// Car/van: 45p/mile (first 10,000); 25p/mile (above 10,000).
function seMileageAllowance(miles) {
if (miles <= 10000) return miles * 0.45;
return (10000 * 0.45) + ((miles - 10000) * 0.25);
}
// ── Verification ──────────────────────────────────────────────────────────
console.assert(seMileageAllowance(5000) === 2250, 'MAP 5k');
console.assert(seMileageAllowance(10000) === 4500, 'MAP 10k');
console.assert(seMileageAllowance(12000) === 5000, 'MAP 12k'); // 4500+(2000×0.25)
console.assert(seMileageAllowance(20000) === 7000, 'MAP 20k'); // 4500+(10000×0.25)
// Common allowable locum expenses (HMRC Employment Income Manual EIM31800+):
// ✅ Business mileage at MAP rates · ✅ GMC/NMC/GDC/GPhC registration fees
// ✅ Medical indemnity (MDU/MPS/MDDUS) · ✅ CPD and professional journals
// ✅ Accountancy fees for self-assessment
// ❌ Commuting to a permanent workplace · ❌ Personal meals (unless overnight)On 25 May 2026 an audit of the Scottish income tax function identified three errors in the band thresholds. The previous code contained 2024/25 figures and a structural error in the Advanced rate ceiling. All three are corrected below, with the old values preserved as comments so any reviewer can verify what changed and why.
Error 1 — Starter band ceiling: coded as taxable £2,306 (gross £14,876). The confirmed 2026/27 figure following the 7.4% threshold uplift is taxable £3,967 (gross £16,537). Scottish earners between £14,876 and £16,537 gross were being charged 20% (Basic) instead of the correct 19% (Starter).
Error 2 — Basic band ceiling: coded as taxable £13,991 (gross £26,561). Correct figure is taxable £16,956 (gross £29,526). Earners between £26,561 and £29,526 gross were being charged 21% (Intermediate) instead of 20% (Basic).
Error 3 — Advanced band ceiling: coded as £125,140 treated as a taxable income figure. This was the gross income threshold incorrectly applied as a taxable figure, meaning the Advanced rate continued to £137,710 gross instead of the correct £125,140 gross (£112,570 taxable). Scottish higher earners above £125,140 — including many GP partners and hospital consultants — were being shown 45% instead of the correct 48% Top rate.
// ── SCOTTISH INCOME TAX 2026/27 — CORRECTED 25 May 2026 ──────────────────
// Source: Scottish Government (2026) Scottish Budget 2026-27, 13 January 2026.
// gov.scot/publications/scottish-budget-2026-27/
// Source: Scottish Parliament (2026) Scottish Rate Resolution, 19 February 2026.
// Voted 93 to 29. Legally binding from 6 April 2026.
// Source: ICAEW Tax Faculty (2026) Scottish Budget makes changes to income tax
// thresholds. icaew.com, 14 January 2026.
// Source: Chartered Institute of Taxation (2026) MSPs agree income tax rates
// for 2026/27. tax.org.uk, 19 February 2026.
//
// Basic and Intermediate thresholds rose 7.4% from 2025/26.
// Higher, Advanced and Top thresholds frozen.
// Band 'to' values = TAXABLE income (gross − £12,570 PA).
// ── PREVIOUS (WRONG) CODE — 2024/25 thresholds ───────────────────────────
// const bands = [
// { to: 2306, r: 0.19 }, // Starter — understated by £1,661 gross
// { to: 13991, r: 0.20 }, // Basic — understated by £2,965 gross
// { to: 31092, r: 0.21 }, // Intermediate — correct ✓
// { to: 62430, r: 0.42 }, // Higher — correct ✓
// { to: 125140, r: 0.45 }, // Advanced — gross figure used as taxable; off by £12,570
// { to: Infinity,r: 0.48 },// Top — correct ✓
// ];
// ── CORRECTED CODE — confirmed 2026/27 Scottish Rate Resolution ───────────
function scotTax(gross, pa = 12570) {
const taxable = Math.max(0, gross - pa);
const bands = [
{ to: 3967, r: 0.19 }, // Starter 19%: gross £12,571–£16,537
{ to: 16956, r: 0.20 }, // Basic 20%: gross £16,538–£29,526
{ to: 31092, r: 0.21 }, // Intermediate 21%: gross £29,527–£43,662
{ to: 62430, r: 0.42 }, // Higher 42%: gross £43,663–£75,000
{ to: 112570, r: 0.45 }, // Advanced 45%: gross £75,001–£125,140
{ to: Infinity,r: 0.48 }, // Top 48%: above £125,140 gross
];
let tax = 0, prev = 0;
for (const b of bands) {
const slice = Math.min(taxable, b.to) - prev;
if (slice <= 0) break;
tax += slice * b.r;
prev = b.to;
}
return tax;
}
// ── Verification ──────────────────────────────────────────────────────────
// Cross-referenced against Scottish Government published band tables and
// ICAEW Tax Faculty 2026/27 Scotland summary.
// £20,000: Starter on £3,967 + Basic on £3,044 = £1,362.13
// £30,000: + Intermediate on £474 = £1,696.67
// £43,662: full Intermediate band exhausted
// £80,000: Advanced rate at 45% applies from £75,001
// £130,000: Top rate at 48% applies from £125,141 — PREVIOUSLY WRONG
[
[16537, 'Top of Starter band'],
[29526, 'Top of Basic band'],
[43662, 'Top of Intermediate band'],
[75000, 'Top of Higher band'],
[125140,'Top of Advanced band — was wrong in previous version'],
[130000,'Into Top rate at 48%'],
].forEach(([g,note]) => console.log(`Scotland £${g.toLocaleString()} (${note}): £${scotTax(g).toFixed(2)} tax`));Income tax is partially devolved in the United Kingdom. The Scottish Parliament has full power to set rates and bands for non-savings, non-dividend income of Scottish taxpayers. The Welsh Parliament (Senedd) has power to vary Welsh rates but has exercised this by matching UK rates exactly for 2026/27. Northern Ireland has no income tax devolution. National Insurance is not devolved and applies at identical UK rates in all four nations.
Audit corrections applied 25 May 2026 — two bugs fixed:
Bug 1 — The personal allowance taper above £100,000 was missing from the production scotTax function. The PA is set by UK Parliament (not devolved) and applies equally to Scottish taxpayers under Scotland Act 1998, s.80B. This meant Scottish earners between £100,000 and £125,140 were having their tax undercalculated.
Bug 2 — The same taper was missing from the production ukTax function, only present in the documented ukTaxWithPA version. This affected English, Welsh and Northern Irish earners in the same band.
The Scottish taper zone is more expensive than England's. In England, the effective marginal rate between £100,000 and £125,140 is 60% (40% Higher rate tax + 40% × 50% PA taper = 20% additional). In Scotland it is 67.5% (45% Advanced rate + 45% × 50% PA taper = 22.5% additional). This is a genuinely important distinction for Scottish high earners and is not widely understood.
// ── REGIONAL TAX FRAMEWORK 2026/27 ───────────────────────────────────────
//
// LEGISLATIVE BASIS:
// England/Wales/NI income tax: Finance Act 2023, c.1 + annual Finance Acts
// Scotland income tax: Scotland Act 1998 (as amended by Scotland Acts 2012 & 2016)
// Scottish Rate Resolution, 19 Feb 2026 (93 votes to 29)
// Welsh income tax: Wales Act 2014; Wales Act 2017; WRIT set annually by Senedd
// National Insurance (all): Social Security Contributions and Benefits Act 1992
// (NI not devolved — applies at UK rates in all regions)
// Personal Allowance (all): Scotland Act 1998, s.80B — PA set by UK Parliament,
// NOT devolved to Scotland or Wales
//
// REGION MAPPING:
// England → ukTax() (UK standard rates and bands)
// Scotland → scotTax() (Scottish rates and bands — 6 tiers)
// Wales → ukTax() (WRIT matches UK rates exactly for 2026/27)
// N. Ireland → ukTax() (no income tax devolution)
// All regions → ukNI() (NI not devolved)
// ── ENGLAND / WALES / NORTHERN IRELAND ───────────────────────────────────
// Source: HMRC (2026) Income Tax rates and Personal Allowances.
// gov.uk/income-tax-rates [Accessed May 2026]
// Wales: Welsh Government (2026) Welsh Rates of Income Tax 2026/27.
// 10p UK rate reduction + 10p Welsh rate = same effective rate as England.
// gov.wales [Accessed May 2026]
// N. Ireland: No income tax devolution — uses UK rates.
// Northern Ireland Act 1998 (tax not included in devolved competences)
//
// ⚠ BUG FIX 26 May 2026: Band thresholds were applied as fixed GROSS-income values
// (£50,270 and £125,140), independent of PA. This understates tax in the £100k–£125,140
// taper zone by up to £2,514 because the basic-rate BAND is fixed at £37,700 of TAXABLE
// income (ITA 2007 s.10), so the gross higher-rate threshold MOVES with the PA — it is
// not fixed. References: IFS (2021) Income tax explained §1.2; ICAEW Tax Faculty (2026);
// HMCL CBP-10618. Audit triggered by independent verification 26 May 2026.
function ukTax(gross, pa = 12570) {
// Personal Allowance taper: £1 reduction per £2 over £100,000 (UK-wide)
if (gross > 100000) pa = Math.max(0, pa - Math.floor((gross - 100000) / 2));
const taxable = Math.max(0, gross - pa);
let tax = 0;
// Basic rate 20%: first £37,700 of TAXABLE income (ITA 2007 s.10)
const b1 = Math.min(taxable, 37700); if (b1 > 0) tax += b1 * 0.20;
// Higher rate 40%: next £87,440 of taxable income (up to additional rate threshold)
const b2 = Math.min(Math.max(0, taxable - 37700), 87440); if (b2 > 0) tax += b2 * 0.40;
// Additional rate 45%: taxable income above £125,140
const b3 = Math.max(0, taxable - 125140); if (b3 > 0) tax += b3 * 0.45;
return tax;
}
// ── SCOTLAND ─────────────────────────────────────────────────────────────
// Source: Scottish Government (2026) Scottish Budget 2026-27. gov.scot.
// Source: Scottish Rate Resolution, Scottish Parliament, 19 Feb 2026 (93-29).
// Source: ICAEW Tax Faculty (2026) Scottish Budget income tax thresholds. icaew.com.
// Band thresholds corrected 25 May 2026 (see Chapter 12 for full audit trail).
//
// ⚠ BUG FIX 25 May 2026: PA taper was missing from scotTax.
// The PA is set by UK Parliament (Scotland Act 1998, s.80B) and is NOT devolved.
// The taper applies to Scottish taxpayers exactly as it does in England.
//
// ⚠ IMPORTANT: Scotland's effective marginal rate in the taper zone (£100k–£125,140)
// is 67.5% — higher than England's 60% — because Scotland's Advanced rate is 45%.
// England: 40% tax + (40% × 0.5 PA taper) = 60% effective marginal rate
// Scotland: 45% tax + (45% × 0.5 PA taper) = 67.5% effective marginal rate
function scotTax(gross, pa = 12570) {
// PA taper applies to Scottish taxpayers (PA is not devolved)
if (gross > 100000) pa = Math.max(0, pa - Math.floor((gross - 100000) / 2));
const taxable = Math.max(0, gross - pa);
// 'to' values = cumulative TAXABLE income thresholds (not gross)
const bands = [
{ to: 3967, r: 0.19 }, // Starter 19%: gross £12,571–£16,537
{ to: 16956, r: 0.20 }, // Basic 20%: gross £16,538–£29,526
{ to: 31092, r: 0.21 }, // Intermediate 21%: gross £29,527–£43,662
{ to: 62430, r: 0.42 }, // Higher 42%: gross £43,663–£75,000
{ to: 112570, r: 0.45 }, // Advanced 45%: gross £75,001–£125,140
{ to: Infinity,r: 0.48 }, // Top 48%: above £125,140 gross
];
let tax = 0, prev = 0;
for (const b of bands) {
const slice = Math.min(taxable, b.to) - prev;
if (slice <= 0) break;
tax += slice * b.r;
prev = b.to;
}
return tax;
}
// ── NATIONAL INSURANCE (ALL REGIONS) ─────────────────────────────────────
// Source: HMRC (2026) National Insurance rates and categories.
// gov.uk/national-insurance-rates-letters [Accessed May 2026]
// NI is NOT devolved. Class 1 employee rates apply identically in all four nations.
function ukNI(gross) {
// TEST: Branch on currentMode — Class 1 (8%) employed vs Class 4 (6%) self-employed
const niRate = (typeof currentMode !== 'undefined' && currentMode === 'selfemployed') ? 0.06 : 0.08;
const main = Math.max(0, Math.min(gross, 50270) - 12570) * niRate;
const upper = Math.max(0, gross - 50270) * 0.02;
return main + upper;
}
// ── REGIONAL DISPATCH (used by main calculator) ───────────────────────────
// currentRegion is set by the region selector pill buttons
// 'england', 'wales' and 'nireland' all use ukTax() — same rates
// 'scotland' uses scotTax() — 6-band Scottish rates
function calcIncomeTax(gross, region, pa) {
return region === 'scotland' ? scotTax(gross, pa) : ukTax(gross, pa);
}
// ── VERIFICATION SUITE ────────────────────────────────────────────────────
// Cross-referenced against HMRC PAYE tables, Scottish Government band tables
// and ICAEW Tax Faculty 2026/27 Scotland summary.
const regionTests = [
// England — standard cases
{ r:'england', g:20000, exp:1486 }, // (20000-12570)×20%
{ r:'england', g:40000, exp:5486 }, // (40000-12570)×20%
{ r:'england', g:60000, exp:11432 }, // basic + higher band
// England — PA taper cases (post-26-May-2026 fix verification)
{ r:'england', g:100000, exp:27432 }, // at taper start (no reduction yet)
{ r:'england', g:110000, exp:33432 }, // PA=£7,570; basic band stays £37,700 (taxable)
{ r:'england', g:125140, exp:42516 }, // PA fully withdrawn; £7,540 + £34,976
{ r:'england', g:150000, exp:53703 }, // additional rate on £24,860 above £125,140
// Scotland — standard cases
{ r:'scotland', g:16537, expFn: g => scotTax(g) }, // top of Starter band
{ r:'scotland', g:29526, expFn: g => scotTax(g) }, // top of Basic band
{ r:'scotland', g:43662, expFn: g => scotTax(g) }, // top of Intermediate band
// Scotland — PA taper (bug fix verification)
{ r:'scotland', g:110000, expFn: g => scotTax(g) }, // 67.5% effective marginal rate zone
{ r:'scotland', g:125140, expFn: g => scotTax(g) }, // PA fully withdrawn in Scotland too
];
regionTests.forEach(test => {
const result = test.r === 'scotland' ? scotTax(test.g) : ukTax(test.g);
if(test.exp !== undefined) {
console.assert(Math.abs(result - test.exp) < 2,
`${test.r} £${test.g.toLocaleString()}: got £${result.toFixed(2)} expected £${test.exp}`);
}
console.log(`${test.r} £${test.g.toLocaleString()}: £${result.toFixed(2)} tax`);
});ukTax() for Wales with no adjustment. This is reviewed every April and will be updated if the Senedd diverges.
The NHS pay structure for non-medical staff in England follows the Agenda for Change (AfC) framework. The 2026/27 pay scales took effect from 1 April 2026 following a 3.3% uplift across every pay point, confirmed by NHS Employers on 12 February 2026. AfC pay runs from Band 2 (£25,272) through Band 9 (top of band £129,783). Bands 2 and 3 have one or two pay points; Bands 4 has entry and top; Bands 5–9 each have three (entry, intermediate, top). Progression is annual against the Pay Progression Standard. High Cost Area Supplements (HCAS) of 20% (Inner London), 15% (Outer London) and 5% (Fringe) apply on top of base pay where the post is in scope.
// ── NHS AGENDA FOR CHANGE PAY 2026/27 ──────────────────────────────────────
// Source: NHS Employers (2026) Agenda for Change pay scales 2026/27.
// nhsemployers.org/system/files/2026-02/2026 AfC pay scales.pdf
// Effective: 1 April 2026. 3.3% uplift confirmed 12 February 2026.
// HCAS: Inner London ×1.20, Outer London ×1.15, Fringe ×1.05.
const NHS_AFC = {
band2: { entry: 25272 },
band3: { entry: 27476 },
band4: { entry: 28392, top: 31157 },
band5: { entry: 32073, mid: 34592, top: 39043 },
band6: { entry: 39959, mid: 42170, top: 48117 },
band7: { entry: 49387, mid: 51932, top: 56515 },
band8a: { entry: 57528, mid: 60417, top: 64750 },
band8b: { entry: 66582, mid: 70896, top: 77368 },
band8c: { entry: 79504, mid: 84346, top: 91609 },
band8d: { entry: 94356, mid: 100140, top: 108814 },
band9: { entry: 112782, mid: 119583, top: 129783 },
};
const HCAS = { rest: 1.00, inner: 1.20, outer: 1.15, fringe: 1.05 };The Teachers' Pension Scheme (TPS) is a Career Average Revalued Earnings (CARE) scheme with member contribution rates tiered by salary. As with NHS Pension, the tier rate applies to the entire salary — not marginally — producing small cliff edges at each threshold boundary. The 2026/27 thresholds were uplifted by 3.8% CPI from 1 April 2026. Boundaries are set to the penny (£36,198.99 → £36,199.00 crosses from Tier 1 to Tier 2) to allow Teachers' Pensions to set contribution rates from the prior April's actual pensionable earnings. Employer contribution: 28.68% from April 2024.
// ── TEACHERS' PENSION SCHEME 2026/27 ───────────────────────────────────────
// Source: Teachers' Pensions (2026) Calculating contributions for 2026-27.
// teacherspensions.co.uk/employers/managing-members/contributions
// Thresholds indexed by 3.8% CPI from 1 April 2026.
// Employer: 28.68% from April 2024. Member tier rates applied to ENTIRE salary.
const TPS_RATES = [
{ ceiling: 36198.99, rate: 0.074 }, // Tier 1: 7.4%
{ ceiling: 48727.99, rate: 0.089 }, // Tier 2: 8.9%
{ ceiling: 57776.99, rate: 0.099 }, // Tier 3: 9.9%
{ ceiling: 76572.99, rate: 0.105 }, // Tier 4: 10.5%
{ ceiling: 104413.99, rate: 0.116 }, // Tier 5: 11.6%
{ ceiling: Infinity, rate: 0.120 }, // Tier 6: 12.0%
];
function tpsPension(salary) {
const tier = TPS_RATES.find(t => salary <= t.ceiling) || TPS_RATES[5];
return salary * tier.rate;
}The School Teachers' Pay and Conditions Document (STPCD) is the statutory framework governing maintained-school teacher pay in England. The 2025/26 scales took effect from 1 September 2025 following a 4% uplift confirmed by the STRB's 35th report and accepted by the Secretary of State. STPCD divides England into four pay areas with separate rates: Rest of England, London Fringe, Outer London, and Inner London. Wales has its own scale set by Welsh Government, broadly similar but typically without M1. Main scale runs M1–M6; Upper scale U1–U3 for post-threshold teachers; Leading Practitioner range; and Leadership L1–L43 for heads, deputies and assistant heads.
// ── STPCD 2025/26 (effective 1 September 2025) ─────────────────────────────
// Source: Department for Education (2025) School Teachers' Pay and Conditions
// Document 2025. gov.uk/government/publications/school-teachers-pay-and-conditions
// Cross-referenced: Lambeth Inner London circular Sept 2025; Monmouthshire Wales
// circular Sept 2025; NASUWT published scale tables; salaryaftertaxuk.co.uk.
// 4% uplift over 2024/25 (STRB 35th report, accepted by DfE).
const STPCD_MAIN = {
// [Rest of England, Fringe, Outer London, Inner London, Wales]
M1: [32916, 34514, 37870, 40317, 33731],
M2: [34823, 36408, 39851, 42234, 33731], // Wales scale: M1 removed, M2 entry
M3: [37101, 38689, 41935, 44238, 36441],
M4: [39556, 41147, 44128, 46339, 39249],
M5: [42057, 43647, 46800, 48952, 42339],
M6: [45352, 46941, 50474, 52300, 46595],
};
// Upper Pay Scale U1-U3, Leading Practitioner LP1-LP2, Leadership L1-L43 follow
// the same regional structure — full table in TEACHER_PAY production constant.From 1 April 2026, the Police Pension Scheme 2015 (PPS 2015) member contribution structure changed under the Home Office's Police Pensions Regulations 2026 (ISBN 978-1-5286-6297-0), laid before Parliament in March 2026. The revised three-tier structure achieves a 13.7% average yield (up from 13.48%) and — significantly — switches from full-time-equivalent (FTE) earnings to actual pensionable earnings for tier allocation. This benefits part-time officers whose previous FTE-based tier did not reflect their real income. New rates: 12.88% up to £37,035, 13.88% £37,036–£79,587, 14.22% £79,588+. Tier 1 contains no members under the legacy thresholds; the new thresholds restore its operation.
// ── POLICE PENSION SCHEME 2015 — 2026/27 ───────────────────────────────────
// Source: Home Office (March 2026) Report to Parliament in respect of updates
// to the member contribution structure for the Police Pensions Regulations 2015.
// ISBN 978-1-5286-6297-0. assets.publishing.service.gov.uk
// Effective: 1 April 2026. Tier basis: actual pensionable earnings (not FTE).
// Employer contribution: ~31% (varies by force valuation).
function policePension(gross) {
let rate = 0.1288; // Tier 1: 12.88%
if (gross > 79587) rate = 0.1422; // Tier 3: 14.22%
else if (gross > 37035) rate = 0.1388; // Tier 2: 13.88%
return { contribution: gross * rate, rate };
}
// Verification:
// PC PP1 £31,164 → 12.88% = £4,013.92/yr
// Sgt top £56,208 → 13.88% = £7,801.67/yr
// Chief Supt £115,785 → 14.22% = £16,464.62/yrPolice officer pay in England and Wales is set nationally following Police Remuneration Review Body (PRRB) recommendations to the Home Secretary. The 2025/26 scales took effect from 1 September 2025 following a 4.2% uplift covering all federated ranks from Constable to Chief Superintendent. Constable progression follows two separate scales depending on appointment date relative to 1 April 2013. Sergeant has 3 pay points; Inspector has 4; Chief Inspector has 3; Superintendent has 4; Chief Superintendent has 3. London Weighting (£3,150) and London Allowance (max £6,588) apply to Metropolitan and City of London officers. South East allowances of £2,000 (Beds, Hants, Sussex) and £3,000 (Essex, Herts, Kent, Surrey, Thames Valley) apply by force.
// ── POLICE PAY 2025/26 (effective 1 September 2025) ────────────────────────
// Source: Metropolitan Police Federation (2025) Police Pay Scales 2025/26.
// metfed.org.uk/assets/payscales-2025-26.pdf
// Source: Home Office (2025) PRRB report and government acceptance, 4.2% award.
const POLICE_PAY_2025 = {
// Constable (appointed on or after 1 April 2013)
PC: { PP1: 31164, PP2: 32472, PP3: 33789, PP4: 35106, PP5: 37737, PP6: 43038, PP7: 50256 },
// Sergeant
Sgt: { PP1: 53568, PP2: 54660, PP3: 56208 },
// Inspector (PP0 = entry)
Insp: { PP0: 66462, PP1: 68202, PP2: 69954, PP3: 71697 },
ChInsp: { PP1: 70344, PP2: 71715, PP3: 73149 },
Supt: { PP1: 84177, PP2: 88449, PP3: 92955, PP4: 99015 },
ChSupt: { PP1: 103797, PP2: 107226, PP3: 115785 },
};
const POLICE_ALLOWANCES = {
londonWeighting: 3150, // Met & City of London
londonAllowanceMax: 6588, // additional, max
southEastEssexKent: 3000, // Essex, Herts, Kent, Surrey, TVP
southEastBedsHants: 2000, // Beds, Hants, Sussex
onCallPerDay: 35,
};Three pension schemes operate concurrently for current and former Armed Forces personnel, with members allocated based on their service start date. AFPS 15 (joined from 1 April 2015) is a Career Average Revalued Earnings (CARE) scheme that adds 1/47th of annual pensionable earnings to a pension pot each scheme year, revalued by Average Weekly Earnings while serving and CPI when deferred. It is non-contributory — uniquely among major UK public sector schemes — with the MOD funding contributions entirely. Normal Pension Age 60. AFPS 05 (2005–2015) is final-salary: 1/70 × years × final pensionable salary, with automatic tax-free 3× lump sum. AFPS 75 (pre-2005) is also final-salary but with rank-related officer accrual that varies from soldier accrual at roughly 1/48. Many AFPS 05 members transferred to AFPS 15 from 1 April 2022 under the McCloud remedy.
// ── ARMED FORCES PENSION SCHEMES — best-estimate annual pension ────────────
// Source: MOD (2026) Discover My Benefits — Armed Forces Pension Scheme 15/05/75.
// discovermybenefits.mod.gov.uk
// Source: Veterans UK pension forecasts (request annually for accurate figures)
// Source: Army Widows Association (2016) AFPS 2015 explained. armywidows.org.uk
// NOTE: Best-estimate of annual pension at Normal Pension Age. Does NOT include:
// - Lump sums (automatic 3× for AFPS 05/75; commutation up to 25% for AFPS 15)
// - EDP bridge payments
// - Actuarial reductions for pre-NPA take
// - McCloud remedy choice modelling
// - Officer-specific accrual variations under AFPS 75
const AFPS_FORMULAS = {
afps15: (years, pay) => (years * pay) / 47, // CARE simplified
afps05: (years, pay) => (years * pay) / 70, // final salary
afps75: (years, pay) => (Math.min(years, 34) * pay) / 48, // soldier scale
};Statutory Maternity Pay (SMP) provides up to 39 weeks of paid maternity leave funded by the employer (who reclaims 92% from HMRC, or 103% under Small Employers' Relief). From 6 April 2026, the structure is: 6 weeks at 90% of Average Weekly Earnings (AWE), followed by 33 weeks at the lower of £194.32/week or 90% of AWE. The earnings threshold to qualify rose from £125 to £129/week in line with the Lower Earnings Limit uprating. SMP is taxable income subject to income tax, National Insurance and student loan deductions in the normal way. Enhanced (contractual) maternity pay above SMP is at employer discretion and is taxable as normal employment income.
// ── STATUTORY MATERNITY PAY 2026/27 ────────────────────────────────────────
// Source: HMRC (2026) Maternity pay and leave. gov.uk/maternity-pay-leave
// Source: Department for Business and Trade (2026) Statutory rates from 6 April 2026.
// Effective: 6 April 2026. Up from £187.18/wk (2025/26).
// Earnings threshold: £129/wk (up from £125).
const SMP = {
flatRate: 194.32, // £/wk for weeks 7-39
weeksAt90pcAWE: 6, // first 6 weeks at 90% AWE
weeksAtFlatRate: 33, // remaining 33 weeks at lower of flat or 90% AWE
earningsThreshold: 129, // £/wk LEL for SMP eligibility
};
function calcSMP(annualSalary) {
const awe = annualSalary / 52;
const first6 = awe * 0.90 * SMP.weeksAt90pcAWE;
const flatComponent = Math.min(SMP.flatRate, awe * 0.90);
const next33 = flatComponent * SMP.weeksAtFlatRate;
return { totalGross: first6 + next33, awe, flatRate: flatComponent };
}The full new State Pension for 2026/27 is £241.30/week (£12,547.60/year), an increase of 4.8% over the 2025/26 rate of £221.20/week. The uplift is the highest of three measures under the Triple Lock: CPI inflation (3.8%), Average Weekly Earnings growth (4.8% for May–July 2025), or 2.5%. For 2026/27, earnings won. Eligibility requires reaching State Pension age (currently 66, rising to 67 by 2028) and having at least 10 qualifying NI years; full rate requires 35 qualifying years. Each NI year is worth 1/35 of the full rate (~£6.89/wk or £358.50/yr). State Pension is taxable but no NI is payable on it (or on earnings) once State Pension age is reached. Basic State Pension (pre-2016): £184.90/week.
// ── STATE PENSION 2026/27 ──────────────────────────────────────────────────
// Source: DWP (2026) Benefit and pension rates 2026 to 2027. gov.uk
// Source: Department for Work and Pensions (2026) State Pension 2026/27.
// Triple lock uprating 4.8% effective 6 April 2026 (AWE May-Jul 2025 wins).
// State Pension age: 66 (rising to 67 by 2028).
const STATE_PENSION_2026 = {
newStatePension: {
weekly: 241.30,
annual: 12547.60,
qualifyingYears: 35, // years for full rate
minimumYears: 10, // below this = no entitlement
},
basicStatePension: { // pre-April 2016 retirees
weekly: 184.90,
annual: 9614.80,
},
pensionCredit: { // means-tested top-up
singleWeekly: 238,
coupleWeekly: 363.25,
},
};
function newStatePensionByYears(niYears) {
if (niYears < 10) return 0;
return Math.min(niYears, 35) / 35 * STATE_PENSION_2026.newStatePension.annual;
}Statutory redundancy pay is calculated on three variables: age, length of continuous service, and weekly pay (capped at £751/week from 6 April 2026 per the Employment Rights (Increase of Limits) Order 2026, up from £719 in 2025/26). Three age tiers apply: under 22 = 0.5 weeks pay per year; 22–40 = 1 week per year; 41+ = 1.5 weeks per year. The age multiplier is applied year-by-year to the age the employee was during that year of service, not to current age. Service is capped at the most recent 20 years. Maximum statutory entitlement for 2026/27: 20 years × 1.5 weeks × £751 = £22,530. First £30,000 of any redundancy payment (statutory + enhanced) is tax-free. Notice pay and PILON are always fully taxable as normal earnings.
// ── STATUTORY REDUNDANCY 2026/27 ───────────────────────────────────────────
// Source: Employment Rights (Increase of Limits) Order 2026 (SI 2026/XXX).
// Source: Department for Business and Trade (2026) Statutory cap increases.
// Source: Employment Rights Act 1996, c. 18, Part XI. London: HMSO.
// Effective: 6 April 2026. Cap rose from £719 → £751.
const REDUNDANCY_2026 = {
weeklyCap: 751, // up from £719 in 2025/26
taxFreeLimit: 30000, // unchanged since 1988
maxYearsService: 20, // most recent 20 years only
};
function calcStatutoryRedundancy(age, yearsService, weeklyPay) {
const capped = Math.min(weeklyPay, REDUNDANCY_2026.weeklyCap);
let total = 0;
for (let y = 1; y <= Math.min(yearsService, 20); y++) {
const ageInYear = age - (yearsService - y);
if (ageInYear >= 41) total += 1.5 * capped;
else if (ageInYear >= 22) total += 1.0 * capped;
else total += 0.5 * capped;
}
return total;
}Bereavement Support Payment (BSP) replaced three older benefits (Bereavement Payment, Bereavement Allowance, Widowed Parent's Allowance) for surviving spouses and civil partners widowed on or after 6 April 2017. BSP is tax-free, doesn't affect Universal Credit, and isn't disqualified by remarriage. Two rates apply: Higher rate for those entitled to Child Benefit (or pregnant at the time of death) — £3,500 lump sum plus 18 monthly payments of £350 (£9,800 total). Standard rate for those without dependent children — £2,500 lump sum plus 18 monthly payments of £100 (£4,300 total). Rates unchanged for 2026/27 and have not been uprated since introduction. Cohabiting parents with dependent children have been eligible since the Bereavement Benefits (Remedial) Order 2023.
// ── BEREAVEMENT SUPPORT PAYMENT 2026/27 ────────────────────────────────────
// Source: DWP (2026) Benefit and pension rates 2026 to 2027. gov.uk
// Source: House of Commons Library (2026) CBP-7887 — Bereavement Support Payment.
// Rates unchanged since 2017 introduction. Tax-free, disregarded by Universal Credit.
const BSP_2026 = {
higherRate: { // with dependent children / pregnant
lumpSum: 3500,
monthly: 350,
months: 18,
totalMax: 9800, // 3500 + (350 × 18)
},
standardRate: { // no dependent children
lumpSum: 2500,
monthly: 100,
months: 18,
totalMax: 4300, // 2500 + (100 × 18)
},
};
function bspEntitlement(eligible, hasChildren) {
if (!eligible) return null;
return hasChildren ? BSP_2026.higherRate : BSP_2026.standardRate;
}The Child Maintenance Service (CMS) calculates maintenance using the paying parent's gross weekly income (not net) under The Child Support Maintenance Calculation Regulations 2012. Five rates apply by income tier. Nil rate (£0–£7/wk): no maintenance. Flat rate (£7–£100/wk): £8.40/wk fixed. Reduced rate (£100–£200/wk): tapered. Basic rate (£200–£800/wk): 12% (1 child) / 16% (2) / 19% (3+) of gross income. Basic Plus rate on the slice between £800–£3,000/wk: 9% / 12% / 15% on the additional income. Above £3,000/wk gross is capped at the Basic Plus amount — applications for more must go to court. Adjustments apply for shared care, other children supported, and pension contributions. CMS amounts are estimates only; the gov.uk calculator and CMS service produce binding figures.
// ── CMS CHILD MAINTENANCE FORMULA ──────────────────────────────────────────
// Source: gov.uk/calculate-child-maintenance
// Source: The Child Support Maintenance Calculation Regulations 2012
// (SI 2012/2677), as amended. London: HMSO.
// Source: Child Support Act 1991, c. 48. London: HMSO. (CMS framework.)
function cmsCalc(grossAnnual, numberOfChildren) {
if (numberOfChildren === 0 || grossAnnual <= 0) return 0;
const weekly = grossAnnual / 52;
if (weekly < 7) return 0; // Nil
if (weekly < 100) return 8.40 * 52; // Flat
const basicRates = [0, 0.12, 0.16, 0.19]; // 1/2/3+ children
const basicPlusRates = [0, 0.09, 0.12, 0.15]; // Basic Plus
const r = basicRates[Math.min(numberOfChildren, 3)];
const rP = basicPlusRates[Math.min(numberOfChildren, 3)];
if (weekly <= 200) return weekly * r * (weekly - 100) / 100 * 52; // Reduced
if (weekly <= 800) return weekly * r * 52; // Basic
if (weekly <= 3000) return (800 * r + (weekly - 800) * rP) * 52; // Basic Plus
return (800 * r + 2200 * rP) * 52; // Capped at £3k/wk
}The main Payslp calculator implements a single computation engine that handles both employed (PAYE) and self-employed (Self-Assessment) taxpayers through a top-of-page mode toggle. This chapter documents the architecture decision and the specific calculation branches that activate when a user switches to Self-Employed mode. The toggle was introduced on 27 May 2026 as part of the consolidation that brought the previously-separate Self-Employed calculator into the main page, on the basis that nearly all calculation logic (income tax, student loans, pension relief, regional dispatch) is identical between the two cases — only the National Insurance class and a small number of input fields differ. Implementation uses a global currentMode variable, data-mode attributes on individual input fields for show/hide visibility, and a single conditional branch in the ukNI() function to switch between Class 1 (8% main / 2% upper) and Class 4 (6% main / 2% upper).
// ── MODE-AWARE NI (Class 1 employed vs Class 4 self-employed) ──────────────
// Source: HMRC (2026) National Insurance rates and categories.
// gov.uk/national-insurance-rates-letters [Accessed May 2026]
// Source: NICs (Reduction in Rates) Act 2024, c.1 — Class 4 main rate 6%.
// Thresholds identical between Class 1 (PT/UEL) and Class 4 (LPL/UPL) for 2026/27:
// £12,570 → £50,270: main rate (8% employed / 6% self-employed)
// above £50,270: 2% upper rate (both)
let currentMode = 'employed'; // 'employed' (default) or 'selfemployed'
function ukNI(gross) {
const niRate = (currentMode === 'selfemployed') ? 0.06 : 0.08;
const main = Math.max(0, Math.min(gross, 50270) - 12570) * niRate;
const upper = Math.max(0, gross - 50270) * 0.02;
return main + upper;
}
// ── MODE TOGGLE HANDLER ────────────────────────────────────────────────────
// Updates UI labels and triggers field visibility based on data-mode attributes
function setMode(mode) {
currentMode = mode;
// Toggle active button state
document.getElementById('emp-employed').classList.toggle('active', mode==='employed');
document.getElementById('emp-selfemployed').classList.toggle('active', mode==='selfemployed');
// Update labels (hero title, card header)
// [...label updates omitted for brevity...]
// Recalculate with new mode
calculate();
// Show/hide fields based on data-mode attribute
document.querySelectorAll('[data-mode]').forEach(function(el){
var m = el.getAttribute('data-mode');
el.style.display = (m === 'both' || m === mode) ? '' : 'none';
});
// Track in GA4
if (typeof gtag === 'function') {
gtag('event','mode_toggle',{mode:mode, event_category:'engagement'});
}
}
// ── SELF-EMPLOYED PROFIT DERIVATION ────────────────────────────────────────
// In selfemployed mode, the salary input represents annual turnover.
// Taxable profit = turnover - allowable expenses - simplified expenses.
// Pension contributions reduce taxable income but NOT taxable profit for Class 4
// (asymmetric treatment — see Chapter 7).
if (currentMode === 'selfemployed') {
const seExp = parseFloat(document.getElementById('opt_seExp')?.value) || 0;
const seSim = parseFloat(document.getElementById('opt_seSimplified')?.value) || 0;
annual = Math.max(0, annual - seExp - seSim);
}
// ── VOLUNTARY CLASS 2 NI (POST-CALC ADJUSTMENT) ────────────────────────────
// Source: HMRC (2026) Class 2 voluntary contributions.
// £3.65/wk × 52 = £189.80/yr — maintains qualifying year for State Pension
// when profits below £7,105 Small Profits Threshold.
if (currentMode === 'selfemployed' && document.getElementById('opt_seVolClass2')?.checked) {
const class2 = 189.80;
r.takeHome -= class2;
r.monthly.takeHome -= class2 / 12;
r.items.push({lbl:'Voluntary Class 2 NI', val:class2, monthlyVal:class2/12});
}modeToggleRunTests() — runs 14 assertions covering NI rate switching, profit derivation, voluntary Class 2 amounts, and boundary cases. All assertions should pass with green ✅ marks.IR35 — formally the "off-payroll working rules" — is UK tax legislation introduced by the Finance Act 2000 (Schedule 12) and substantially reformed by the Finance Act 2017 (public sector) and Finance Act 2021 (private sector). It applies only to individuals who provide their services through an intermediary, typically a personal service company (PSC) — and only when the underlying working relationship looks like employment rather than genuine self-employment. Sole traders and standard PAYE employees are entirely outside IR35's scope. The legislation's purpose is to prevent "disguised employment" — where an individual would otherwise be taxed as an employee but routes income through a Ltd company to access lower combined Corporation Tax and dividend tax rates. For Payslp's Ltd Company Contractor mode (added 28 May 2026), the user toggles between Outside IR35 (genuine self-employment via PSC, full tax efficiency) and Inside IR35 (deemed employment, PAYE deducted at source by the fee-payer). Under the Chapter 10 ITEPA 2003 framework as reformed in 2021, medium and large engagers issue a Status Determination Statement (SDS) which determines tax treatment; small clients (turnover < £10.2m, balance sheet < £5.1m, < 50 employees) leave responsibility with the contractor's PSC. HMRC's Check Employment Status for Tax (CEST) tool is the official self-assessment instrument, though its outputs have been contested in tribunals (most notably Atholl House Productions Ltd v HMRC [2022] EWCA Civ 501). The financial consequences of IR35 status are now material but smaller than pre-2023 — the Corporation Tax rise to 25% (April 2023) and Employer NI changes (April 2025) have narrowed the Outside-vs-Inside differential considerably.
// ── IR35 STATUS TOGGLE (global state) ─────────────────────────────────────
// Source: Finance Act 2000, Schedule 12 (original IR35)
// Source: Finance Act 2021 — Chapter 10 ITEPA 2003 (private sector reform)
// Source: HMRC Employment Status Manual ESM10000-ESM12000
let ltdInsideIR35 = false; // false = Outside (genuine SE); true = Inside (deemed employment)
function setIR35(inside) {
ltdInsideIR35 = !!inside;
document.getElementById('ltd-outside').classList.toggle('active', !inside);
document.getElementById('ltd-inside').classList.toggle('active', inside);
calculate();
}
// ── BRANCHING IN MAIN CALCULATION ─────────────────────────────────────────
// In calculateLtd(), the IR35 flag determines which tax framework applies:
// Inside IR35 → PAYE income tax + Class 1 employee NI on full revenue
// Outside IR35 → Corp Tax (with marginal relief) + dividend tax + salary PAYE
if (ltdInsideIR35) {
// Treated as PAYE — see Chapter 28
} else {
// Full PSC calculation — see Chapter 27
}For contractors operating Outside IR35 through a personal service company, the calculator implements the standard tax-efficient extraction model: low director's salary (typically at the Personal Allowance £12,570) plus dividends from post-Corporation Tax distributable profit. This chapter documents the full computation chain — Day Rate × Billable Days produces annual revenue, from which PSC business expenses, director's salary, employer National Insurance (post-April 2025: 15% above £5,000 Secondary Threshold per Autumn Budget 2024), and any employer pension contributions are deducted to derive pre-Corporation Tax profit. Corporation Tax applies at 19% on small profits (≤£50,000), at the main rate of 25% on profits ≥£250,000, with marginal relief applying in between using the 3/200 standard fraction (Corporation Tax Act 2010, s. 18 as amended by Finance Act 2023). The post-tax distributable profit is taken as dividends, taxed personally at 8.75% / 33.75% / 39.35% across the basic/higher/additional rate bands after the £500 dividend allowance. Personal Allowance tapers above £100,000 of total income at £1 per £2 (penny-accurate in our implementation since 28 May 2026). Student loan repayments are calculated on qualifying income (salary + dividends, reported via Self-Assessment) at 9% above the relevant plan threshold or 6% for postgraduate loans. The optimal salary remains £12,570 even after the April 2025 Employer NI changes — the Corporation Tax savings on the salary-plus-employer-NI deduction exceed the higher employer NI cost across all common revenue levels.
// ── CORPORATION TAX WITH MARGINAL RELIEF (2026/27) ─────────────────────────
// Source: Corporation Tax Act 2010, s. 18 as amended by Finance Act 2023
// 19% small profits to £50k; 25% main from £250k; MR fraction 3/200
function calcCorpTax(profit) {
if (profit <= 0) return 0;
if (profit <= 50000) return profit * 0.19;
if (profit >= 250000) return profit * 0.25;
return profit * 0.25 - (250000 - profit) * (3 / 200);
}
// ── DIRECTOR'S SALARY NI — POST APRIL 2025 RULES ───────────────────────────
// Source: Autumn Budget 2024; National Insurance Contributions Act 2025
// Employer NI rate: 15% (was 13.8%); Secondary Threshold: £5,000 (was £9,100)
// Frozen until April 2031
function calcSalaryNI(salary) {
if (salary <= 12570) return { employee: 0, employer: Math.max(0, salary - 5000) * 0.15 };
const empMain = (Math.min(salary, 50270) - 12570) * 0.08;
const empUpper = Math.max(0, salary - 50270) * 0.02;
return { employee: empMain + empUpper, employer: Math.max(0, salary - 5000) * 0.15 };
}
// ── DIVIDEND TAX (2026/27) — band-by-band layered on salary ────────────────
// Source: Income Tax Act 2007 Part 2 Chapter 5 (dividend ordinary/higher/additional)
// £500 dividend allowance; 8.75% / 33.75% / 39.35%
function calcDividendTax(salary, dividends) {
const totalIncome = salary + dividends;
let pa = 12570;
if (totalIncome > 100000) pa = Math.max(0, 12570 - (totalIncome - 100000) / 2);
const salaryAbovePA = Math.max(0, salary - pa);
const paLeftForDividends = Math.max(0, pa - salary);
// Salary IT first (basic 20% / higher 40% / additional 45%)
let salaryIT = 0;
if (salaryAbovePA > 0) {
salaryIT += Math.min(salaryAbovePA, 37700) * 0.20;
salaryIT += Math.max(0, Math.min(salaryAbovePA - 37700, 87440)) * 0.40;
salaryIT += Math.max(0, salaryAbovePA - 37700 - 87440) * 0.45;
}
// Dividend tax: dividend allowance + 3 bands stacking after salary's band usage
const dividendsAfterPA = Math.max(0, dividends - paLeftForDividends);
const dividendsAfterAllowance = Math.max(0, dividendsAfterPA - 500);
const basicBandLeft = Math.max(0, 37700 - Math.min(salaryAbovePA, 37700)) - 500;
const divInBasic = Math.min(dividendsAfterAllowance, basicBandLeft);
let dividendIT = divInBasic * 0.0875;
const higherBandLeft = Math.max(0, 87440 - Math.max(0, Math.min(salaryAbovePA - 37700, 87440)));
const remaining = dividendsAfterAllowance - divInBasic;
const divInHigher = Math.min(remaining, higherBandLeft);
dividendIT += divInHigher * 0.3375;
dividendIT += Math.max(0, remaining - divInHigher) * 0.3935;
return { salaryIT, dividendIT };
}
// ── STUDENT LOAN ON QUALIFYING INCOME (salary + dividends) ─────────────────
// Source: Education (Student Loans) (Repayment) Regulations 2009 (as amended)
// Plans 1/2/4/5 at 9%; Postgrad at 6%; thresholds 2026/27
function calcStudentLoan(qualIncome, plan) {
const T = { plan1: 26900, plan2: 29385, plan4: 33795, plan5: 25000, postgrad: 21000 };
const R = { plan1: 0.09, plan2: 0.09, plan4: 0.09, plan5: 0.09, postgrad: 0.06 };
if (!T[plan]) return 0;
return Math.max(0, qualIncome - T[plan]) * R[plan];
}
// ── OUTSIDE IR35 FULL CALCULATION ──────────────────────────────────────────
const annualRevenue = dayRate * billableDays;
const niCalc = calcSalaryNI(dirSalary);
const preCT = annualRevenue - psc_expenses - dirSalary - niCalc.employer - employerPension;
const ct = calcCorpTax(preCT);
const distributable = Math.max(0, preCT - ct);
const divCalc = calcDividendTax(dirSalary, distributable);
const studentLoan = calcStudentLoan(dirSalary + distributable, slPlan);
const takeHome = (dirSalary - niCalc.employee - divCalc.salaryIT)
+ (distributable - divCalc.dividendIT)
- studentLoan;When a contractor's engagement is determined to be "inside IR35" — i.e. the underlying working relationship is one of employment despite the Ltd company intermediary — the Finance Act 2021 reform (for medium and large engagers) shifts the responsibility for tax deduction onto the fee-payer (typically the agency or the end client). The contractor's company receives the contract revenue net of full Income Tax and Class 1 employee National Insurance deducted at source through PAYE. The "deemed employment payment" effectively equals the contract revenue, with no Corporation Tax efficiency, no salary/dividend split optimisation, and no Personal Allowance preservation strategy. The 5% deduction historically permitted to PSCs for notional business expenses (Schedule 12 paragraph 7 of FA 2000) was removed by the 2017 public-sector reform and is not available under the 2021 private-sector framework either. Personal Allowance still applies at £12,570 with the standard taper above £100,000. Student loan repayments are deducted by the fee-payer through PAYE on the full contract revenue as qualifying income — meaning Inside IR35 contractors with student loans pay materially more in repayments than their Outside IR35 equivalents (whose qualifying income is the smaller sum of director's salary plus post-CT dividends). Our calculator implements this as a pure PAYE pass-through on full revenue with no PSC deductions, accurately reflecting the post-2021 statutory framework.
// ── INSIDE IR35 CALCULATION — full PAYE on contract revenue ────────────────
// Source: Finance Act 2021, Schedule 1, Part 2 (Workers' services through intermediaries)
// Fee-payer deducts income tax + employee NI before paying the PSC
// No 5% deduction available (removed in 2017 reform)
// PA taper still applies at £100k+ income
const incomeBeforeTax = dayRate * billableDays; // full contract revenue
let pa = 12570;
if (incomeBeforeTax > 100000) pa = Math.max(0, 12570 - (incomeBeforeTax - 100000) / 2);
const taxable = Math.max(0, incomeBeforeTax - pa);
// Income tax — three bands
let incomeTax = 0;
incomeTax += Math.min(taxable, 37700) * 0.20; // basic
incomeTax += Math.max(0, Math.min(taxable - 37700, 87440)) * 0.40; // higher
incomeTax += Math.max(0, taxable - 37700 - 87440) * 0.45; // additional
// Class 1 employee NI — main 8% / upper 2%
const niMain = Math.max(0, Math.min(incomeBeforeTax, 50270) - 12570) * 0.08;
const niUpper = Math.max(0, incomeBeforeTax - 50270) * 0.02;
const employeeNI = niMain + niUpper;
// Student loan on full contract revenue (qualifying income for Inside IR35)
const studentLoan = calcStudentLoan(incomeBeforeTax, slPlan);
const takeHome = incomeBeforeTax - incomeTax - employeeNI - studentLoan;The following closed-form expression covers the full take-home calculation across all modes. Self-employed profit (G = turnover − expenses) feeds into the same income tax function T as employed income; the key structural differences are Class 4 NI (not Class 1), the absence of salary sacrifice, and the addition of the Section 24 landlord credit where applicable.
TH = G − T(G, PA) − NI(G) − SL(G, π) − P + R(P, τ)
G = G₀ + B + C − SS gross: base + bonus + commission − sacrifice
PA = max(0, PA₀ − ½·max(0, G−100,000)) PA tapered above £100k
T = 0.20·min(G−PA, 37,700)
+ 0.40·min(max(0,G−PA−37,700), 87,440)
+ 0.45·max(0, G−PA−125,140) England/Wales/NI three-band model
NI = r₁·min(max(0,G−12,570), 37,700) + 0.02·max(0,G−50,270)
r₁ = 0.08 (employed Class 1) or 0.06 (self-employed Class 4)
SL = max(0,G−θ_π)·r_π + max(0,G−θ_pg)·r_pg π ∈ {plan1..5}; θ = threshold; r = rate
P = G · p% pension contribution
R = P · τ, τ ∈ {0.20, 0.40, 0.45} SIPP relief at marginal rate
Landlord extension:
TH_ll = rent − exp − T(rent−exp+O, PA) + M·0.20 − SL M = mortgage interest; O = other income
The PA taper term ½·max(0,G−100,000) creates the 60% effective marginal rate between £100,000 and £125,140 — 40p income tax plus 40p from the accelerated withdrawal of the personal allowance, which is itself taxed at 40%. Student loan function SL is separable and operates on gross income independently — it cannot be reduced by pension contributions under relief at source or net pay arrangements, though salary sacrifice does reduce the SL base. For Scotland, T is replaced by the six-band piecewise linear function T_scot with rates {0.19, 0.20, 0.21, 0.42, 0.45, 0.48}. NI is unchanged by region.
Found an error? Enter the salary, the figure shown, and what you believe the correct figure should be. We verify every report against HMRC primary sources and publish corrections here with a full dated audit trail. Code is yours to inspect, copy and build on.
modeToggleRunTests()Math.floor((income-100000)/2) with direct division for penny-accurate calculation · Affects all calculation paths (employed, self-employed, Ltd inside and outside IR35)calculateLtd(). Now correctly applied: salary+dividends as qualifying income for Outside IR35; full contract revenue for Inside IR35. Material impact: ~£5,000/yr deduction for Plan 2 contractor on £110k revenue${item.ico} where Ltd/SE items did not set the ico property · Fix: defensive fallback ${item.ico || ''} in the bdList renderer · Calculation engine unaffected — purely a presentation defectr.gross, r.incomeTax, r.ni which are not defined on the Ltd result object (the Ltd path returns annualRevenue, items, isLtd instead) · Fix: built mode-aware ptRows branch reading values from r.items, with separate row sets for Outside IR35 (full PSC chain: revenue → CT → dividend tax → take-home) and Inside IR35 (PAYE pass-through: revenue → income tax → NI → take-home)updateSalaryChart() now branches on r.isLtd and aggregates slice values from the items array — Outside IR35 shows Take-home / Corporation Tax / Dividend Tax / NI / Student Loan; Inside IR35 shows Take-home / Income Tax (PAYE) / NI / Student Loanhref="#" without event.preventDefault() across Company column, Tools column, Cookie settings link, and one inline reference. All replaced with the working event.preventDefault() pattern matching the logo linkseRunTests() · modeToggleRunTests() · ltdRunTests() (pending — Ltd test suite to be added) · Next scheduled review: April 2027
All calculations are provided for illustrative purposes only and do not constitute financial or tax advice. Tax rules are complex and individual circumstances vary. Always verify with HMRC or a qualified professional before making financial decisions. Payslp is not regulated by the Financial Conduct Authority. Affiliate links elsewhere on this site are clearly disclosed and do not influence the calculations on this page.
Your data. Your rights. Plain English.
Last updated: 25 May 2026
The salary you enter into Payslp never leaves your browser. We collect minimal data, never sell your information, and comply with UK GDPR and the Data Protection Act 2018.
Payslp (payslp.com) is a free UK salary calculator and personal finance platform. For privacy enquiries contact contact@payslp.com.
The salary and deduction figures you enter into our calculator are processed entirely within your browser using JavaScript. They are never transmitted to our servers. We never receive them, never store them and never have access to them. Your financial information stays on your device.
We use two categories of cookies. Essential cookies store your accessibility preferences (dyslexia mode, ADHD mode etc.) locally in your browser — these are necessary for the site to function as you expect and do not require consent. Analytics cookies are set by Google Analytics to help us understand how people use Payslp so we can improve it. Analytics cookies are only placed after you accept them via the cookie banner. We do not use advertising cookies, tracking pixels or any form of behavioural advertising.
Payslp uses Google Analytics 4 (GA4), a web analytics service provided by Google LLC ("Google"), to collect anonymised information about how visitors use our site. Google Analytics uses cookies to collect this data. The following information is collected:
What Google Analytics does not collect: Your salary, any figures entered into the calculator, your name, email address or any personally identifying information. All calculator inputs are processed client-side in your browser only and are never transmitted to any server — including Google's.
IP anonymisation: We have enabled IP anonymisation in our Google Analytics configuration. Your IP address is truncated before any data is stored by Google, meaning your precise location cannot be determined from the data we collect.
Data processing: Google acts as a data processor on our behalf under a Data Processing Agreement that complies with UK GDPR requirements. Data collected via Google Analytics may be transferred to and stored on Google's servers in the United States. Google LLC is certified under the EU-US Data Privacy Framework. For full details of how Google uses this data, see Google's Privacy Policy and Google Analytics Terms of Service.
Legal basis: We process analytics data on the basis of your consent, given via the cookie banner when you first visit the site. You can withdraw consent at any time.
Opting out: You can prevent Google Analytics from collecting your data in several ways:
All salary data, tax figures, pension inputs, student loan details and any other figures you enter into Payslp's calculators are processed purely client-side in your browser using JavaScript. None of this data is ever transmitted to our servers, to Google, or to any third party. We have no technical means of accessing what you enter. This is verifiable — our full calculation code is published on the How We Work It Out page.
Affiliate and partner links — Payslp displays signposting links to third-party financial services providers. These are for informational purposes only and do not constitute financial advice or a personal recommendation. If you click a link and visit a third-party site, that site's own privacy policy applies from that point. We do not share your personal data with any affiliate or partner. Payslp may receive a commission or referral fee from providers if you apply for a product — this does not affect the price you pay or the information we display.
To exercise any of these rights email contact@payslp.com. We will respond within 30 days.
Email addresses retained until unsubscription. Analytics data retained for 26 months (Google Analytics default). We hold no salary data to retain.
We'll update this page when our practices change. The date at the top shows when it was last updated.
Straightforward terms written in plain English.
Last updated: May 2026
By using Payslp you agree to these terms. The short version: use our tools fairly, don't scrape our content, and understand that our calculators provide estimates — not financial advice.
Payslp is a free online salary calculator and personal finance information tool. It is provided for informational and educational purposes only. It is not a financial advisory service, tax advisory service or regulated financial product.
Payslp calculations are based on publicly available HMRC tax rates and government guidance. They are estimates only and are provided for illustrative and educational purposes. Your actual take-home pay may differ due to your specific tax code, employer arrangements, personal circumstances or other factors. Always verify with HMRC or a qualified professional before making significant financial decisions.
Payslp is not authorised or regulated by the Financial Conduct Authority (FCA). Nothing on this website constitutes financial, tax, investment or legal advice. The information provided does not take into account your individual circumstances and should not be relied upon as the basis for any financial decision.
Payslp displays signposting links to third-party financial services providers in the "Related services & information" section of the calculator. These links are for informational purposes only and do not constitute a recommendation, endorsement or personal advice in relation to any product or service. The information displayed in this section is tailored by income band to show contextually relevant topics — this tailoring is based solely on the salary entered and is not influenced by commercial relationships with any provider. Payslp may receive a commission or referral fee if you click a link and subsequently apply for or purchase a product. This arrangement never influences our calculations, our tax figures or the accuracy of our tools. All third-party products are subject to the terms and conditions of the relevant provider. Eligibility criteria, rates and terms are set entirely by those providers. You should independently assess whether any product is appropriate for your individual circumstances before applying — and where relevant seek regulated advice from a firm authorised by the FCA.
All content, design, code and calculators on payslp.com are owned by or licensed to Payslp. The Payslp name and logo are trademarks of Payslp. You may not use them without our written permission.
To the maximum extent permitted by English law, Payslp shall not be liable for any direct, indirect, incidental or consequential loss arising from your use of this website or reliance on its content. This includes but is not limited to financial decisions made based on our calculations.
These terms are governed by the laws of England and Wales. Any disputes shall be subject to the exclusive jurisdiction of the courts of England and Wales.
We may update these terms from time to time. Continued use of Payslp after changes are published constitutes acceptance of the updated terms.
Contact: contact@payslp.com
We read every message and aim to respond within 2 working days.
Whether you've spotted an error, have a feature suggestion, want to work with us, or just want to say hello — we'd love to hear from you.
If you believe our calculator has produced an incorrect result, please email contact@payslp.com with the salary figure and options you entered, and the result you received. We take accuracy very seriously and investigate every report.
Payslp reaches employed UK adults who are actively researching their income and financial options. If you're a financial services company, mortgage broker, pension provider, insurer or recruiter interested in reaching this audience, we'd love to hear from you. Email contact@payslp.com with details of what you're looking for.
We believe in full transparency about data. Here's everything you need to know.
Last updated: May 2026
Payslp is committed to full compliance with UK GDPR and the Data Protection Act 2018. We are registered with the Information Commissioner's Office (ICO).
Analytics data (Google Analytics): Legitimate interests — we have a legitimate interest in understanding how people use Payslp so we can improve it. This is balanced against users' rights and does not override them.
Email communications: Consent — we only email you if you have explicitly opted in. You can withdraw consent at any time by unsubscribing.
Calculator inputs: Not applicable — we never receive or process this data. It stays in your browser.
Google Analytics may transfer anonymised data to servers outside the UK. Google LLC is certified under the UK-US Data Bridge framework. We do not otherwise transfer personal data outside the UK.
To exercise any right email contact@payslp.com with the subject line "Data Rights Request". We will respond within 30 days at no charge. We may need to verify your identity before processing the request.
If you're unhappy with how we handle your data, you have the right to lodge a complaint with the Information Commissioner's Office (ICO) at ico.org.uk or by calling 0303 123 1113.
We'd always prefer to resolve any concerns directly first — please email contact@payslp.com and we'll do our best to help.
Essential cookies — required for the site to function. Cannot be disabled.
Analytics cookies — Google Analytics (_ga, _gid). Tracks anonymised page views and sessions. You can opt out at tools.google.com/dlpage/gaoptout.
We do not use advertising cookies, tracking pixels or third-party marketing cookies.
We'll update this page when our practices change. Check the date at the top. Significant changes will be highlighted.
Estimate your combined take-home when drawing an Armed Forces pension alongside new civilian employment. AFPS 15 / 05 / 75 best-estimate formulas based on MOD Discover My Benefits scheme rules. For exact figures including McCloud remedy choices, EDP lump sums and actuarial reductions, request a free Veterans UK pension forecast.
| Item | Annual | Monthly |
|---|
Add your pension scheme, years of service and new civilian salary to see your combined take-home.
Profession-specific calculators for NHS Agenda for Change, teachers and police. NHS pay bands 2026/27 verified against NHS Employers; NHS Pension tiered rates 2026/27 verified against NHS Business Services Authority. Teacher pay scales 2025/26 verified against STPCD. Police pay scales 2025/26 verified against Metropolitan Police Federation, with Police Pension Scheme 2026/27 tiered rates per Home Office Police Pensions Regulations 2026.
Your take-home pay will appear here.
Financial tools for life's biggest moments — when your income changes and you need clear numbers fast.
Your personalised breakdown will appear here.