# Italy Employment Cost Calculator

> What an employee in Italy costs: gross salary, employer contributions, INAIL and severance accrual for two example collective agreements, plus how regional and municipal taxes change net pay.


<section> <span class="eyebrow">Cost calculator</span> <h1 id="what-an-employee-in-italy-really-costs">What an employee in Italy really costs</h1> <p class="lede">You pay the actual employment cost of your employee plus our monthly fee. Here is what the employment cost is made of, using two example collective agreements.</p> </section> <section> <div class="grid"> <form class="panel" id="calc" style="display:grid;gap:16px"> <label for="ral">Annual gross salary, RAL (EUR)<input id="ral" type="number" min="15000" step="1000" value="50000"></label> <label for="ccnl">Collective agreement (CCNL)<select id="ccnl"><option value="commercio">Commerce and services (CCNL Terziario, Distribuzione e Servizi)</option><option value="metalmeccanico">Engineering and manufacturing (CCNL Metalmeccanico Industria)</option></select></label> <label style="display:flex;gap:10px;align-items:center;font-weight:400"><input id="prorata" type="checkbox" checked style="width:auto">Pay 13th and 14th month pro-rata in each monthly payslip</label> <label style="display:flex;gap:10px;align-items:center;font-weight:400"><input id="tfrfund" type="checkbox" checked style="width:auto">Pay TFR monthly into the employee’s chosen fund</label> <label for="fx">USD per EUR<input id="fx" type="number" step="0.01" value="1.08"></label> <p id="ccnlnote" style="margin:0;color:var(--muted);font-size:14px"></p> </form> <div class="panel" style="min-width:0"> <div class="tbl"><table id="out"> <thead><tr><th>Item</th><th class="num">Per month (avg)</th><th class="num">Per year</th></tr></thead> <tbody></tbody> </table></div> <p id="inst" style="font-size:14px;color:var(--muted);margin-bottom:0"></p> </div> </div> <p style="font-size:14px;color:var(--muted)">Example figures, rates updated 2026-10-26. Contribution and insurance rates are indicative <span class="tag">estimate</span> and depend on the exact sector, company size and job risk class. We confirm them in your quote.</p> </section> <section> <h2 id="your-monthly-invoices-over-a-year">Your monthly invoices over a year</h2> <p class="prose" style="margin:0">The annual cost is the same either way. The options change when you pay it: with both options on, every month costs the same and nothing accumulates for later.</p> <div class="tbl"><table id="sched"><thead><tr><th>Month</th><th class="num">Salary</th><th class="num">INPS + INAIL</th><th class="num">TFR</th><th class="num">Fee</th><th class="num">Invoice</th></tr></thead><tbody></tbody></table></div> <p id="schednote" style="font-size:14px;color:var(--muted);margin:0"></p> <p class="review">[Review: pro-rata payment of 13th/14th month must be allowed by the CCNL or an individual agreement; TFR to a pension fund depends on the employee’s choice, otherwise it goes to the INPS Treasury fund (companies with 50+ employees) or stays with the employer.]</p> </section> <section class="prose"> <h2 id="what-the-employment-cost-is-made-of">What the employment cost is made of</h2> <div class="fact"><b>RAL</b><span><strong>Annual gross salary.</strong> The figure in the offer letter. It is paid in 13 or 14 monthly installments depending on the CCNL: the extra installments are the 13th month (December) and, in commerce and services, the 14th month (July).</span></div> <div class="fact"><b>INPS</b><span><strong>Employer social security.</strong> Pension, unemployment, sickness and maternity funds, roughly 29–32% of gross pay. The employee pays a further ~9% out of their gross salary; that part is not an extra cost for you.</span></div> <div class="fact"><b>INAIL</b><span><strong>Workplace injury insurance.</strong> Mandatory. Low for office jobs (well under 1%), higher for technical and production roles.</span></div> <div class="fact"><b>TFR</b><span><strong>Severance accrual.</strong> 6.91% of gross pay set aside every year and paid to the employee when employment ends, for any reason (Civil Code art. 2120).</span></div> <div class="fact"><b>Fee</b><span><strong>Our EOR fee.</strong> €250 per employee per month.</span></div> </section> <section class="prose"> <h2 id="billed-on-actuals-month-by-month">Billed on actuals, month by month</h2> <p>The table above is an estimate. Each month we run the real payroll and invoice what it actually cost: overtime, bonuses, unpaid leave, sick days partly covered by INPS, salary changes and CCNL raises all show up in that month's figures. You receive the payslip summary with every invoice, so you can check every line.</p> <p>Billing terms: one month's estimated cost as a refundable deposit at start, then each month paid in advance on the estimate and adjusted on the next invoice to the actual payroll.</p> </section> <section class="prose"> <h2 id="two-collective-agreements-compared">Two collective agreements, compared</h2> <p>On the same €50,000 RAL, an engineering contract under the Metalmeccanico agreement costs the employer roughly €1,500–2,000 a year more than an office contract under Commerce and services: social security rates are about 2–3 points higher and injury insurance is higher for technical roles. The Commerce agreement pays in 14 installments, so each monthly payslip is smaller, but the annual cost is the same RAL.</p> <p>Which agreement applies is not a free choice: it follows the job and the sector of the work. We pick it in the contract draft and explain why.</p> </section> <section class="prose"> <h2 id="why-the-city-changes-net-pay-not-your-cost">Why the city changes net pay, not your cost</h2> <p>On top of national income tax (IRPEF), every employee pays a <strong>regional</strong> surcharge (from 1.23% up to about 3.33% of taxable income, depending on the region and income band) and a <strong>municipal</strong> one (usually 0–0.8%; 0.9% in Rome, 1% in Naples, up to 1.2% in Turin; many cities exempt lower incomes). Both are withheld from the employee's gross pay.</p> <p>They do not change what you pay. They change what the employee takes home: on a €50,000 RAL, the gap between the cheapest and the most expensive combination of region and city is in the order of €1,000–1,500 a year of net pay. Worth knowing when you compare offers for candidates in different cities.</p> <p class="review">[Example by city (Milan, Rome, Turin, Bologna, Naples) to be computed from the MEF 2026 tables.]</p> </section> <div class="cta"><a class="btn" href="contact.html">Get an exact quote</a><a class="btn ghost" href="net-pay-calculator.html">See the employee’s net pay</a></div> <script>(function(){const P = {"_note":"Parametri del calcolatore con fonte e stato. 'indicative' = da sostituire con data/params/2026.yaml verificato.","updated":"2026-10-26","ccnl":{"commercio":{"label":"Commerce and services (CCNL Terziario, Distribuzione e Servizi)","installments":14,"employer_social_rate":0.29,"inail_rate":0.004,"status":"indicative","note":"Typical for offices, IT services, consulting, sales. 13th and 14th month salary."},"metalmeccanico":{"label":"Engineering and manufacturing (CCNL Metalmeccanico Industria)","installments":13,"employer_social_rate":0.315,"inail_rate":0.012,"status":"indicative","note":"Typical for engineering, production, technical roles. 13th month salary."}},"tfr_rate":{"value":0.0691,"status":"verified","source":"Civil Code art. 2120: gross pay / 13.5, less 0.5% to the INPS fund"},"employee_social_rate":{"value":0.0919,"status":"indicative","source":"INPS employee share, private sector"},"regional_surcharge":{"min":0.0123,"max":0.0333,"status":"indicative","source":"MEF, addizionale regionale IRPEF"},"municipal_surcharge":{"min":0,"max":0.009,"status":"indicative","source":"MEF, addizionale comunale IRPEF (0.8% general cap; Rome 0.9%)"},"eor_fee_eur":{"value":250,"status":"list price"},"usd_per_eur":{"value":1.08,"status":"indicative","source":"Replace with ECB daily reference rate at build time"},"net":{"status":"secondary","source":"data/params/2026.yaml (irpef, inps, addizionali); TUIR art. 11 and 13; L. 207/2024; L. 199/2025","employee_inps":0.0919,"extra_1pct_above":56224,"irpef":[[28000,0.23],[50000,0.33],[null,0.43]],"cities":{"Milan":{"region":"Lombardy","regional":[[null,0.0123]],"municipal":0.008,"exempt":23000},"Rome":{"region":"Lazio","regional":[[28000,0.0173],[null,0.0333]],"municipal":0.009,"exempt":14000},"Turin":{"region":"Piedmont","regional":[[null,0.0162]],"municipal":0.008,"municipal_note":"0.8% to 1.2% by band; 0.8% used","exempt":11790},"Bologna":{"region":"Emilia-Romagna","regional":[[null,0.0133]],"municipal":0.008,"exempt":15000},"Naples":{"region":"Campania","regional":[[null,0.0173]],"municipal":0.01,"exempt":12000}}}};

const eur = n => '€' + Math.round(n).toLocaleString('en-US');
const usd = n => '$' + Math.round(n).toLocaleString('en-US');
function calc(){
  const ral = +document.getElementById('ral').value || 0;
  const fx = +document.getElementById('fx').value || 0;
  const c = P.ccnl[document.getElementById('ccnl').value];
  const items = [
    ['Gross salary (RAL)', ral],
    ['Employer social security (INPS)', ral * c.employer_social_rate],
    ['Injury insurance (INAIL)', ral * c.inail_rate],
    ['Severance accrual (TFR)', ral * P.tfr_rate.value],
    ['HiringItaly EOR fee', P.eor_fee_eur.value * 12],
  ];
  const tot = items.reduce((s, x) => s + x[1], 0);
  document.querySelector('#out tbody').innerHTML = items.map(([k, v]) => `<tr><td>${k}</td><td class="num">${eur(v/12)}</td><td class="num">${eur(v)}</td></tr>`).join('')
    + `<tr><td><b>Total cost</b></td><td class="num"><b>${eur(tot/12)}</b></td><td class="num"><b>${eur(tot)}</b></td></tr>`
    + `<tr><td>Total in USD</td><td class="num">${usd(tot/12*fx)}</td><td class="num">${usd(tot*fx)}</td></tr>`;
  document.getElementById('inst').textContent = `Salary paid in ${c.installments} installments of ${eur(ral / c.installments)} gross. Total cost is ${(tot / ral * 100 - 100).toFixed(0)}% above RAL.`;
  document.getElementById('ccnlnote').textContent = c.note;
  const pr = document.getElementById('prorata').checked, tf = document.getElementById('tfrfund').checked;
  const inst = ral / c.installments, extra = c.installments - 12;
  const months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
  const rate = c.employer_social_rate + c.inail_rate, fee = P.eor_fee_eur.value;
  let rows = '', sum = 0;
  months.forEach((m, i) => {
    let sal = pr ? ral / 12 : inst + (i === 11 ? inst : 0) + (extra === 2 && i === 6 ? inst : 0);
    const tfr = tf ? ral * P.tfr_rate.value / 12 : 0;
    const inv = sal * (1 + rate) + tfr + fee; sum += inv;
    rows += `<tr><td>${m}</td><td class="num">${eur(sal)}</td><td class="num">${eur(sal*rate)}</td><td class="num">${eur(tfr)}</td><td class="num">${eur(fee)}</td><td class="num"><b>${eur(inv)}</b></td></tr>`;
  });
  rows += `<tr><td><b>Year</b></td><td></td><td></td><td></td><td></td><td class="num"><b>${eur(sum)}</b></td></tr>`;
  document.querySelector('#sched tbody').innerHTML = rows;
  document.getElementById('schednote').textContent = tf ? 'TFR is paid out every month, so no severance liability builds up.' : `TFR of ${eur(ral * P.tfr_rate.value)} a year accrues and is paid when employment ends; it is held in the deposit.`;
}
document.getElementById('calc').addEventListener('input', calc);
document.getElementById('calc').addEventListener('submit', e => e.preventDefault());
calc();
})();</script>


---
Source: https://hiringitaly.com/calculator.html
