Day Rate Calculator Ir35

IR35 Day Rate Calculator :root { –primary-color: #1a3c5e; –secondary-color: #2c5282; –accent-color: #48bb78; –background-color: #f7fafc; –text-color: #2d3748; –border-color: #e2e8f0; } body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; line-height: 1.6; color: var(–text-color); background-color: var(–background-color); margin: 0; padding: 20px; } .container { max-width: 1000px; margin: 0 auto; background: white; padding: 40px; border-radius: 12px; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); } h1, h2, h3 { color: var(–primary-color); margin-top: 0; } .calculator-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 40px; margin-bottom: 40px; background: #fff; border: 1px solid var(–border-color); border-radius: 8px; overflow: hidden; } .input-section { padding: 30px; background-color: #f8fafc; border-right: 1px solid var(–border-color); } .results-section { padding: 30px; display: flex; flex-direction: column; justify-content: center; } .form-group { margin-bottom: 20px; } label { display: block; margin-bottom: 8px; font-weight: 600; font-size: 0.95rem; } input[type="number"], select { width: 100%; padding: 12px; border: 1px solid #cbd5e0; border-radius: 6px; font-size: 1rem; box-sizing: border-box; transition: border-color 0.2s; } input[type="number"]:focus { outline: none; border-color: var(–secondary-color); box-shadow: 0 0 0 3px rgba(44, 82, 130, 0.1); } .calc-btn { background-color: var(–secondary-color); color: white; border: none; padding: 14px 20px; font-size: 1rem; font-weight: 600; border-radius: 6px; cursor: pointer; width: 100%; transition: background-color 0.2s; } .calc-btn:hover { background-color: var(–primary-color); } .result-row { display: flex; justify-content: space-between; align-items: center; padding: 12px 0; border-bottom: 1px solid var(–border-color); } .result-row:last-child { border-bottom: none; } .result-row.highlight { background-color: #f0fff4; padding: 15px; border-radius: 6px; margin-top: 10px; border-bottom: none; } .result-label { font-weight: 500; color: #4a5568; } .result-value { font-weight: 700; font-size: 1.1rem; color: var(–primary-color); } .highlight .result-value { color: var(–accent-color); font-size: 1.4rem; } .content-section { margin-top: 40px; padding-top: 20px; border-top: 1px solid var(–border-color); } .content-section p { margin-bottom: 1.5em; } .info-box { background-color: #ebf8ff; border-left: 4px solid var(–secondary-color); padding: 15px; margin: 20px 0; font-size: 0.95rem; } @media (max-width: 768px) { .calculator-grid { grid-template-columns: 1fr; } .input-section { border-right: none; border-bottom: 1px solid var(–border-color); } }

IR35 Day Rate Calculator

Calculate your estimated take-home pay as a UK contractor inside IR35. This tool deducts Employer National Insurance, Apprenticeship Levy, and standard Employee taxes to show your true net retention.

Contract Details

Estimated Annual Breakdown

Gross Contract Value £0.00
Employer NI Deducted £0.00
Apprenticeship Levy £0.00
Taxable Gross Pay £0.00
Employee Tax & NI £0.00
Net Annual Pay £0.00
Monthly Net: £0.00Retention: 0%

Understanding Inside IR35 Calculations

When a contract is deemed "Inside IR35," the contractor is treated as a "disguised employee" for tax purposes. However, unlike a regular employee, the contractor (via their umbrella company or agency) often bears the cost of the employer's tax liabilities from the agreed day rate.

How the Calculation Works

The calculation sequence for an Inside IR35 day rate typically follows a "top-down" approach, reducing the invoice value to a net salary:

  1. Gross Contract Value: Your Day Rate × Days Worked.
  2. Employer Costs (The "Uplift"): Before your taxable salary is calculated, the Employer National Insurance (13.8%) and the Apprenticeship Levy (0.5%) are deducted from the gross contract value. This is the most significant difference compared to permanent employment.
  3. Taxable Gross Pay: This is the figure that actually appears on your payslip as "Gross Pay" after employer costs are removed.
  4. Employee Deductions: Standard Income Tax and Employee National Insurance are then deducted from the Taxable Gross Pay, just like a permanent employee (PAYE).
Note on Tax Codes: This calculator assumes a standard UK tax code (1257L) for the 2024/2025 tax year. It calculates Income Tax bands (20%, 40%, 45%) and includes the tapering of the Personal Allowance for income over £100,000.

Key Metrics Explained

  • Apprenticeship Levy: A UK tax of 0.5% charged on annual pay bills over £3 million. Umbrella companies deduct this from all contractors to cover their liability.
  • Employer NI: Usually paid by the company hiring an employee. In Inside IR35 scenarios, this liability is passed down to the contractor, significantly reducing the day rate value.
  • Retention Rate: The percentage of your invoiced day rate that actually ends up in your bank account. Inside IR35 contracts typically see retention rates between 55% and 65%.
function formatCurrency(num) { return new Intl.NumberFormat('en-GB', { style: 'currency', currency: 'GBP' }).format(num); } function calculateIR35() { // 1. Get Inputs var dayRate = parseFloat(document.getElementById('dayRate').value); var daysPerWeek = parseFloat(document.getElementById('daysPerWeek').value); var weeksPerYear = parseFloat(document.getElementById('weeksPerYear').value); var pensionPercent = parseFloat(document.getElementById('pension').value) || 0; if (isNaN(dayRate) || isNaN(daysPerWeek) || isNaN(weeksPerYear)) { alert("Please enter valid numbers for Rate, Days, and Weeks."); return; } // 2. Constants for 2024/2025 Tax Year (UK) var personalAllowance = 12570; var basicRateLimit = 50270; var higherRateLimit = 125140; // NI Thresholds (Approximate annualized) var niPrimaryThreshold = 12570; // Employee starts paying var niSecondaryThreshold = 9100; // Employer starts paying // Rates var erNIRate = 0.138; // 13.8% var appLevyRate = 0.005; // 0.5% // Employee NI Rates (as of April 2024 cuts – reduced to 8% main rate) // Note: This often fluctuates; using 8% for main band, 2% for upper. var eeNIMainRate = 0.08; var eeNIUpperRate = 0.02; // 3. Gross Contract Value var annualBilling = dayRate * daysPerWeek * weeksPerYear; // 4. Calculate Employer Deductions (Inside IR35 Specific Logic) // Logic: Billing = GrossPay + ErNI + AppLevy + (Margin – ignored here) // App Levy is on the Billing amount usually (varies by umbrella, but standard is on turnover) var appLevyDeduction = annualBilling * appLevyRate; var remainingAfterLevy = annualBilling – appLevyDeduction; // Calculate Gross Salary from Remaining Pot // Formula: Remaining = Gross + (Gross – SecondaryThreshold) * 13.8% // Remaining = Gross + 0.138*Gross – 0.138*SecondaryThreshold // Remaining + 0.138*SecondaryThreshold = 1.138 * Gross // Gross = (Remaining + (SecondaryThreshold * 0.138)) / 1.138 var taxableGross = 0; var erNIDeduction = 0; if (remainingAfterLevy > niSecondaryThreshold) { taxableGross = (remainingAfterLevy + (niSecondaryThreshold * erNIRate)) / (1 + erNIRate); erNIDeduction = (taxableGross – niSecondaryThreshold) * erNIRate; } else { taxableGross = remainingAfterLevy; erNIDeduction = 0; } // Apply Pension (Salary Sacrifice) var pensionAmount = taxableGross * (pensionPercent / 100); var grossAfterPension = taxableGross – pensionAmount; // 5. Calculate Employee Taxes (Income Tax) // Adjust Personal Allowance for income over £100k var adjustedPersonalAllowance = personalAllowance; if (grossAfterPension > 100000) { var reduction = (grossAfterPension – 100000) / 2; adjustedPersonalAllowance = Math.max(0, personalAllowance – reduction); } var taxableIncome = Math.max(0, grossAfterPension – adjustedPersonalAllowance); var incomeTax = 0; // Basic Rate Band var basicBandSize = basicRateLimit – personalAllowance; // 37700 // Wait, the bands are defined by taxable income falling into slots. // Easier logic: // 0 to PA: 0% // PA to 50270: 20% // 50270 to 125140: 40% // 125140+: 45% // However, since PA moves, we calculate based on thresholds relative to 0 // But Taxable Income is effectively Gross – PA. // Let's use standard slice method on Gross. var currentGross = grossAfterPension; // Additional Rate (45% over 125140) if (currentGross > higherRateLimit) { incomeTax += (currentGross – higherRateLimit) * 0.45; currentGross = higherRateLimit; } // Higher Rate (40% between 50270 and 125140) if (currentGross > basicRateLimit) { incomeTax += (currentGross – basicRateLimit) * 0.40; currentGross = basicRateLimit; } // Basic Rate (20% between AdjustedPA and 50270) // Note: The "basic rate limit" of 50270 is fixed, but the starting point depends on PA. // Actually, the 20% band size is fixed at 37,700 usually, but if PA is 0, 20% starts at 0? // Correct UK Logic: // 1. Pay 0% on Adjusted PA. // 2. Pay 20% on next £37,700. // 3. Pay 40% on next chunk up to £125,140 total income. // 4. Pay 45% above that. // Let's reset tax calc with the "Band Width" method which is safer with Tapering incomeTax = 0; var tempGross = grossAfterPension; // 1. Tax free var taxFreeChunk = Math.min(tempGross, adjustedPersonalAllowance); tempGross -= taxFreeChunk; // 2. Basic Rate (20%) – Band width 37,700 var basicBandWidth = 37700; var basicChunk = Math.min(tempGross, basicBandWidth); incomeTax += basicChunk * 0.20; tempGross -= basicChunk; // 3. Higher Rate (40%) – Up to 125,140 total income. // The space between (PA + 37700) and 125140. // Upper threshold is hard fixed at 125140. // The amount taxable at 40% is whatever is left up to 125140 total. // Actually simpler: // Total Income > 125140 ? // 45% on (Total – 125140) // 40% on (125140 – (AdjustedPA + 37700)) // 20% on 37700 // Let's redo with simple buckets based on remaining tempGross // We have handled PA. tempGross is now "Taxable Income". // Basic band covers the first 37,700 of Taxable Income. // Higher band covers Taxable Income from 37,701 up to (125140 – AdjustedPA). // Additional covers anything above. // Logic implemented above with basicChunk is correct for 20%. // Remaining tempGross is now Higher/Additional // The boundary for Additional is 125140 Total Gross. // Remaining headroom in Higher band = 125140 – (grossAfterPension – tempGross); // Let's stick to standard slice calc which is robust: incomeTax = 0; // Slice 1: 0 – AdjustedPA : 0% // Slice 2: AdjustedPA – (AdjustedPA + 37700) : 20% // Slice 3: (AdjustedPA + 37700) – 125140 : 40% // Slice 4: 125140+ : 45% var band1_top = adjustedPersonalAllowance; var band2_top = adjustedPersonalAllowance + 37700; var band3_top = 125140; // Calculate 45% if (grossAfterPension > band3_top) { incomeTax += (grossAfterPension – band3_top) * 0.45; } // Calculate 40% // Income strictly between band2_top and band3_top var amountIn40 = Math.max(0, Math.min(grossAfterPension, band3_top) – band2_top); incomeTax += amountIn40 * 0.40; // Calculate 20% // Income strictly between band1_top and band2_top var amountIn20 = Math.max(0, Math.min(grossAfterPension, band2_top) – band1_top); incomeTax += amountIn20 * 0.20; // 6. Calculate Employee NI // Thresholds: Primary £12,570. // Rate 8% between 12570 and 50270. // Rate 2% above 50270. var eeNI = 0; if (grossAfterPension > 50270) { eeNI += (grossAfterPension – 50270) * eeNIUpperRate; eeNI += (50270 – 12570) * eeNIMainRate; } else if (grossAfterPension > 12570) { eeNI += (grossAfterPension – 12570) * eeNIMainRate; } // 7. Net Pay var totalEmployeeDeductions = incomeTax + eeNI + pensionAmount; // Pension is deducted from net cash if not salary sacrifice? No, salary sacrifice reduces gross. // If pension is salary sacrifice, it's not a tax, but it is money going into pension pot not bank. // For "Net Pay in Pocket", we exclude pension. // However, logic above reduced gross for tax. // Net Cash = GrossAfterPension – Tax – NI. var netAnnual = grossAfterPension – incomeTax – eeNI; // 8. Update DOM document.getElementById('resGrossValue').innerText = formatCurrency(annualBilling); document.getElementById('resErNI').innerText = "-" + formatCurrency(erNIDeduction); document.getElementById('resAppLevy').innerText = "-" + formatCurrency(appLevyDeduction); document.getElementById('resTaxableGross').innerText = formatCurrency(taxableGross); document.getElementById('resEeTax').innerText = "-" + formatCurrency(incomeTax + eeNI); document.getElementById('resNetAnnual').innerText = formatCurrency(netAnnual); document.getElementById('resMonthlyNet').innerText = "Monthly Net: " + formatCurrency(netAnnual / 12); var retention = (netAnnual / annualBilling) * 100; document.getElementById('resRetention').innerText = "Retention: " + retention.toFixed(1) + "%"; } // Initial Calc calculateIR35();

Leave a Comment