{"id":9875,"date":"2025-10-13T10:44:57","date_gmt":"2025-10-13T10:44:57","guid":{"rendered":"https:\/\/qxaccounting.com\/uk\/?page_id=9875"},"modified":"2026-01-23T10:55:16","modified_gmt":"2026-01-23T10:55:16","slug":"corporation-tax-calculator","status":"publish","type":"page","link":"https:\/\/qxaccounting.com\/uk\/tools-for-accountants\/corporation-tax-calculator\/","title":{"rendered":"Corporation Tax Calculator for UK (2025\/26)"},"content":{"rendered":"              <section class=\"bannerstyle2\" style=\"min-height: 250px;\">\r\n                    <div class=\"container\">\r\n                    <div class=\"row d-flex align-items-start justify-content-between\">\r\n                    <div class=\"col-xxl-6 col-lg-7 d-flex flex-column align-items-start content\">\r\n                     <h1>Corporation Tax Calculator for UK (2025\/26)<\/h1>\n<p>Easily estimate how much corporation tax your limited company owes. Built for UK Businesses and Accounting firms.<\/p>\n                <\/div>\r\n                    <div class=\"col-lg-5 d-none d-lg-block align-self-baseline\"><div class=\"imagebox\">\r\n                        <img decoding=\"async\" src=\"https:\/\/qxaccounting.com\/uk\/wp-content\/uploads\/sites\/2\/2025\/10\/calculator.webp\" alt=\"\"><\/div><\/div>\r\n                    <\/div>\r\n                    <\/div>\r\n            <\/section>\r\n       \r\n\n\n\n<!DOCTYPE html> \n\n<html lang=\"en\"> \n\n<head> \n\n<meta charset=\"utf-8\" \/> \n\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" \/> \n\n<title>Corporation Tax Calculator for UK (2025\/26)<\/title> \n\n<style> \n\n  :root{ \n\n    \/* QX Accounting Services inspired palette (tweak if you have exact hex) *\/ \n\n    --qx-purple:#5b4bff;      \/* headings, links, icons *\/ \n\n    --qx-blue:#5568ff;        \/* primary CTA like \u201cBook a Call\u201d *\/ \n\n    --qx-blue-dark:#3f51ff;   \/* hover state *\/ \n\n    --qx-coral:#ff5a63;       \/* secondary CTA like \u201cMaximize Profits\u201d *\/ \n\n \n\n    --bg:#f7f8fc; \n\n    --card:#ffffff; \n\n    --text:#0f172a;           \/* near-navy body copy *\/ \n\n    --muted:#6b7280;          \/* subdued text *\/ \n\n    --border:#e6e8ef; \n\n    --shadow:0 8px 26px rgba(20, 31, 66, .08); \n\n    --radius:16px; \n\n  } \n\n  *{box-sizing:border-box} \n\n  body{margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;background:var(--bg);color:var(--text);line-height:1.6} \n\n  #btnnewk.container{max-width:980px;margin:auto;padding:24px} \n\n \n\n  \/* Hero, cards, layout *\/ \n\n  .hero{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:22px 20px;margin-bottom:14px;box-shadow:var(--shadow)} \n\n  .hero h1{margin:0 0 6px;font-size:clamp(20px,3vw,28px);color:var(--text)} \n\n  .hero p{margin:0;color:var(--muted)} \n\n \n\n  .card{background:var(--card);border-radius:14px;box-shadow:var(--shadow);padding:16px;border:1px solid var(--border)} \n\n  .section-title{display:flex;justify-content:space-between;align-items:center;margin:0 0 8px} \n\n  .link{color:var(--qx-purple);text-decoration:none;font-weight:600} \n\n  .link:hover{text-decoration:underline} \n\n \n\n  .grid{display:grid;gap:12px} \n\n  .grid-2{grid-template-columns:1fr 1fr} \n\n  .grid-3{grid-template-columns:repeat(3,1fr)} \n\n  @media(max-width:720px){.grid-2,.grid-3{grid-template-columns:1fr}} \n\n \n\n  \/* Inputs styled like QX site *\/ \n\n  label{font-weight:600;font-size:14px;display:block;margin-bottom:6px;color:var(--text)} \n\n  .help{font-size:12px;color:var(--muted);margin-top:4px} \n\n  .control{position:relative} \n\n  .control input{width:100%;padding:12px 12px 12px 30px;border:1px solid var(--border);border-radius:12px;font-size:15px;background:#fff;box-shadow:0 1px 0 rgba(10,10,10,.01)} \n\n  .control input:focus{outline:3px solid rgba(85,104,255,.15);border-color:var(--qx-blue)} \n\n  .control .prefix{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:#7a8a9a} \n\n \n\n  \/* CTA buttons to match pill style *\/ \n\n  .cta-row{display:flex;justify-content:flex-end;margin-top:12px} \n\n  #btnnewk .btn{background:var(--qx-blue);color:#fff;border:none;border-radius:999px;padding:12px 22px;font-weight:700;cursor:pointer;font-size:16px;box-shadow:0 8px 18px rgba(85,104,255,.28);transition:transform .04s ease, background .15s ease} \n\n #btnnewk .btn:hover{background:var(--qx-blue-dark)} \n\n #btnnewk .btn:active{transform:translateY(1px)} \n\n  #btnnewk .btn.secondary{background:#eef2ff;color:#1c2a38;border:1px solid var(--border);box-shadow:none;border-radius:12px} \n\n  #btnnewk .btn.coral{background:var(--qx-coral)} \n\n \n\n  .results .stat{display:flex;justify-content:space-between;align-items:center;padding:10px 0;border-bottom:1px dashed #e7edf3} \n\n  .results .stat:last-child{border-bottom:none} \n\n  .muted{color:var(--muted)} \n\n  .banner{background:#f3f6ff;border:1px solid var(--border);border-radius:12px;padding:14px} \n\n  .rates{display:grid;gap:12px} \n\n  @media(min-width:760px){ .rates{grid-template-columns:repeat(3,1fr)} } \n\n  .rate{background:#fff;border:1px solid var(--border);border-radius:12px;padding:14px} \n\n  .small{font-size:13px;color:var(--muted)} \n\n  .pill{display:inline-block;padding:4px 10px;border-radius:999px;background:#eef2ff;color:var(--qx-purple);font-weight:700;font-size:12px} \n\n  .tests{margin-top:16px} \n\n  table{width:100%;border-collapse:collapse} \n\n  th,td{border:1px solid #e7edf3;padding:8px;text-align:left} \n\n  th{background:#f3f6ff} \n\n  .pass{color:#0d8f50;font-weight:700} \n\n  .fail{color:#b7002c;font-weight:700} \n\n  .footer{margin-top:20px;text-align:center;color:var(--muted);font-size:13px} \n\n<\/style> \n\n<\/head> \n\n<body> \n\n  <div class=\"container\" id=\"btnnewk\"> \n \n\n    <!-- SIMPLE FORM like screenshot --> \n\n    <section class=\"card\" id=\"simpleCard\"> \n\n      <div class=\"section-title\"> \n\n        <h3 style=\"margin:0\">Limited Company Calculator<\/h3> \n\n        <a class=\"link\" href=\"#\" id=\"toggleAdvanced\">Show advanced calculator<\/a> \n\n      <\/div> \n\n      <div class=\"grid\"> \n\n        <div class=\"control\"> \n\n          <label for=\"revenue\">Annual revenue<\/label> \n\n          <span class=\"prefix\">\u00a3<\/span> \n\n          <input id=\"revenue\" type=\"number\" min=\"0\" placeholder=\"1\" \/> \n\n        <\/div> \n\n      <\/div> \n\n      <div class=\"grid grid-2\" style=\"margin-top:6px\"> \n\n        <div> \n\n          <div class=\"control\"><label for=\"salary1\">Gross salary 1<\/label><span class=\"prefix\">\u00a3<\/span><input id=\"salary1\" type=\"number\" min=\"0\" value=\"0\" \/><\/div> \n\n          <div class=\"help\">(exc employers NI)<\/div> \n\n        <\/div> \n\n        <div> \n\n          <div class=\"control\"><label for=\"salary3\">Gross salary 3<\/label><span class=\"prefix\">\u00a3<\/span><input id=\"salary3\" type=\"number\" min=\"0\" value=\"0\" \/><\/div> \n\n          <div class=\"help\">(exc employers NI)<\/div> \n\n        <\/div> \n\n        <div> \n\n          <div class=\"control\"><label for=\"salary2\">Gross salary 2<\/label><span class=\"prefix\">\u00a3<\/span><input id=\"salary2\" type=\"number\" min=\"0\" value=\"0\" \/><\/div> \n\n          <div class=\"help\">(exc employers NI)<\/div> \n\n        <\/div> \n\n        <div> \n\n          <div class=\"control\"><label for=\"salary4\">Gross salary 4<\/label><span class=\"prefix\">\u00a3<\/span><input id=\"salary4\" type=\"number\" min=\"0\" value=\"0\" \/><\/div> \n\n          <div class=\"help\">(exc employers NI)<\/div> \n\n        <\/div> \n\n      <\/div> \n\n      <div class=\"grid\" style=\"margin-top:6px\"> \n\n        <div class=\"control\"><label for=\"expenses\">Annual expenses<\/label><span class=\"prefix\">\u00a3<\/span><input id=\"expenses\" type=\"number\" min=\"0\" value=\"3000\" \/><\/div> \n\n        <div class=\"control\"><label for=\"pensions\">Annual pension contributions<\/label><span class=\"prefix\">\u00a3<\/span><input id=\"pensions\" type=\"number\" min=\"0\" value=\"0\" \/><\/div> \n\n      <\/div> \n\n      <div class=\"cta-row\"> \n\n        <button class=\"btn\" id=\"calcBtnSimple\">Calculate<\/button> \n\n      <\/div> \n\n    <\/section> \n\n \n\n    <!-- ADVANCED (optional extra controls used by tax calc) --> \n\n    <section class=\"card\" id=\"advancedCard\" style=\"display:none\"> \n\n      <div class=\"section-title\"> \n\n        <h3 style=\"margin:0\">Advanced calculator<\/h3> \n\n        <a class=\"link\" href=\"#\" id=\"toggleSimple\">Hide advanced calculator<\/a> \n\n      <\/div> \n\n      <div class=\"grid grid-2\"> \n\n        <div class=\"control\"><label for=\"associated\">Number of associated companies<\/label><input id=\"associated\" type=\"number\" min=\"1\" step=\"1\" value=\"1\" \/><\/div> \n\n        <div class=\"control\"><label for=\"periodMonths\">Accounting period length (months)<\/label><input id=\"periodMonths\" type=\"number\" min=\"1\" max=\"12\" step=\"1\" value=\"12\" \/><\/div> \n\n      <\/div> \n\n      <div class=\"banner\" style=\"margin-top:8px\"> \n\n        You can also override directly by entering <strong>Net Profit<\/strong> and <strong>Allowable Expenses<\/strong> if required. \n\n        <div class=\"grid grid-2\" style=\"margin-top:8px\"> \n\n          <div class=\"control\"><label for=\"netProfit\">Net Profit override<\/label><span class=\"prefix\">\u00a3<\/span><input id=\"netProfit\" type=\"number\" min=\"0\" placeholder=\"e.g. 100000\" \/><\/div> \n\n          <div class=\"control\"><label for=\"allowable\">Allowable expenses override<\/label><span class=\"prefix\">\u00a3<\/span><input id=\"allowable\" type=\"number\" min=\"0\" value=\"0\" \/><\/div> \n\n        <\/div> \n\n      <\/div> \n\n      <div class=\"cta-row\"><button class=\"btn\" id=\"calcBtnAdvanced\">Calculate<\/button><\/div> \n\n    <\/section> \n\n \n\n    <!-- RESULTS --> \n\n    <section class=\"card results\" id=\"resultsCard\" aria-live=\"polite\"> \n\n      <h3 style=\"margin-top:0\">Your results<\/h3> \n\n      <div id=\"emptyState\" class=\"muted\">Enter your figures and select Calculate to see a full breakdown.<\/div> \n\n      <div id=\"results\" style=\"display:none\"> \n\n        <div class=\"stat\"><span>Taxable profit<\/span><span id=\"txProfit\">\u00a30<\/span><\/div> \n\n        <div class=\"stat\"><span>Band applied<\/span><span id=\"band\">\u2014<\/span><\/div> \n\n        <div class=\"stat\"><span>Corporation tax due<\/span><span id=\"taxDue\">\u00a30<\/span><\/div> \n\n        <div class=\"stat\"><span>Effective tax rate<\/span><span id=\"effRate\">0%<\/span><\/div> \n\n        <div class=\"stat\"><span>Thresholds used<\/span><span id=\"limits\">\u00a30 \/ \u00a30<\/span><\/div> \n\n        <div id=\"mrBlock\" class=\"banner\" style=\"display:none;margin-top:10px\"><\/div> \n\n      <\/div> \n\n    <\/section> \n\n \n\n    <!-- How to calculate --> \n\n    <section class=\"card\" style=\"margin-top:12px\"> \n\n      <div class=\"banner\"> \n\n        <h3>How to Calculate Corporation Tax<\/h3> \n\n        <ol> \n\n          <li>Enter revenue, salaries, expenses and pension contributions to estimate Taxable Profit.<\/li> \n\n          <li>We adjust the lower and upper limits for associated companies and period length.<\/li> \n\n          <li>We apply Small Profits Rate, Main Rate, or marginal relief automatically.<\/li> \n\n        <\/ol> \n\n        <p class=\"muted\"><strong>Formula (simplified):<\/strong> Taxable Profit = Revenue \u2212 Salaries \u2212 Expenses \u2212 Pension Contributions. Corporation Tax is then calculated at the correct rate with marginal relief where applicable.<\/p> \n\n        <p class=\"muted\"><strong>Example:<\/strong> \u00a3100,000 profit at a 25 percent rate equals \u00a325,000 tax.<\/p> \n\n      <\/div> \n\n    <\/section> \n\n \n\n    <!-- Current rates --> \n\n    <section class=\"card\" style=\"margin-top:12px\"> \n\n      <h3>Current UK Corporation Tax Rates (2025\/26)<\/h3> \n\n      <div class=\"rates\"> \n\n        <div class=\"rate\"> \n\n          <h4>Small Profits Rate<\/h4> \n\n          <div>19 percent on profits up to the lower limit.<\/div> \n\n          <div class=\"small\">Lower limit is \u00a350,000 for a 12 month period with one company. It scales by the number of associated companies and by period length.<\/div> \n\n        <\/div> \n\n        <div class=\"rate\"> \n\n          <h4>Marginal Relief<\/h4> \n\n          <div>Applied on the slice between the lower and upper limits to taper effective rate smoothly.<\/div> \n\n          <div class=\"small\">Gives a marginal rate of 26.5 percent on that slice. Effective overall rate rises from 19 percent to 25 percent as profit increases.<\/div> \n\n        <\/div> \n\n        <div class=\"rate\"> \n\n          <h4>Main Rate<\/h4> \n\n          <div>25 percent on profits at or above the upper limit.<\/div> \n\n          <div class=\"small\">Upper limit is \u00a3250,000 for a 12 month period with one company. It scales by the number of associated companies and by period length.<\/div> \n\n        <\/div> \n\n      <\/div> \n\n    <\/section> \n\n \n\n    <!-- Tests --> \n\n    <section class=\"card tests\"> \n\n      <h3>Automated test cases<\/h3> \n\n      <p class=\"muted\">Figures are rounded to the nearest pound for display, tolerance \u00b11.<\/p> \n\n      <div style=\"display:flex;gap:10px;align-items:center\"><button id=\"runTests\" class=\"btn secondary\" type=\"button\">Run tests<\/button><span id=\"testBadge\" class=\"pill\" style=\"display:none\"><\/span><\/div> \n\n      <div style=\"margin-top:8px\"><table id=\"testTable\"><thead><tr><th>#<\/th><th>Case<\/th><th>Expected tax<\/th><th>Actual tax<\/th><th>Expected band contains<\/th><th>Actual band<\/th><th>Status<\/th><\/tr><\/thead><tbody><\/tbody><\/table><\/div> \n\n    <\/section> \n\n \n\n    <div class=\"footer\">This tool provides an estimate for guidance only and is not tax advice.<\/div> \n\n  <\/div> \n\n \n\n<script> \n\n(function(){ \n\n  'use strict'; \n\n  \/\/ Formatters \n\n  const formatCurrency = (n)=> new Intl.NumberFormat('en-GB',{style:'currency',currency:'GBP',maximumFractionDigits:0}).format(n||0); \n\n  const formatPercent = (n)=> (n*100).toFixed(2).replace(\/\\.00$\/,'') + '%'; \n\n \n\n  \/\/ Core calculation \n\n  function calcCorpTax(params){ \n\n    const associated = Math.max(1, Math.floor(Number(params.associated||1))); \n\n    const months = Math.max(1, Math.min(12, Number(params.months||12))); \n\n \n\n    \/\/ Either accept explicit taxable profit inputs, or derive from revenue model \n\n    let netProfit = Number(params.netProfit||0); \n\n    let allowable = Number(params.allowable||0); \n\n \n\n    \/\/ If revenue present, derive taxable as revenue - salaries - expenses - pensions \n\n    if(Number(params.revenue||0) > 0 || (params.salaries && params.salaries.length)){ \n\n      const revenue = Math.max(0, Number(params.revenue||0)); \n\n      const salaries = (params.salaries||[]).map(Number).reduce((a,b)=>a + Math.max(0,b||0), 0); \n\n      const expenses = Math.max(0, Number(params.expenses||0)); \n\n      const pensions = Math.max(0, Number(params.pensions||0)); \n\n      \/\/ Treat salaries, expenses, pensions as allowable business costs in this simplified model \n\n      netProfit = Math.max(0, revenue - expenses - salaries - pensions); \n\n      allowable = 0; \n\n    } \n\n \n\n    const taxable = Math.max(0, netProfit - Math.max(0,allowable)); \n\n \n\n    const SPR = 0.19;            \/\/ Small Profits Rate \n\n    const MR_SLICE_RATE = 0.265; \/\/ Marginal rate on the slice \n\n    const MAIN = 0.25;           \/\/ Main rate \n\n \n\n    const baseLL = 50000;        \/\/ 12m, single company \n\n    const baseUL = 250000; \n\n    const periodFactor = months \/ 12; \n\n    const adjLL = (baseLL * periodFactor) \/ associated; \n\n    const adjUL = (baseUL * periodFactor) \/ associated; \n\n \n\n    let tax = 0; let bandText = ''; let mrText = ''; \n\n    if(taxable <= 0){ bandText = 'No tax as taxable profit is zero'; tax = 0; } \n\n    else if(taxable <= adjLL){ tax = taxable * SPR; bandText = 'Small Profits Rate (19%)'; } \n\n    else if(taxable >= adjUL){ tax = taxable * MAIN; bandText = 'Main Rate (25%)'; } \n\n    else { const slice = taxable - adjLL; tax = (adjLL*SPR) + (slice*MR_SLICE_RATE); bandText = 'Marginal relief zone'; mrText = 'Slice taxed at 26.5%. Limits: ' + formatCurrency(adjLL) + ' to ' + formatCurrency(adjUL) + '.'; tax = Math.min(tax, taxable*MAIN); } \n\n \n\n    const eff = taxable>0 ? tax\/taxable : 0; \n\n    return {taxable, taxRounded:Math.round(tax), eff, bandText, mrText, adjLL, adjUL}; \n\n  } \n\n \n\n  \/\/ Elements \n\n  const els = { \n\n    \/\/ simple \n\n    revenue: document.getElementById('revenue'), \n\n    s1: document.getElementById('salary1'), s2: document.getElementById('salary2'), s3: document.getElementById('salary3'), s4: document.getElementById('salary4'), \n\n    expenses: document.getElementById('expenses'), \n\n    pensions: document.getElementById('pensions'), \n\n    calcSimple: document.getElementById('calcBtnSimple'), \n\n    \/\/ advanced \n\n    associated: document.getElementById('associated'), \n\n    months: document.getElementById('periodMonths'), \n\n    netProfit: document.getElementById('netProfit'), \n\n    allowable: document.getElementById('allowable'), \n\n    calcAdvanced: document.getElementById('calcBtnAdvanced'), \n\n    \/\/ results \n\n    empty: document.getElementById('emptyState'), \n\n    resWrap: document.getElementById('results'), \n\n    txProfit: document.getElementById('txProfit'), \n\n    band: document.getElementById('band'), \n\n    taxDue: document.getElementById('taxDue'), \n\n    effRate: document.getElementById('effRate'), \n\n    mrBlock: document.getElementById('mrBlock'), \n\n    limits: document.getElementById('limits'), \n\n    \/\/ toggles \n\n    simpleCard: document.getElementById('simpleCard'), \n\n    advancedCard: document.getElementById('advancedCard'), \n\n    toggleAdvanced: document.getElementById('toggleAdvanced'), \n\n    toggleSimple: document.getElementById('toggleSimple'), \n\n    \/\/ tests \n\n    runTests: document.getElementById('runTests'), testBadge: document.getElementById('testBadge'), testTable: document.getElementById('testTable').querySelector('tbody') \n\n  }; \n\n \n\n  function render(model){ \n\n    els.empty.style.display='none'; \n\n    els.resWrap.style.display='block'; \n\n    els.txProfit.textContent = formatCurrency(model.taxable); \n\n    els.taxDue.textContent = formatCurrency(model.taxRounded); \n\n    els.effRate.textContent = formatPercent(model.eff); \n\n    els.band.textContent = model.bandText; \n\n    els.limits.textContent = formatCurrency(model.adjLL) + ' \/ ' + formatCurrency(model.adjUL); \n\n    if(model.mrText){ els.mrBlock.style.display='block'; els.mrBlock.textContent = model.mrText; } else { els.mrBlock.style.display='none'; els.mrBlock.textContent=''; } \n\n  } \n\n \n\n  function calculateFromSimple(){ \n\n    const salaries = [els.s1.value, els.s2.value, els.s3.value, els.s4.value].map(Number); \n\n    const model = calcCorpTax({ \n\n      revenue: els.revenue.value, \n\n      salaries: salaries, \n\n      expenses: els.expenses.value, \n\n      pensions: els.pensions.value, \n\n      associated: els.associated.value || 1, \n\n      months: els.months.value || 12 \n\n    }); \n\n    render(model); \n\n  } \n\n \n\n  function calculateFromAdvanced(){ \n\n    const model = calcCorpTax({ \n\n      netProfit: els.netProfit.value, \n\n      allowable: els.allowable.value, \n\n      associated: els.associated.value, \n\n      months: els.months.value \n\n    }); \n\n    render(model); \n\n  } \n\n \n\n  \/\/ Events \n\n  els.calcSimple.addEventListener('click', calculateFromSimple); \n\n  els.calcAdvanced.addEventListener('click', calculateFromAdvanced); \n\n  [els.revenue, els.s1, els.s2, els.s3, els.s4, els.expenses, els.pensions, els.netProfit, els.allowable, els.months, els.associated].forEach(function(node){ \n\n    if(node){ node.addEventListener('keydown', function(e){ if(e.key==='Enter'){ e.preventDefault(); (node.id==='netProfit'||node.id==='allowable') ? calculateFromAdvanced() : calculateFromSimple(); } }); } \n\n  }); \n\n \n\n  els.toggleAdvanced.addEventListener('click', function(e){ e.preventDefault(); els.advancedCard.style.display='block'; els.toggleAdvanced.textContent=''; els.simpleCard.scrollIntoView({behavior:'smooth'}); }); \n\n  els.toggleSimple.addEventListener('click', function(e){ e.preventDefault(); els.advancedCard.style.display='none'; }); \n\n \n\n  \/\/ Tests \n\n  function approxEqual(a,b,tol){ return Math.abs(a-b) <= (tol==null?1:tol); } \n\n  function runTests(){ \n\n    const cases = [ \n\n      {name:'Zero profit -> zero tax', input:{netProfit:0,allowable:0,months:12,associated:1}, expect:{tax:0, bandContains:'No tax'}}, \n\n      {name:'SPR at \u00a340,000', input:{netProfit:40000,allowable:0,months:12,associated:1}, expect:{tax:40000*0.19, bandContains:'Small Profits'}}, \n\n      {name:'Main rate at upper limit \u00a3250,000', input:{netProfit:250000,allowable:0,months:12,associated:1}, expect:{tax:250000*0.25, bandContains:'Main Rate'}}, \n\n      {name:'Marginal relief at \u00a3100,000', input:{netProfit:100000,allowable:0,months:12,associated:1}, expect:{tax:(50000*0.19)+(50000*0.265), bandContains:'Marginal'}}, \n\n      {name:'Associated companies = 5, profit \u00a340,000', input:{netProfit:40000,allowable:0,months:12,associated:5}, expect:{tax:(10000*0.19)+(30000*0.265), bandContains:'Marginal'}}, \n\n      {name:'Half-year, profit \u00a320,000 -> SPR', input:{netProfit:20000,allowable:0,months:6,associated:1}, expect:{tax:20000*0.19, bandContains:'Small Profits'}}, \n\n      {name:'Revenue model sanity: \u00a3200k rev, \u00a3120k salaries, \u00a330k expenses, \u00a310k pensions', input:{revenue:200000, salaries:[120000], expenses:30000, pensions:10000, months:12, associated:1}, expect:{taxable:40000, bandContains:'Small Profits'}} \n\n    ]; \n\n \n\n    els.testTable.innerHTML = ''; \n\n    let allPass = true; let idx = 0; \n\n    cases.forEach(function(tc){ \n\n      const res = calcCorpTax(tc.input); \n\n      const taxActual = res.taxRounded; \n\n      const bandActual = res.bandText; \n\n      const expTax = tc.expect.tax!=null? Math.round(tc.expect.tax) : null; \n\n      const pass = (expTax==null || approxEqual(taxActual, expTax, 1)) && bandActual.indexOf(tc.expect.bandContains)!==-1 && (tc.expect.taxable==null || approxEqual(Math.round(res.taxable), tc.expect.taxable, 1)); \n\n      if(!pass) allPass = false; \n\n      const tr = document.createElement('tr'); \n\n      tr.innerHTML = '<td>'+ (++idx) +'<\/td>'+ \n\n                     '<td>'+ tc.name +'<\/td>'+ \n\n                     '<td>'+ (expTax!=null? formatCurrency(expTax): '\u2014') +'<\/td>'+ \n\n                     '<td>'+ formatCurrency(taxActual) +'<\/td>'+ \n\n                     '<td>'+ tc.expect.bandContains +'<\/td>'+ \n\n                     '<td>'+ bandActual +'<\/td>'+ \n\n                     '<td class=\"'+ (pass?'pass':'fail') +'\">'+ (pass?'PASS':'FAIL') +'<\/td>'; \n\n      els.testTable.appendChild(tr); \n\n    }); \n\n \n\n    els.testBadge.style.display = 'inline-block'; \n\n    els.testBadge.textContent = allPass ? 'All tests passed' : 'Some tests failed'; \n\n  } \n\n  document.getElementById('runTests').addEventListener('click', runTests); \n\n})(); \n\n<\/script> \n\n<\/body> \n\n<\/html>\n\n\n<section class=\"cussto-ctabox calculator-cta\">\r\n<div class=\"container\">\r\n<div class=\"row justify-content-center text-start text-sm-center\">\r\n<div class=\"col-lg-9 col-xxl-8 position-relative z-1\">\r\n    <h3>Your Next Move Starts Here<\/h3>\n<p>Book a short call to explore how our specialist teams can help you turn these results into stronger outcomes for your clients and your firm.<\/p>\n<div class=\"bookmytime gap-4 flex-column flex-sm-row text-start d-flex mx-auto\">\r\n<div class=\"photobox\">\r\n  <div class=\"photo\">\r\n    <img decoding=\"async\" src=\"https:\/\/qxaccounting.com\/uk\/wp-content\/uploads\/sites\/2\/2025\/10\/Swati-Yadav.webp\" alt=\"\">\r\n<\/div>\r\n<a target=\"_blank\" href=\"https:\/\/www.linkedin.com\/in\/sy05\/\" class=\"linkedin\"><img decoding=\"async\" src=\"https:\/\/qxaccounting.com\/uk\/wp-content\/themes\/qxaccount\/assets\/images\/common\/Linkedin.png\" alt=\"\"><\/a><\/div>\r\n<div class=\"d-flex flex-column align-items-start\">\r\n<h5>Swati Yadav<\/h5>\r\n<h6>Business Development Manager QXAS<\/h6>\r\n  <a target=\"_blank\" href=\"https:\/\/meetings.hubspot.com\/swati-yadav\">Book My Time <i><img decoding=\"async\" src=\"https:\/\/qxaccounting.com\/uk\/wp-content\/themes\/qxaccount\/assets\/images\/SVG\/calendar_month_30.svg\" alt=\"\"><\/i>\r\n<\/a> <\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/section>\r\n","protected":false},"excerpt":{"rendered":"<p>Corporation Tax Calculator for UK (2025\/26) Limited Company Calculator Show advanced calculator Annual revenue \u00a3 Gross salary 1\u00a3 (exc employers NI) Gross salary 3\u00a3 (exc employers NI) Gross salary 2\u00a3 (exc employers NI) Gross salary 4\u00a3 (exc employers NI) Annual expenses\u00a3 Annual pension contributions\u00a3 Calculate Advanced calculator Hide advanced calculator Number of associated companies Accounting [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":9880,"parent":9868,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"template\/home-new.php","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-9875","page","type-page","status-publish","has-post-thumbnail","hentry"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/qxaccounting.com\/uk\/wp-json\/wp\/v2\/pages\/9875","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/qxaccounting.com\/uk\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/qxaccounting.com\/uk\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/qxaccounting.com\/uk\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/qxaccounting.com\/uk\/wp-json\/wp\/v2\/comments?post=9875"}],"version-history":[{"count":0,"href":"https:\/\/qxaccounting.com\/uk\/wp-json\/wp\/v2\/pages\/9875\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/qxaccounting.com\/uk\/wp-json\/wp\/v2\/pages\/9868"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/qxaccounting.com\/uk\/wp-json\/wp\/v2\/media\/9880"}],"wp:attachment":[{"href":"https:\/\/qxaccounting.com\/uk\/wp-json\/wp\/v2\/media?parent=9875"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}