Contract Rate Calculator Uk

Contract Rate Calculator UK (Inside vs Outside IR35) :root { –uk-primary: #002D62; –uk-secondary: #C8102E; –bg-light: #f4f7f6; –text-dark: #333; –border-radius: 8px; } body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; line-height: 1.6; color: var(–text-dark); margin: 0; padding: 20px; background-color: #f9f9f9; } .calculator-container { max-width: 800px; margin: 0 auto; background: #fff; padding: 30px; border-radius: var(–border-radius); box-shadow: 0 4px 15px rgba(0,0,0,0.1); border-top: 5px solid var(–uk-primary); } h1, h2, h3 { color: var(–uk-primary); } .input-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-bottom: 25px; } @media (max-width: 600px) { .input-grid { grid-template-columns: 1fr; } } .form-group { margin-bottom: 15px; } label { display: block; margin-bottom: 8px; font-weight: 600; font-size: 0.95rem; } input, select { width: 100%; padding: 12px; border: 1px solid #ddd; border-radius: 4px; font-size: 1rem; box-sizing: border-box; } input:focus, select:focus { outline: none; border-color: var(–uk-primary); box-shadow: 0 0 0 2px rgba(0,45,98,0.1); } .currency-input { position: relative; } .currency-input::before { content: "£"; position: absolute; left: 12px; top: 50%; transform: translateY(-50%); color: #666; font-weight: bold; } .currency-input input { padding-left: 30px; } button.calc-btn { background-color: var(–uk-secondary); color: white; border: none; padding: 15px 30px; font-size: 1.1rem; font-weight: bold; border-radius: 4px; cursor: pointer; width: 100%; transition: background 0.2s; } button.calc-btn:hover { background-color: #a00d25; } #results-area { margin-top: 30px; background-color: var(–bg-light); padding: 25px; border-radius: var(–border-radius); display: none; } .result-row { display: flex; justify-content: space-between; align-items: center; padding: 12px 0; border-bottom: 1px solid #e0e0e0; } .result-row:last-child { border-bottom: none; } .result-label { color: #555; font-weight: 500; } .result-value { font-weight: 700; font-size: 1.1rem; color: var(–uk-primary); } .highlight-result { background-color: #e3f2fd; padding: 15px; border-radius: 4px; margin-top: 10px; border-left: 4px solid var(–uk-primary); } .highlight-result .result-value { color: var(–uk-secondary); font-size: 1.4rem; } .article-content { max-width: 800px; margin: 40px auto; line-height: 1.8; color: #444; } .article-content h2 { margin-top: 30px; border-bottom: 2px solid #eee; padding-bottom: 10px; } .article-content ul { padding-left: 20px; } .article-content li { margin-bottom: 10px; } .disclaimer { font-size: 0.85rem; color: #777; margin-top: 20px; font-style: italic; border-top: 1px solid #eee; padding-top: 15px; }

UK Contract Rate Calculator

Estimate your take-home pay based on your hourly or daily rate, accounting for IR35 status and UK tax bands (2024/25).

Hourly Rate (£) Daily Rate (£)
Standard UK week is 37.5 or 40
Account for holidays/gaps (Standard: 46-48)
Outside IR35 (Limited Co) Inside IR35 (Umbrella/PAYE)
Travel, equipment, accountancy fees

Estimated Financial Breakdown (Annual)

Gross Contract Revenue: £0.00
Umbrella Deductions (Employer NI, App Levy, Margin): -£0.00
Gross Taxable Salary: £0.00
Corporation Tax (Est.): -£0.00
Available for Dividends/Salary: £0.00
Personal Income Tax: -£0.00
Employee National Insurance: -£0.00
Dividend Tax (Outside IR35 only): -£0.00
Estimated Annual Net Pay: £0.00
Estimated Monthly Net Pay: £0.00
Effective Tax Rate: 0%

Understanding Your Contract Rate & Tax Liability

Contracting in the UK offers flexibility and potentially higher gross income compared to permanent employment. However, calculating your actual take-home pay requires navigating the complexities of UK tax law, specifically the distinction between Inside IR35 and Outside IR35 engagements. This calculator helps convert your hourly or daily rate into realistic net earnings.

Inside IR35 vs Outside IR35

Outside IR35 (Limited Company): If your contract is deemed "Outside IR35," you operate as a genuine business. You can pay yourself a small salary (usually up to the Personal Allowance threshold) and take the rest of your income as dividends, which are taxed at lower rates. You can also deduct legitimate business expenses before calculating Corporation Tax.

Inside IR35 (Umbrella/PAYE): If your role is "Inside IR35," you are treated as a "disguised employee" for tax purposes. The fee payer (usually the recruitment agency or client) must deduct PAYE tax and National Insurance at source. Furthermore, the "Employer" National Insurance contributions (approx. 13.8%) and Apprenticeship Levy (0.5%) are often deducted from your agreed daily rate before your gross taxable salary is even calculated. This can significantly reduce retention rates compared to limited company contractors.

Key Factors Used in This Calculation

  • Personal Allowance: Currently £12,570 (2024/25 tax year). Income up to this amount is generally tax-free.
  • Abatement: The Personal Allowance is reduced by £1 for every £2 of adjusted net income over £100,000.
  • Corporation Tax: For Outside IR35, profits are taxed at 19% (small profits) up to 25% (profits over £250k), with marginal relief in between.
  • Dividend Tax: Dividends are taxed at 8.75% (Basic), 33.75% (Higher), and 39.35% (Additional).

Why Daily Rates Vary

Because of the extra tax burden associated with Inside IR35 contracts, many contractors negotiate a higher daily rate (typically 20-30% higher) for Inside roles to match the net take-home pay of an equivalent Outside IR35 role. Use this calculator to compare different rate offers and understand your bottom line.

Disclaimer: This tool provides an estimate based on 2024/25 UK tax bands. It simplifies complex accounting rules (such as VAT, flat rate schemes, and specific pension contributions). It does not constitute financial advice. For accurate tax planning, please consult a qualified accountant or umbrella company.
function calculateContractPay() { // 1. Get Inputs var rateType = document.getElementById("rateType").value; var rawRate = parseFloat(document.getElementById("contractRate").value); var hoursPerWeek = parseFloat(document.getElementById("workVolume").value); var weeksPerYear = parseFloat(document.getElementById("weeksPerYear").value); var ir35Status = document.getElementById("ir35Status").value; var monthlyExpenses = parseFloat(document.getElementById("expenses").value); // Validation if (isNaN(rawRate) || rawRate 100000) { var reduction = (taxableIncome – 100000) / 2; adjustedPA = Math.max(0, personalAllowance – reduction); } var taxable = Math.max(0, taxableIncome – adjustedPA); var tax = 0; // Bands relative to 0 after PA is removed? No, UK bands are cumulative. // Taxable income (salary) sits in bands. // Band 1: PA to 50270 (Basic 20%) // Band 2: 50270 to 125140 (Higher 40%) // Band 3: 125140+ (Additional 45%) // Logic with Floating PA is tricky. simpler method: // Calculate total tax on income. // 1. Basic Rate Band Width var basicBandWidth = 37700; // 50270 – 12570 // If PA is reduced, the basic band effectively starts earlier (relative to 0) or stays same size? // Actually: The threshold for higher rate stays at 50,270 usually. // If PA is 0 (income > 125k), you pay 20% on 0-37700, 40% on 37700-125140. var t = 0; // Income up to adjustedPA is 0%. var rem = taxableIncome – adjustedPA; if (rem 0) { var inHigher = Math.min(rem, higherBandWidth); t += inHigher * 0.40; rem -= inHigher; } // Additional Rate (45%) if (rem > 0) { t += rem * 0.45; } return t; } function calcEmployeeNI(salary) { // 2024 cuts: 8% between 12570 and 50270, 2% above. if (salary 50270) { ni += (salary – 50270) * 0.02; } return ni; } // 3. Calculation Logic if (ir35Status === 'inside') { // INSIDE IR35 LOGIC // Gross Revenue is the "Assignment Rate" paid to Umbrella. // Deductions: // 1. Umbrella Margin (Assume £25/week = £1200/yr) var margin = 25 * weeksPerYear; // 2. Employer NI (13.8%) and App Levy (0.5%) // These are calculated on the "Gross Pay" which is unknown yet. // Formula: AssignmentRate = GrossPay + EmployerCosts + Margin // EmployerCosts = (GrossPay – SecondaryThreshold)*13.8% + GrossPay*0.5% // This is complex. Approximation: // Deduct margin first. var revenuePostMargin = annualRevenue – margin; // Approx Employer Burden ~ 12.5% of total remaining revenue (since ER NI has a threshold). // Let's use a rough factor: GrossSalary = RevenuePostMargin / 1.15 // More precise: // Cost = (Gross * 0.138) + (Gross * 0.005) = Gross * 0.143 (ignoring threshold for simplicity provides safer estimate). // RevenuePostMargin = Gross + (Gross * 0.143) = Gross * 1.143 var grossSalary = revenuePostMargin / 1.143; var employerCosts = revenuePostMargin – grossSalary; // Expenses usually not allowed inside IR35 displayUmbrellaCosts = employerCosts + margin; displayGrossSalary = grossSalary; displayIncomeTax = calcIncomeTax(grossSalary); displayNI = calcEmployeeNI(grossSalary); netAnnual = grossSalary – displayIncomeTax – displayNI; } else { // OUTSIDE IR35 LOGIC // Revenue – Expenses var taxableProfit = annualRevenue – annualExpenses; // Strategy: Salary up to Secondary Threshold (approx £9100) or PA (£12570). // Tax efficient standard: Salary = £12,570 (No Income Tax, minimal NI). // Note: Employers NI allowance might apply, but let's assume worst case (single director) -> ER NI payable on salary > £9100. // Let's assume Salary = £12,570. // ER NI on 12570: (12570 – 9100) * 13.8% = ~£478. var salary = 12570; var erNI = 480; // approximate if (taxableProfit < salary + erNI) { // Low income case salary = taxableProfit; erNI = 0; } var profitAfterSalary = taxableProfit – salary – erNI; // Corp Tax // 250k = 25%. var corpTaxRate = 0.19; if (profitAfterSalary > 50000) { // Marginal relief is complex. Let's use simplified bands. if (profitAfterSalary > 250000) corpTaxRate = 0.25; else corpTaxRate = 0.22; // Blended estimate } var corpTax = Math.max(0, profitAfterSalary * corpTaxRate); var dividends = Math.max(0, profitAfterSalary – corpTax); displayCorpTax = corpTax; displayAvailableDist = dividends; // Dividends + Salary is total specific, but this field is pure dividends available. // Personal Tax on Salary + Dividends // Salary consumes PA (£12570). Tax = 0. // Dividends start taxing immediately after PA. // Dividend Allowance: £500 (2024/25). var divTax = 0; var taxableDivs = dividends – 500; // £500 allowance if (taxableDivs > 0) { // Total Income = 12570 + dividends. // Basic Band for divs: Up to 50270 total income. // Remaining Basic Band = 50270 – 12570 = 37700. var remBasic = 37700; var inBasic = Math.min(taxableDivs, remBasic); divTax += inBasic * 0.0875; var remDivs = taxableDivs – inBasic; // Higher Band // 50270 to 125140. Width = 74870. if (remDivs > 0) { var remHigher = 74870; var inHigher = Math.min(remDivs, remHigher); divTax += inHigher * 0.3375; remDivs -= inHigher; } // Additional Band if (remDivs > 0) { divTax += remDivs * 0.3935; } } displayDivTax = divTax; displayIncomeTax = 0; // Covered by salary within PA displayNI = 0; // Salary usually set to avoid NI or covered by EA netAnnual = salary + dividends – divTax; } // 4. Update UI document.getElementById("results-area").style.display = "block"; document.getElementById("resGrossRevenue").innerText = formatCurrency(annualRevenue); document.getElementById("resNetAnnual").innerText = formatCurrency(netAnnual); document.getElementById("resNetMonthly").innerText = formatCurrency(netAnnual / 12); var retention = (netAnnual / annualRevenue) * 100; document.getElementById("resRetention").innerText = retention.toFixed(1) + "%"; // Show/Hide specific sections if (ir35Status === 'inside') { document.getElementById("inside-breakdown").style.display = "block"; document.getElementById("outside-breakdown").style.display = "none"; document.getElementById("resUmbrellaCosts").innerText = "-" + formatCurrency(displayUmbrellaCosts); document.getElementById("resGrossSalary").innerText = formatCurrency(displayGrossSalary); document.getElementById("resIncomeTax").innerText = "-" + formatCurrency(displayIncomeTax); document.getElementById("resNI").innerText = "-" + formatCurrency(displayNI); document.getElementById("resDivTax").parentNode.style.display = "none"; // Hide div tax row } else { document.getElementById("inside-breakdown").style.display = "none"; document.getElementById("outside-breakdown").style.display = "block"; document.getElementById("resCorpTax").innerText = "-" + formatCurrency(displayCorpTax); document.getElementById("resAvailableDist").innerText = formatCurrency(displayAvailableDist); document.getElementById("resIncomeTax").innerText = "£0.00 (Salary within PA)"; document.getElementById("resNI").innerText = "£0.00"; document.getElementById("resDivTax").parentNode.style.display = "flex"; document.getElementById("resDivTax").innerText = "-" + formatCurrency(displayDivTax); } } function formatCurrency(num) { return "£" + num.toLocaleString('en-GB', {minimumFractionDigits: 2, maximumFractionDigits: 2}); }

Leave a Comment