Gross-to-net in Italy: the calculation order for payroll operators

Last modified on November 5, 2026 • 5 min read • 1,012 words
A fixed order of steps for Italian gross-to-net: employee pension contribution, taxable base, IRPEF brackets, employment deduction. Built for platform payroll teams.
Gross-to-net in Italy: the calculation order for payroll operators

Most gross-to-net errors in Italy come from order, not from rates. If your platform runs the steps in the wrong sequence, the net pay is wrong even when every rate is correct. This article sets out the sequence and the inputs each step needs. It covers the core employee-side chain only.

The figures below come from secondary sources. Check them against the primary source before you put them into production. Store the source and the check date next to each parameter.

Step one: fix the gross and the period  

Start with the gross amount for the pay period. Decide early whether you calculate monthly or annualise. The IRPEF brackets and the employment deduction are defined on an annual basis. A monthly engine has to either annualise the income or prorate the annual parameters. Pick one method and apply it everywhere.

Also record the contract type at this point. Fixed-term contracts change the minimum employment deduction, so the flag must exist before step five.

Step two: employee pension contribution  

The employee share of the main pension contribution (IVS) is 9.19% of the contributory base. Calculate it first. Everything after it depends on it.

Other employee-side contributions can apply depending on the contract and sector. They are outside the verified set used here. Add them as separate lines in the same step, each with its own rate, base and source.

Step three: taxable income  

Taxable income for IRPEF is gross pay minus the employee contributions from step two. Call this R.

The common mistake is to apply the tax brackets to gross pay. Do not do that. The contribution comes out before the tax base is set.

Step four: gross IRPEF by brackets  

Apply the three annual brackets to R, in slices:

  • Up to 28,000: 23%.
  • From 28,000 to 50,000: 33%.
  • Above 50,000: 43%.

The rates apply only to the part of income inside each bracket. Compute each slice, then add them. Do not apply the top rate that fits R to the whole amount.

Step five: employment income deduction  

The deduction for employees depends on R. It is a function, so implement it as one. The structure is:

  • R up to 15,000: a fixed 1,955, with a minimum of 690. For fixed-term contracts the minimum is 1,380.
  • R from 15,000 to 28,000: 1,910 plus 1,190 times (28,000 minus R) divided by 13,000.
  • R from 28,000 to 50,000: 1,910 times (50,000 minus R) divided by 22,000.
  • An extra 65 applies when R is between 25,000 and 35,000.
  • Above 50,000: zero.

Two points matter for testing. First, the deduction falls smoothly across the upper bands, so test values just either side of 28,000 and 50,000. Second, the extra 65 is an add-on, not a separate band. It stacks on whatever the formula returns.

The deduction cannot make tax negative. Subtract it from gross IRPEF and floor the result at zero.

Step six: net IRPEF and local surcharges  

Net IRPEF is gross IRPEF from step four minus the deduction from step five, floored at zero.

Regional and municipal surcharges come after this. They vary by location and are not part of the verified set here. Model them as a lookup keyed on the employee’s tax residence, with its own source and validity date. Do not hard-code them into the bracket logic.

Step seven: net pay  

Net pay is gross pay minus employee contributions minus net IRPEF minus surcharges. Then add or subtract any items that sit outside the chain, such as benefits or reimbursements, each with its own tax treatment.

Keep the intermediate values. Store gross, each contribution, R, gross IRPEF, deduction, net IRPEF and net pay as separate fields. When a payslip is disputed, you can show which step moved.

Implementation notes for platform teams  

  • Keep parameters in data, not in code. Rates, thresholds and formula coefficients should carry a source, a status and a validity date.
  • Test the boundaries. Run cases at each threshold: 15,000, 25,000, 28,000, 35,000 and 50,000.
  • Version the calculation. When a parameter changes, old periods must still reproduce the old result.
  • Reconcile against a trusted reference. Run a sample of payslips through both your engine and a second calculation before go-live.
  • Separate the employee chain from employer cost. The steps above give the net pay. Employer-side contributions are a different calculation with a different base.

The order is the part to get right: gross, employee contribution, taxable income, bracketed tax, deduction, surcharges, net. Once the order is fixed, the rest is parameter maintenance.

Partnership teams that want to align their payroll data flow with this sequence can request the data-exchange specification.

The lowest all-inclusive Employer of Record price for Italy

ItalyInCountry: €250 per employee per month, all included: Italian employment contract and CCNL selection, monthly payroll, payslips and filings, onboarding and offboarding, HR documents and amendments, invoicing in your currency at the EUR reference rate, no FX spread, no setup fee.

ProviderHeadline feeItaly priceIn EURAll inclusive?
ItalyInCountry (EmployItaly)€250Published€250Yes
Native Teams from $99 Not published €92 Not stated
Boundless from €175 Not published €175 Not stated
Skuad (Payoneer) from $199 Not published €184 Not stated
Remofirst from $199 Not published €184 Not stated
Rivermate from €329 Not published €329 Yes
Playroll $399 Published €369 No
Multiplier from $459 Not published €425 No
PeoItaly €450 Published €450 Not stated
Papaya Global from $499 Not published €462 Not stated
Horizons (now Remote People) from $499 Not published €462 No
Lano from €499 Not published €499 No
Borderless AI from $579 Not published €536 No
Deel from $599 Not published €555 No
Remote from $599 Not published €555 Not stated
Globalization Partners (G-P) from $599 Not published €555 No
Atlas HXM from $599 Not published €555 No
Oyster $699 Published €647 No

Quote only, no public price for Italy: Rippling, Velocity Global (Pebl), Omnipresent, Safeguard Global, INS Global, Asanify, Wisemonk, EOR Italy (eoritaly.com), eor-italy.com, Italian Employer of Record (employerofrecorditaly.com), Italian Payroll (italianpayroll.it, Lexia), HR Capital. Read on 2026-10-27; USD converted at 1.08 per EUR. Employment cost is the same with any provider and is not included.

Follow me

I work on everything coding and tweet developer memes

Contact