Repository navigation
Pass Class 1A NICs through the employer NI incidence #2752
Description
#2750 adds Class 1A NICs on the company car and car fuel benefits to ni_employer, but the employer NI incidence covers secondary Class 1 only. employer_cost, baseline_employer_cost and adjusted_employer_cost leave out benefits in kind and the Class 1A on them. So no household bears Class 1A, or a change in it:
employer_ni_fixed_employer_cost_changereturns zero unless a Class 1 parameter changes, and the cost it holds fixed excludes Class 1A, so pay never absorbs a Class 1A change.employer_ni_response_capital_incidenceandemployer_ni_response_consumer_incidencespreadadjusted_employer_cost - baseline_employer_cost, which never moves with Class 1A.
A reform that changes Class 1A therefore raises gov_tax by more than it lowers household incomes. For example, raising the employer rate by one point raises the Class 1A on a £12,000 company car benefit by £120, and no household's income falls by it. Budget 2026's rise in the 2030-31 appropriate percentages (company_car_tax_rise_2030) does the same for its Class 1A part. HMRC's benefit in kind statistics put Class 1A at about 28% of the revenue from company cars.
#2750 keeps this on purpose, so that the 2030-31 rise is scored statically, as income tax plus Class 1A, comparable with the OBR's costing. It documents it in docs/book/assumptions/employer-ni-incidence.md and docs/book/programs/gov/hmrc/company-car-benefit.md.
What to change
Add Class 1A to the employer cost the incidence variables hold, so it is borne like secondary Class 1:
employer_costreadsni_employer(secondary Class 1 and Class 1A).baseline_employer_costadds the baseline simulation'sni_class_1a, andadjusted_employer_costthe reformed simulation's.employer_ni_fixed_employer_cost_changesolves for pay holding that cost fixed. Class 1A does not depend on pay, so the target is the baseline cost less the change in Class 1A. The early return must also check whetherni_class_1achanged.
With the default full employee incidence, a company car holder's pay would then fall to absorb a rise in Class 1A, and the lower pay would bear less income tax and NICs. For a higher-rate taxpayer above the upper earnings limit, a pay cut of the Class 1A change over 1.15 costs 40% + 2% + 15% of itself, so the revenue from the rise would fall by about half of its Class 1A part. Whether that should be the default for reforms like the 2030-31 rise is part of this issue.
Tests
- Conservation:
adjusted_employer_costequalsbaseline_employer_costfor a company car holder with positive reformed pay, under an employer rate reform and under the 2030-31 rise. - Agreement:
baseline_employer_costandadjusted_employer_costequal each simulation'semployer_cost, for holders too. - With employee incidence 0.5, the remaining Class 1A change reaches the capital and consumer channels in a population run.
Activity
Address review: student loans, HB tax share, zero-emission and uprating
vahid-ahmadi commentedon Oct 29, 2026
Checked against main at 64cf582 (after #2750). Code reading only; I ran nothing.
The claims hold.
employer_costaddsni_class_1_employer, notni_employer(variables/contrib/policyengine/employer_ni/employer_cost.py:29-34).baseline_employer_costandadjusted_employer_costrebuild secondary Class 1 only (baseline_employer_cost.py:64-67,adjusted_employer_cost.py:46-49), and both incidence channels spread their difference (employer_ni_response_capital_incidence.py:22-24,employer_ni_response_consumer_incidence.py:22-24).ni_class_1atakes the secondary Class 1 rate outside 2022-23 (gov/hmrc/national_insurance/ni_class_1a.py:36-40, SSCBA 1992 s. 10(5)), so a one-point rate rise on a £12,000 benefit is £120 of Class 1A that no household bears.should: the early return at
employer_ni_fixed_employer_cost_change.py:87-89compares parameters (rate, threshold, pension exemption). The 2030-31 rise changes no NI parameter, only the appropriate percentages, so the new check has to compareni_class_1avalues between the baseline and reformed simulations, not Class 1A parameters. A test withcompany_car_tax_rise_2030and no NI reform would pin this.nit: two docstrings state today's exclusion and will need changing with the fix:
employer_cost.py:6-13andni_class_1a.py:17-19, as well as the two book pages the issue names.Not checked: the 28% Class 1A share from HMRC's benefit in kind statistics.
🤖 Generated with Claude Code