Ir35 Calculator Day Rate

IR35 Take-Home Pay Calculator

Compare Inside vs. Outside IR35 net income based on your day rate.

Outside IR35 (LTD)

Operating via your own Limited Company

Annual Revenue: £0
Taxes (Corp/Div): £0

Annual Take-Home: £0
Monthly Take-Home: £0

Inside IR35 (Umbrella)

Operating as a "disguised employee"

Gross Assignment: £0
Employment Taxes*: £0

Annual Take-Home: £0
Monthly Take-Home: £0

*Includes Employer NI, Apprenticeship Levy, Employee NI, and PAYE Income Tax based on standard 2024/25 UK tax bands.

Understanding IR35 and Your Day Rate

The "Off-Payroll Working" rules, commonly known as IR35, are designed to ensure that contractors who work like employees pay similar levels of Income Tax and National Insurance. The difference in take-home pay between being "Outside IR35" and "Inside IR35" can be substantial, often ranging from 15% to 25% of your total income.

Inside IR35 vs. Outside IR35

  • Outside IR35: You are considered a legitimate business. You can pay yourself a small salary and the rest in dividends, which are not subject to National Insurance. You can also deduct valid business expenses before calculating Corporation Tax.
  • Inside IR35: You are taxed as an employee. If using an Umbrella company, the "Day Rate" provided by the agency must cover Employer's National Insurance (13.8%) and the Apprenticeship Levy (0.5%) before your gross salary is even calculated.

Example: £500 Day Rate Comparison

At a £500 day rate working 230 days a year, your gross revenue is £115,000.

If Outside IR35, your net take-home might be approximately £82,000 after Corporation Tax and Dividend Tax.

If Inside IR35, your net take-home might drop to approximately £64,000 because you must pay the full weight of PAYE taxes plus the employer's tax contributions typically deducted from the umbrella rate.

Key Factors Influencing Your Net Pay

  1. Pension Contributions: Salary sacrifice into a pension is one of the most effective ways to reduce your tax bill, especially if you are Inside IR35 and hitting the 40% or 45% tax brackets.
  2. Business Expenses: Outside IR35 contractors can claim equipment, travel, and home office costs, whereas Inside IR35 contractors generally cannot claim expenses against their tax bill.
  3. VAT: Most Outside IR35 contractors use the Flat Rate VAT scheme or standard VAT scheme, which can provide a small additional margin for the business.
function calculateIR35() { var dayRate = parseFloat(document.getElementById('dayRate').value) || 0; var daysPerYear = parseFloat(document.getElementById('daysPerYear').value) || 0; var monthlyExpenses = parseFloat(document.getElementById('monthlyExpenses').value) || 0; var pensionRate = parseFloat(document.getElementById('pensionRate').value) || 0; var annualRevenue = dayRate * daysPerYear; var annualExpenses = monthlyExpenses * 12; var personalAllowance = 12570; // — OUTSIDE IR35 CALCULATION (Simplified 24/25) — // 1. Salary (Optimal for LTD usually ~£12,570) var salaryOutside = 12570; var corpTaxProfit = annualRevenue – salaryOutside – annualExpenses; // Corporation Tax (Assumed 19% up to £50k, 25% above £250k – using simplified blended 21% for high earners) var corpTax = 0; if (corpTaxProfit 0) { // Basic rate (up to 50270 total income) var basicLimit = 50270 – 12570; var basicDiv = Math.min(remainingDiv, basicLimit); divTax += basicDiv * 0.0875; remainingDiv -= basicDiv; if (remainingDiv > 0) { // Higher rate var higherLimit = 125140 – 50270; var higherDiv = Math.min(remainingDiv, higherLimit); divTax += higherDiv * 0.3375; remainingDiv -= higherDiv; if (remainingDiv > 0) { // Additional rate divTax += remainingDiv * 0.3935; } } } var outsideNet = salaryOutside + profitAfterTax – divTax; // — INSIDE IR35 CALCULATION (Umbrella) — // Deduct Employer NI (13.8%) and Apprentice Levy (0.5%) from Assignment Rate // Gross Salary * 1.143 = Annual Revenue (approx) var umbrellaFee = 1200; // Average annual umbrella fee var availableForPayroll = annualRevenue – umbrellaFee; // Calculate Gross Salary from Assignment Rate // Assignment = GrossSalary + (GrossSalary – NIThreshold)*0.138 + (GrossSalary * 0.005) // Threshold is ~£9100 var employerNIThreshold = 9100; var grossSalaryInside = (availableForPayroll + (employerNIThreshold * 0.138)) / 1.143; // Pension deduction from gross var pensionAmount = grossSalaryInside * (pensionRate / 100); var taxableSalary = grossSalaryInside – pensionAmount; // PAYE Tax var payeTax = 0; var calcTaxable = taxableSalary; if (calcTaxable > 12570) { var basicPart = Math.min(calcTaxable – 12570, 37700); payeTax += basicPart * 0.20; if (calcTaxable > 50270) { var higherPart = Math.min(calcTaxable – 50270, 74870); payeTax += higherPart * 0.40; if (calcTaxable > 125140) { payeTax += (calcTaxable – 125140) * 0.45; } } } // Employee NI (8% for 2024/25) var employeeNI = 0; if (taxableSalary > 12570) { var niPart = Math.min(taxableSalary – 12570, 37700); employeeNI += niPart * 0.08; if (taxableSalary > 50270) { employeeNI += (taxableSalary – 50270) * 0.02; } } var insideNet = taxableSalary – payeTax – employeeNI; // Update UI document.getElementById('resultsArea').style.display = 'block'; document.getElementById('outRevenue').innerText = '£' + annualRevenue.toLocaleString(); document.getElementById('outTaxes').innerText = '£' + (corpTax + divTax).toLocaleString(undefined, {maximumFractionDigits: 0}); document.getElementById('outTakeHome').innerText = '£' + outsideNet.toLocaleString(undefined, {maximumFractionDigits: 0}); document.getElementById('outMonthly').innerText = '£' + (outsideNet / 12).toLocaleString(undefined, {maximumFractionDigits: 0}); document.getElementById('inRevenue').innerText = '£' + annualRevenue.toLocaleString(); document.getElementById('inTaxes').innerText = '£' + (annualRevenue – insideNet – pensionAmount).toLocaleString(undefined, {maximumFractionDigits: 0}); document.getElementById('inTakeHome').innerText = '£' + insideNet.toLocaleString(undefined, {maximumFractionDigits: 0}); document.getElementById('inMonthly').innerText = '£' + (insideNet / 12).toLocaleString(undefined, {maximumFractionDigits: 0}); // Scroll to results document.getElementById('resultsArea').scrollIntoView({ behavior: 'smooth', block: 'nearest' }); }

Leave a Comment