CCNL Logistica, Trasporto Merci e Spedizione (Confetra) - Personale viaggiante¶
| CNEL code | I100 |
| Sector | logistica |
| Tax sector | industria |
| Last renewal | 2024-12-06 |
| Workers (est.) | ~430k |
| Ruleset version | 2026.2 |
| Readiness | 👁 Reviewed |
Signatories
- AITI
- ASSOESPRESSI
- ASSOLOGISTICA
- FEDESPEDI
- FEDIT
- FISI
- TRASPORTOUNITO FIAP
- ANITA
- Confetra
- FILT-CGIL
- FIT-CISL
- UILTrasporti
Coverage¶
Derived from the capability registry. The scenario features and the ones outside the input are the same for every contract: see the capability matrix.
| Core payroll path of a contract | |
|---|---|
| ✅ | Every core capability is computed from bundled rules and request facts |
| ⚠️ | The contract's data leave a core capability partial: see Limits |
| Core payroll path | ⚠️ |
| Limits of this contract | base_salary, seniority |
2 documented simplification(s) and 0 missing feature(s): see Known simplifications.
Assurance¶
| Axis | Value | What it says |
|---|---|---|
| Extraction method | 🤖 AI-assisted | How the values were read from the sources |
| Extraction review | 🔴 Unverified | Whether a person checked the extracted file against its sources |
| Rule provenance | 53 verified / 30 derived / 0 assumed / 0 missing | Payable rules of the file by the evidence behind each value (statuses) |
| Ruleset confidence | 🟢 Verified | The confidence the ruleset declares as a whole |
| Readiness | 👁 Reviewed | Whether runs of this contract can be paid in operational mode (tiers) |
Freshness¶
| Last renewal | 2024-12-06 |
| Last review | 2026-10-16 |
| Latest salary tranche | 2027-06-01 |
Review history¶
| Date | Reviewer | Scope | Outcome | Findings |
|---|---|---|---|---|
| 2026-10-11 | claude-opus-5-5 (ai) | Inherited from logistica-trasporto-confetra, of which this file is a copy: the review covered that file's levels; here it stands for the shared rules (work rules, parameters) only. Every payable rule of the file (55 records) read again in the signed testo unico of the renewal of 6 December 2024 (Verbale di accordo 25 September 2025), published by Confetra; the URLs the file cited return 404. | corrected | Corrected: every one of the 36 salary periods. The base salary is the minimo plus the EPA of the tables of pp. 80-81 for non-travelling staff; the file held values about 88-110 EUR too high. The printed Totale of the 1 January 2027 table already includes the minimo increase of 1 June 2027; the Legacoop circular of 19 December 2024 (p. 2) confirms that January 2027 is an EPA-only step, so the period holds minimo plus EPA. Corrected: the Quadri receive the indennità di funzione of 51.65 EUR a month (Art. 6 c. 4, p. 17), which the file lacked. Corrected: the daily quota is 1/22 (Art. 61 c. 3, Sezione prima, p. 86), not 1/26, which applies to a six-day week of non-travelling staff and to Sezione seconda (Art. 73 c. 5). Verified: 14 monthly payments (Artt. 18-19), the accrual of fractions over 15 days (Art. 18 c. 2, Art. 19 c. 2), seniority (Art. 17) and 22 days of leave (Art. 24). Pages are PDF page numbers, equal to the printed ones. Assumed: sickness. Art. 63 A) c. 7-12 keeps the job 245 or 365 days and pays 3 months in full and 5 at half (up to 5 years of service) or 5 and 7, counted over 24 or 30 months; the cumulation model holds one window in whole years for every band, so the rule is not expressible and the file's 100% for 180 days is wrong. Left derived: the overtime rates (30%, 50%, 65%, 75%, Art. 13 c. 6) match, but their start of 2023-05-01 is not stated; the level descriptions are paraphrases. Not modelled: the EDR of Art. 60 c. 8 (10 EUR at level 3S, re-parametrised) for workers in service on 26 January 2011, which affects every entitlement, and level 6J and travelling staff. |
| 2026-10-12 | claude-opus-5-5 (ai) | Inherited from logistica-trasporto-confetra, of which this file is a copy: the review covered that file's levels; here it stands for the shared rules (work rules, parameters) only. Sickness rule of art. 63 A), now expressible with a window and steps per seniority band; readiness of the file. | corrected | The sickness rule was assumed (100% for 180 days, not the CCNL's): it is now 90 days in full and 150 at half within 24 months, comporto 245 days, up to 5 years of seniority; 150 in full and 210 at half within 30 months, comporto 365 days, above. With no assumed or missing payable rule left and the salary tables, additional months, divisor and seniority verified on 2026-10-11, the file is promoted to reviewed. |
| 2026-10-12 | claude-opus-5-5 (ai) | Travelling staff: levels, salary tables of the four tranches, seniority, EDR 2011 and 2021, apprenticeship, overtime, against the signed testo unico (Verbale 25 September 2025). | corrected | This file was created from logistica-trasporto-confetra for the travelling staff, which that file left out: same rules and review history, with the travelling levels, seniority amounts, EDR and apprenticeship tracks. 51 of the 52 salary values equal minimo plus EPA and the printed Totale of pp. 81-82; F2 prints a Totale 0.06 above the sum at every tranche. The Legacoop circular of December 2024 confirms the F2 minimo (1.791,51 + 87,63), so the Totale is the misprint: F2 takes the sum and stays derived. Saturday and Sunday overtime of the travelling staff is 30% (art. 13 c. 6); the engine has one holiday band, left as a limitation. Tabella B (p. 75) reads by year: drivers A3-C3 over 5 years and D2-F2 over 4, 90% the first year, 95% the second, 100% after. |
| 2026-10-12 | claude-opus-5-5 (ai) | Weekend overtime and working time of the travelling staff (artt. 11, 11 bis, 13). | corrected | Sunday overtime of the travelling staff is 30% (art. 13 c. 6), not the 65% of the holiday band: new band OT_RIPOSO on the rest_day overtime kind. The 47-hour regime of art. 11 bis changes the overtime threshold, not the pay: the hourly divisor is 168 under every regime (art. 13 c. 8); the limitation travelling_working_time is closed. |
| 2026-10-12 | claude-opus-5-5 (ai) | Malattie particolarmente gravi (art. 63 cc. 8 and 12). | corrected | The serious illnesses of INPS circ. 95/2016 were a limitation (grave_illness): now paid in full for 18 months and left out of the comporto when SicknessEpisode.serious_illness says so. |
| 2026-10-12 | claude-opus-5-5 (ai) | Indennità di trasferta of the travelling staff (art. 62). | corrected | The allowance amounts of art. 62 c. 3 from 1.1.2025 and the TFR rule of c. 7 are now CCNL data: a TravelAllowanceEvent without daily_amount takes the amount of its hours away. |
| 2026-10-16 | claude-opus-5-5 (ai) | The employer INPS rate of the personale viaggiante in the cost table of the Ministry of Labour (DD 135 of 19 December 2025) against the INPS rate tables and the classes of the bundle. | flagged | DD 135/2025 prints 'Inps (30,68%)' on every table of the personale viaggiante, with no composition, no class of employer and no number of employees. 30.68% is, to the cent, the employer rate of an INPS class industria employer up to 15 employees for operai and intermedi: IVS 23.81 + NASpI 1.61 + CUAF 0.68 + CIG ordinaria 1.70 + Fondo garanzia TFR 0.20 + malattia 2.22 + maternità 0.46 (INPS tables of January 2023 reproduced by GIA Parma, row 'Industria, aziende fino a 15 dipendenti, Operai - Intermedi'). The engine applies the same 30.68% to an operaio viaggiante of an employer up to 15 employees, and 31.28% from 16 to 50 and 31.58% above (CIG straordinaria 0.90 and the higher CIG ordinaria): match for the smallest band, no evidence for the others. Not established: whether the Ministry assumes an employer up to 15 employees or a class other than industria. A press article (Euroconference, 24 November 2021) classifies a road haulage employer in the INPS sector terziario, CSC 7.04.01, which would give other rates; the class is a fact of the employer, so it is not decided here. |
Salary table¶
Latest effective values per level (monthly gross, EUR).
| Level | Description | Base salary (monthly) | Effective from |
|---|---|---|---|
C3 |
Qualifica 3, lettera C (parametro 133.5): driver of the highest qualification | € 2,131.65 | 2027-06-01 |
B3 |
Qualifica 3, lettera B (parametro 133): driver | € 2,100.37 | 2027-06-01 |
A3 |
Qualifica 3, lettera A (parametro 132.5): driver | € 2,079.11 | 2027-06-01 |
F2 |
Qualifica 2, lettera F (parametro 129.5): driver | € 2,017.83 | 2027-06-01 |
E2 |
Qualifica 2, lettera E (parametro 129): driver | € 2,016.61 | 2027-06-01 |
D2 |
Qualifica 2, lettera D (parametro 128.5): driver | € 2,015.34 | 2027-06-01 |
H1 |
Qualifica 1, lettera H (parametro 124.5): driver | € 1,951.23 | 2027-06-01 |
G1 |
Qualifica 1, lettera G (parametro 124): driver | € 1,938.72 | 2027-06-01 |
L119 |
Lettera L, parametro 119: rider on a moped or motorcycle, after further 9 months | € 1,821.92 | 2027-06-01 |
L116 |
Lettera L, parametro 116: rider on a moped or motorcycle, after 6 months | € 1,777.23 | 2027-06-01 |
I116 |
Lettera I, parametro 116: rider on a bicycle, after 6 months | € 1,757.24 | 2027-06-01 |
L110 |
Lettera L, parametro 110: rider on a moped or motorcycle, first 6 months | € 1,687.91 | 2027-06-01 |
I110 |
Lettera I, parametro 110: rider on a bicycle, first 6 months | € 1,667.91 | 2027-06-01 |
Seniority increments¶
Cadence: every 24 months
Maximum: 5 increments
| Level | Increment (monthly) |
|---|---|
C3 |
€ 24.79 |
B3 |
€ 24.79 |
A3 |
€ 24.79 |
F2 |
€ 24.27 |
E2 |
€ 24.27 |
D2 |
€ 24.27 |
H1 |
€ 23.24 |
G1 |
€ 23.14 |
I110 |
€ 22.18 |
I116 |
€ 22.18 |
L110 |
€ 21.62 |
L116 |
€ 21.62 |
L119 |
€ 21.62 |
Apprenticeship¶
drivers_g_h (type: percentage)
Destination levels: H1, G1
percentage: 1.00
drivers_a_f (type: percentage)
Destination levels: C3, B3, A3, F2, E2, D2
percentage: 1.00
riders (type: percentage)
Destination levels: I110, I116, L110, L116, L119
percentage: 1.00
Known simplifications¶
Each simplification below is a model limitation of the registry. An open limitation with a monetary impact (yes or unknown) makes every result it applies to not payable, with an open_limitation blocker; the result lists every applicable limitation in assurance.limitations.
logistica-trasporto-confetra-viaggiante/travelling_allowances · base_salary · impact yes · open
NOT MODELLED: the night allowance of art. 16 for a trasferta under 18 hours overlapping the night hours (paid only from 18 hours), the 50% on the Sunday and holiday work within the ordinary hours (art. 12 c. 4), and the 4.5 days of paid leave of art. 11 c. 11. The trasferta of art. 62 and the night allowance of a trasferta of 18-24 hours are paid by TravelAllowanceEvent.
Applies when: a fact the request cannot express: never recorded on a run.
Remediation: Pay the night allowance of art. 16 and the Sunday or holiday work within the ordinary hours outside the engine.
logistica-trasporto-confetra-viaggiante/apprentice_seniority · seniority · impact unknown · open
APPRENTICE SENIORITY: the CCNL text read for this ruleset does not state whether apprentices accrue the level seniority increments or an amount of their own, and no apprentice amount is modelled. The engine pays no increment during the apprenticeship (provisional); the run is affected when the apprentice has matured increments the level pays.
Applies when: seniority applies; the run takes the engine code path; contract type in apprentice.
Remediation: Source the CCNL clause on apprentice seniority and model it as seniority_increments.apprentice_amount (zero when apprentices accrue none), then remove this note.
apprentice_seniority_simplified · seniority · impact unknown · resolved
Apprentices accrue only the CCNL apprentice-specific seniority increment, paid in full: the apprenticeship percentage no longer reduces it a second time. A CCNL that declares no apprentice amount pays none and carries its own open limitation
Applies when: seniority applies; the run takes the engine code path; contract type in apprentice.
Remediation: Resolved: the remaining CCNLs are tracked by their own apprentice_seniority limitation.
apprenticeship_pct_undeclared_components · base_salary · impact unknown · open
A percentage apprenticeship reduces every fixed allowance whose apprenticeship_pct_relevant flag the data leaves at its default, together with the base salary. Whether the CCNL applies the percentage to that allowance (an EDR, a contingenza, a function allowance) was not sourced. The run is affected when such an allowance is in the apprentice's pay.
Applies when: base_salary applies; the run takes the engine code path; contract type in apprentice.
Remediation: Source, for each CCNL, the elements the apprenticeship percentage applies to and set apprenticeship_pct_relevant on every allowance; the limitation then no longer applies to its runs.
sickness_inps_daily_base · sickness · impact unknown · open
The INPS share of a sick day is the INPS rate times the CCNL daily quota of the current month, counted on the CCNL payable days. INPS computes it on its own daily base (retribuzione media globale giornaliera of the month before) and on calendar days. The worker's total for the day is the same; the split between INPS indemnity (outside the contribution base) and employer integration may differ, and with it the contributions.
Applies when: sickness applies; the run takes the engine code path.
Remediation: Compute the INPS indemnity on the INPS daily base and calendar days of the INPS rules, with the pay of the month before, then resolve this limitation.
sickness_cumulation_window · sickness · impact unknown · open
The CCNL tier and the comporto are counted on the days of one episode and the relapses it continues. A CCNL that sums the sickness of separate episodes over a window (a calendar year, the last three years) can reach a lower tier or the end of the comporto earlier than the engine shows. The run is affected when an earlier episode outside the relapse chain is recorded.
Applies when: sickness applies; the run takes the engine code path.
Remediation: Add the cumulation window of each CCNL to its sickness rule, with the source, and count the tier and the comporto over it.
provisional_ruleset · irpef · impact unknown · open
The run reads a tax ruleset marked provisional: the sources of its year are not published yet (budget law of the year; regional and municipal surtax resolutions), so the values are those of the year before, carried over. Rules in force by statute (the IRPEF brackets of art. 11 and the deductions of art. 13 of the testo unico of D.Lgs. 117/2026) carry over unchanged; any change of the budget law is not applied.
Applies when: irpef applies; the run takes the engine code path.
Remediation: Replace each provisional ruleset of the year with the values of its published sources, drop its provisional flag, then resolve this limitation.
provisional_inps_ruleset · inps_employer · impact unknown · open
The run reads an INPS ruleset marked provisional: the INPS circulars of its year are not published yet, so the rates, the massimale and the minimale (and the hourly contributions of domestic work) are those of the year before, carried over. The indexed amounts change every January: the carried-over values understate them.
Applies when: inps_employer applies; the run takes the engine code path.
Remediation: Replace each provisional INPS ruleset of the year with the values of the INPS circulars of the year, drop its provisional flag, then resolve this limitation.
tfr_compensation_apprentice_guarantee_fund · inps_employer · impact yes · open
An apprentice whose TFR goes to a pension fund or to the Fondo Tesoreria takes the 0.28-point relief of D.L. 203/2005 art. 8, but not the exemption from the 0.20% Fondo di garanzia contribution of D.Lgs. 252/2005 art. 10 c. 2: no source found says whether the apprentice rate (10% of L. 296/2006 art. 1 c. 773 plus NASpI and the integration funds) holds a Fondo di garanzia share to exempt. The employer contributions of the run may be overstated by 0.20% of the INPS base.
Applies when: inps_employer applies; the run takes the engine code path; contract type in apprentice.
Remediation: Find an INPS source on the Fondo di garanzia share of the apprentice rate, then exempt it with the other workers or record that none is due.
Sources¶
| Document | Kind | Date | URL |
|---|---|---|---|
| — | — | 2024-12-06 | ↗ |
Coverage notes
STAFF: travelling staff (personale viaggiante) of the CCNL Logistica: drivers of qualifiche 3 (C, B, A), 2 (F, E, D) and 1 (H, G) and riders of letters I (bicycle) and L (moped or motorcycle), art. 2 pp. 25-26, tables pp. 81-82. The non-travelling staff is logistica-trasporto-confetra. Every level is an operaio.
RIDER PARAMETERS: letter I starts at parametro 110 and moves to 116 after 6 months; letter L starts at 110, moves to 116 after 6 months and to 119 after further 9 months (art. 2, p. 26). Each parametro is a level (I110, I116, L110, L116, L119): the request names the parametro reached, the engine does not move the worker.
TRANCHES: four tranches: 1.1.2025, 1.1.2026, 1.1.2027 (EPA), 1.6.2027 (minimo and EPA), +260.00 at B3 in all (140 minimo, 120 EPA, p. 82). base_salary is minimo plus EPA.
SENIORITY INCREMENTS: biennial, at most 5 bienni, amounts of the travelling column of art. 17 c. 2 (p. 41).
APPRENTICESHIP: Tabella A (p. 75): drivers G1 and H1 75%, 85%, then 100%; riders I and L 100% throughout. Tabella B: drivers A3, B3, C3 (5 years) and D2, E2, F2 (4 years) 90%, 95%, then 100%.
WORKING TIME: drivers work 39 hours a week (art. 11 c. 1) over up to 6 days, averaged over 4 weeks; the discontinuous drivers of art. 11 bis (qualifiche 3 A-C and 2 D-F, after the verification procedure) work 47 hours ordinary. The regime moves only the threshold beyond which an hour is overtime: the monthly pay is the same and the hourly pay divides it by 168 under every regime (art. 13 c. 8), so the request declares the overtime hours beyond the worker's own regime.
TRAVELLING WEEKEND OVERTIME: Saturday and Sunday overtime of the travelling staff is 30% (art. 13 c. 6, p. 39): Saturday as weekday overtime, Sunday as rest_day overtime (OT_RIPOSO). Overtime on the festività of artt. 60 and 71 is holiday overtime at 65%, 75% at night. The rates do not add up and the higher absorbs the lower (c. 7): a weekend overtime hour at night is night overtime (50%), reported as night.
CONGLOBATED MINIMUMS: base_salary values are the conglobated monthly minimum pay (minimum pay table + contingenza per Art. 61 note + EPA). Primary check: Art. 61 of the consolidated text September 2025 — 'From 1.1.2001 the indennità di contingenza has been conglobated into the minimum pay tables together with the EDR of EUR 10.33 per month'. fixed_allowances is empty for all levels.
HOURLY DIVISOR: 168 hours/month. Primary source: Art. 61 para. 3 consolidated text September 2025 — 'The hourly pay is obtained by dividing the monthly pay by 168'.
ICE: the Indennità di Copertura Economica (ICE) was a provisional element in force until 31.12.2024. It ceases from 1.1.2025 with the renewal taking effect. base_salary values do not include ICE (ceased element). The consolidated text cites net increases of EUR 230 at 3S compared to the previous pay including ICE — the difference from the algebraic sum of the tranches (EUR 290 from base without ICE) corresponds to the pre-existing ICE value for that level.
ADDITIONAL MONTHS: 14 (tredicesima Art. 18 + quattordicesima Art. 19 consolidated text September 2025).
EPA: Elemento Professionale d'Area, a component introduced by the 6.12.2024 renewal. Included in base_salary values from 1.1.2025. Not shown separately because it forms an integral part of the minimum pay (it affects all contractual and statutory entitlements) — see Confetra circ283-2024.
EDR: the EDR of EUR 10.33/month (agreement 26 Jan 2001) is conglobated into the minimum pay tables (Art. 61 note). The EDR of art. 60 c. 8 (workers in service on 26 January 2011) and the EDR of the agreement of 18 May 2021 (13 mensilità, no effect on other institutes) are paid as allowances; the 2021 EDR may still enter the daily base of absences and sickness, which 'nessuna incidenza su alcun istituto contrattuale' excludes.
INPS: uses 2026-industria.json (TaxSector.INDUSTRIA). File already present — no changes to the tax file.
Raw data¶
The contract file this page is generated from: agreement/logistica-trasporto-confetra-viaggiante.json.
Usage example¶
"""Usage example: logistica-trasporto-confetra-viaggiante (I100).
CCNL Logistica, Trasporto Merci e Spedizione (Confetra) - Personale
viaggiante.
Generated by scripts/documentation/contract_example/generate.py from the
bundled data; edit the generator, not this file.
Level H1 (middle of the level list), regular run of September 2026,
full-time permanent employment, 50 employees, worker resident in Milan
(region IT-25, municipality F205), seniority recognised from 1 September
2026.
"""
from datetime import date
from ccnl_engine import (
EmployerProfile,
Employment,
Headcount,
PayrollEngine,
PayrollRun,
PeriodFacts,
PeriodInput,
)
from ccnl_engine.inputs import (
Permanent,
SeniorityFact,
SenioritySource,
)
CCNL = "logistica-trasporto-confetra-viaggiante.json"
LEVEL = "H1"
SENIORITY = SeniorityFact.since(date(2026, 9, 1), SenioritySource.EMPLOYER_RECORDS)
engine = PayrollEngine.bundled()
result = engine.calculate_period(
PeriodInput(
run=PayrollRun.regular(year=2026, month=9),
payment_date=date(2026, 9, 25),
employment=Employment(
ccnl_slug=CCNL,
level_code=LEVEL,
contract_type=Permanent(),
seniority=SENIORITY,
),
employer=EmployerProfile(headcount=Headcount(50)),
facts=PeriodFacts(
regione="IT-25",
comune_belfiore="F205",
),
)
)
issues = ", ".join(sorted(issue.code for issue in result.issues)) or "none"
blockers = ", ".join(sorted({b.code.value for b in result.blockers})) or "none"
readiness = engine.inspect_ruleset(CCNL.removesuffix(".json")).readiness
print(f"Gross: {result.period_gross} EUR")
print(f"Contributions: {result.contribution_breakdown.employee} EUR")
print(f"IRPEF: {result.tax_computation.ordinary_tax} EUR")
print(f"Net: {result.period_net} EUR")
print(f"Payable: {result.is_payable}")
print(f"Net payable: {result.is_net_pay_payable}")
print(f"Cost complete: {result.is_employer_cost_complete}")
print(f"Readiness: {readiness}")
print(f"Blockers: {blockers}")
print(f"Issues: {issues}")