Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 7 additions & 3 deletions .github/workflows/test-suite.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -84,9 +84,13 @@ jobs:
# (two more were cancelled by newer pushes). In merge-queue run
# 40541059060 the cancelled job failed Result once the shards had
# finished, which took that pull request out of the queue. 45 minutes
# leaves room for a slow runner and still stops a hung job; Result
# waits about an hour for the shards anyway.
timeout-minutes: 45
# was then not enough either: on 29 October jobs were cancelled at it
# after every test had passed, with the process still alive 11 and 18
# minutes after pytest's summary (runs 40895005971 and 40917254004).
# The runner most likely runs short of memory, because every case's
# simulation is kept to the end (#2741). 75 minutes matches the Python
# shards, which Result waits for anyway, until the cases are released.
timeout-minutes: 75
steps:
- name: Checkout repo
uses: actions/checkout@v6
Expand Down
1 change: 1 addition & 0 deletions changelog.d/2749.added.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Added the company car and car fuel benefits in kind from 2020-21 (ITEPA 2003 ss. 120 to 152), with the s. 139 appropriate percentages to 2029-30, person inputs for the company car, and Class 1A NICs on both benefits in `ni_employer` and `total_national_insurance`; the benefits are taxed through `taxable_employment_income` and kept out of Class 1 earnings, means-tested earnings and student loan repayment income, and the `company_car_tax_rise_2030` scenario applies Budget 2026's one-point rise for 2030-31.
13 changes: 13 additions & 0 deletions docs/book/assumptions/employer-ni-incidence.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,19 @@ The response amounts enter `household_tax`; those same variables are not added t
and [capital](https://github.com/PolicyEngine/policyengine-uk/blob/b4dbaf57a4ebb1d1f0ba5f7a384795422828db75/policyengine_uk/variables/contrib/policyengine/employer_ni/employer_ni_response_capital_incidence.py)
allocation formulas.

## Secondary Class 1 only

All three channels cover secondary Class 1 contributions. `ni_employer` also
holds Class 1A contributions on benefits in kind (`ni_class_1a`), but
`employer_cost`, `baseline_employer_cost` and `adjusted_employer_cost` leave
them out, as they leave out the benefits themselves. No household bears
Class 1A or a change in it, whether the change comes from the benefits (as
with a rise in the company car appropriate percentages) or from the employer
rate, which Class 1A follows (SSCBA 1992 s. 10(5)). Such a reform raises
`gov_tax` by its Class 1A change on top of what households pay. Passing
Class 1A through these channels is
[#2752](https://github.com/PolicyEngine/policyengine-uk/issues/2752).

## Measures and aggregation

Report these quantities separately:
Expand Down
149 changes: 149 additions & 0 deletions docs/book/programs/gov/hmrc/company-car-benefit.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,149 @@
# Company car and car fuel benefits

A car an employer makes available for an employee's private use is a
benefit in kind: its cash equivalent is taxed as employment income
([ITEPA 2003 s. 120][s120]), and so is fuel provided for its private use
([s. 149][s149]). The employer pays Class 1A National Insurance on both
([SSCBA 1992 s. 10][sscba10]). The model calculates both benefits from
2020-21.

## Inputs

Each person can have one company car. The inputs default to no car, so a
simulation that sets none of them is unchanged.

| Input | Meaning |
| --- | --- |
| `company_car_list_price` | List price of the car and its accessories; zero means no company car |
| `company_car_capital_contributions` | Capital sums the employee has contributed, this year and earlier |
| `company_car_co2_emissions` | CO2 emissions figure in g/km (0 for a car that cannot emit CO2) |
| `company_car_electric_range` | Electric range figure in miles |
| `company_car_fuel_type` | Fuel type (the `CarFuelType` enum also used for vehicle excise duty) |
| `company_car_registered_from_6_april_2020` | First registered on or after 6 April 2020 (matters in 2020-21 and 2021-22 only) |
| `company_car_availability` | Share of the tax year the car is available (default 1) |
| `company_car_private_use_payments` | Payments for private use |
| `company_car_private_fuel_provided` | Fuel provided for private use and not made good in full |

The `car_*` inputs describe the person's own car for vehicle excise duty
and play no part here.

Data that fills these inputs needs to know three things:

- **Set the CO2 figure with the list price.** The model cannot tell a
missing figure from 0 g/km, so a car with a list price and no CO2 figure is
taxed at the zero-emission rate. A car of the `ELECTRIC` fuel type is taken
to emit 0 g/km whatever figure is entered.
- **Keep the benefits out of pay.** `employment_income` must not also hold
them, or they are taxed twice and wrongly bear employee NICs. The SPI's
EPB (expenses payments and benefits in kind) includes them, so a dataset
that adds EPB to pay, as policyengine-uk-data's SPI records do, must take
the car and car fuel benefits out of it.
- **Projected years.** The list price, capital contributions and payments
for private use grow with CPI when a dataset is projected to later years.
CPI stands in for a new-car price index, which the OBR does not forecast.

## Calculation

`company_car_appropriate_percentage` applies [s. 139][s139]: a rate for
0 g/km, rates for 1 to 50 g/km by electric range (one rate from 2028-29),
a rate for each band from 51-54 to 70-74 g/km (65-74 g/km from 2028-29),
and from 75 g/km a base rate plus one point for each full 5 g/km, up to the
maximum. A diesel car not meeting the Euro 6d (RDE2) standard adds 4 points,
within the maximum ([s. 141][s141]); a car that cannot emit CO2 takes no
supplement. In 2020-21 and 2021-22 a car first registered on or after
6 April 2020 takes the lower rates of s. 139A (Finance Act 2020 ss. 9 and
10). The appropriate percentage is zero for a person without a company car
(`has_company_car`).

`company_car_benefit` follows the steps of [s. 121][s121]: the price, less
capital contributions up to £5,000, times the appropriate percentage,
reduced in proportion to the days the car is unavailable, less payments for
private use, and never below zero. `car_fuel_benefit` is the appropriate
percentage of the car fuel benefit charge multiplier ([s. 150][s150]),
reduced in proportion to the days the car is unavailable. It is nil for a
car that cannot emit CO2. `benefits_in_kind` adds the two.

## Where the benefits go

- **Income tax.** `taxable_employment_income` adds `benefits_in_kind`, so the
benefits reach income tax, at Scottish rates for a Scottish taxpayer, and
adjusted net income: the personal allowance taper, the High Income Child
Benefit Charge, and the £100,000 limits of Tax-Free Childcare and the
extended childcare entitlement. They count as relevant UK earnings for the
limit on pension tax relief (HMRC PTM044100).
- **Not student loan income.** Student loan repayments and the Plan 2
interest rate leave the benefits out: Self Assessment excludes Chapter 6
car benefits ([SI 2009/470 reg. 29(4)(e)][sl29]), and PAYE deducts
repayments from Class 1 earnings (reg. 41).
- **Not earnings for Class 1 or the means tests.** The benefits are not in
`employment_income` or `employment_benefits`, so employee Class 1 NICs and
the earnings of Universal Credit ([UC Regulations 2013 reg. 55(2)(a)][uc55]),
Housing Benefit (HB Regulations 2006 reg. 35(2)(a)) and Council Tax
Reduction leave them out. Those tests still deduct the income tax on them,
which is tax paid in respect of the employment (reg. 55(5)(b)) and which
PAYE collects from pay. Universal Credit takes earnings as the lowest slice
of income, so it deducts all of that tax. Housing Benefit and Council Tax
Reduction deduct earnings' share of the person's tax, and count the
benefits with pay in that share; with other income, part of the tax on the
benefits falls on the other income, as part of the tax on pay does. The
Childcare Offer for Wales's gross income lists its sources one by one, and
benefits in kind are not among them.
- **Employer National Insurance.** `ni_class_1a` is the Class 1A percentage
of `benefits_in_kind`, and `ni_employer` adds it to secondary Class 1, so it
reaches `gov_tax`. The Class 1A percentage is the secondary percentage for
the year, except 14.53% in 2022-23.
- **No household bears Class 1A.** `employer_cost`, and the employer NI
incidence variables that recompute it, cover pay and secondary Class 1
only. So the fixed-cost pay response and the capital and consumer
channels leave out Class 1A and any change in it: it stays with employers
as revenue. A reform that changes Class 1A, such as the 2030-31 rise below
or a rise in the employer rate, raises `gov_tax` by more than it lowers
household incomes. Passing Class 1A through like secondary Class 1 is
[#2752](https://github.com/PolicyEngine/policyengine-uk/issues/2752).

## 2030-31

Finance Act 2025 s. 6 sets the rates for 2029-30 and subsequent tax years,
so the baseline keeps them for 2030-31: 9% for 0 g/km, 19% for 1 to 50 g/km
and a 39% maximum. Budget 2026 raises every rate for 2030-31 by one point, to
a maximum of 40%, to be legislated in Finance Bill 2026-27. The
`company_car_tax_rise_2030` scenario applies that rise:

```python
from policyengine_uk import Simulation
from policyengine_uk.scenarios import company_car_tax_rise_2030

reformed = Simulation(situation=situation, scenario=company_car_tax_rise_2030)
```

`policyengine_uk.scenarios.company_car_tax_rise_2030.COMPANY_CAR_TAX_RISE_2030`
holds the same changes as a parameter-changes dictionary.

The car fuel benefit charge multiplier is in the baseline for 2027-28 at the
£30,200 Budget 2026 announced, before the Treasury order is made. That is the
annual CPI uprating, which the Budget does not score, so a pre-Budget
baseline has it too; the 2030-31 rise is a policy decision Budget 2026 scores
(Table 6.1, row 86). The fuel part of the rise depends on the multiplier.

## Not modelled

- Vans and van fuel (ITEPA 2003 s. 154 onwards).
- Optional remuneration arrangements (s. 120A), shared cars (s. 148) and
pool cars (s. 167).
- Classic cars (s. 147), cars without a CO2 emissions figure (s. 140) and
cars first registered before 1 January 1998 (s. 142).
- Fuel provided for only part of the year (s. 152(2)).
- Other benefits in kind.

The survey data does not fill these inputs yet, so a population run scores
the company car benefits at zero until a dataset does.

[s120]: https://www.legislation.gov.uk/ukpga/2003/1/section/120
[s121]: https://www.legislation.gov.uk/ukpga/2003/1/section/121
[s139]: https://www.legislation.gov.uk/ukpga/2003/1/section/139
[s141]: https://www.legislation.gov.uk/ukpga/2003/1/section/141
[s149]: https://www.legislation.gov.uk/ukpga/2003/1/section/149
[s150]: https://www.legislation.gov.uk/ukpga/2003/1/section/150
[sscba10]: https://www.legislation.gov.uk/ukpga/1992/4/section/10
[sl29]: https://www.legislation.gov.uk/uksi/2009/470/regulation/29
[uc55]: https://www.legislation.gov.uk/uksi/2013/376/regulation/55
1 change: 1 addition & 0 deletions policyengine_uk/data/fiscal_partition.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -743,6 +743,7 @@ exclusions:
- {variable: employer_ni_fixed_employer_cost_change, kind: change_measure, head: nics_employer, note: "The wage change from an employer NI reform; employment_income already adds it."}
- {variable: salary_sacrifice_broad_base_haircut, kind: change_measure, head: nics_employer, note: "A wage change employment_income already adds."}
- {variable: ni_class_1_employer, kind: component, head: nics_employer}
- {variable: ni_class_1a, kind: component, head: nics_employer}
- {variable: salary_sacrifice_pension_ni_employee, kind: measure_within, head: nics_individual, note: "The excess sacrifice is added back to ni_class_1_income, so Class 1 already charges it."}
- {variable: salary_sacrifice_pension_ni_employer, kind: measure_within, head: nics_employer, note: "As above, for employer Class 1."}
- {variable: tax, kind: composite, spans: [income_tax, nics_individual]}
Expand Down
5 changes: 5 additions & 0 deletions policyengine_uk/data/uprating_indices.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,11 @@ gov.economic_assumptions.yoy_growth.obr.consumer_price_index:
- childcare_expenses
- clothing_and_footwear_consumption
- communication_consumption
# Company car prices and the payments that go with them. CPI stands in for
# a new-car price index, which the OBR does not forecast.
- company_car_capital_contributions
- company_car_list_price
- company_car_private_use_payments
- education_consumption
- esa_contrib_reported
- esa_income_reported
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Benefits in kind
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Car fuel
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
description: Amount to which the company car's appropriate percentage is applied to give the cash equivalent of fuel provided for its private use (the car fuel benefit charge multiplier).
# The Treasury sets this by order under ITEPA 2003 s. 170(5); no statute
# indexes it. The 2027-28 figure is announced: Budget 2026 OOTLAR paragraph
# 2.6 gives £30,200 (September CPI uprating), and the Treasury order is not
# yet made. It is in the baseline although the Budget 2026 rise in the
# appropriate percentages for 2030-31 is not: that rise is a policy decision
# Budget 2026 scores (Table 6.1, row 86), while this is the annual CPI
# uprating, which the Budget lists among its other announcements and does
# not score, so a pre-Budget baseline has it too. From 2028-29 the values
# are a CPI projection, as the government has uprated the figure by
# September CPI each year; none is announced.
values:
2020-04-06:
value: 24_500
metadata:
reference:
- title: The Van Benefit and Car and Van Fuel Benefit Order 2020 (SI 2020/199) art. 2
href: https://www.legislation.gov.uk/uksi/2020/199/article/2/made
2021-04-06:
value: 24_600
metadata:
reference:
- title: The Van Benefit and Car and Van Fuel Benefit Order 2021 (SI 2021/248) art. 2
href: https://www.legislation.gov.uk/uksi/2021/248/article/2/made
2022-04-06:
value: 25_300
metadata:
reference:
- title: The Van Benefit and Car and Van Fuel Benefit (No. 2) Order 2021 (SI 2021/1422) art. 2
href: https://www.legislation.gov.uk/uksi/2021/1422/article/2/made
2023-04-06:
value: 27_800
metadata:
reference:
- title: The Van Benefit and Car and Fuel Benefit Order 2022 (SI 2022/1288) art. 2 (tax year 2023-24 and subsequent tax years)
href: https://www.legislation.gov.uk/uksi/2022/1288/article/2/made
2025-04-06:
value: 28_200
metadata:
reference:
- title: The Van Benefit and Car and Van Fuel Benefit Order 2024 (SI 2024/1349) art. 2(2)
href: https://www.legislation.gov.uk/uksi/2024/1349/article/2/made
2026-04-06:
value: 29_200
metadata:
reference:
- title: The Van Benefit and Car and Van Fuel Benefit Order 2025 (SI 2025/1254) art. 2(2)
href: https://www.legislation.gov.uk/uksi/2025/1254/article/2/made
2027-04-06:
value: 30_200
metadata:
reference:
- title: Budget 2026, overview of tax legislation and rates, paragraph 2.6
href: https://www.gov.uk/government/publications/budget-2026-overview-of-tax-legislation-and-rates-ootlar/budget-2026-overview-of-tax-legislation-and-rates-ootlar
metadata:
unit: currency-GBP
period: year
label: Car fuel benefit charge multiplier
uprating: gov.economic_assumptions.indices.obr.consumer_price_index
reference:
- title: Income Tax (Earnings and Pensions) Act 2003 s. 150(1)
href: https://www.legislation.gov.uk/ukpga/2003/1/section/150
- title: Income Tax (Earnings and Pensions) Act 2003 s. 170(5)
href: https://www.legislation.gov.uk/ukpga/2003/1/section/170
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Company car
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Appropriate percentage
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
description: Appropriate percentage for a company car with a CO2 emissions figure of 51 to 74 g/km, by that figure rounded down to a whole number.
# Finance Act 2025 s. 5 merges the 65-69 and 70-74 bands into one 65-74 band
# from 2028-29, so the last two brackets have the same amount from then.
# For 2020-21 and 2021-22 these are the rates for cars first registered
# before 6 April 2020; registered_from_6_april_2020 holds the s. 139A rates.
# The tax year 2030-31 keeps 2029-30's rates. Budget 2026 announced one
# point more in every band; the company_car_tax_rise_2030 scenario applies it.
metadata:
type: single_amount
threshold_unit: g/km
amount_unit: /1
period: year
label: Company car appropriate percentage by CO2 emissions, 51 to 74 g/km
reference:
- title: Income Tax (Earnings and Pensions) Act 2003 s. 139(1) and (2)(a)
href: https://www.legislation.gov.uk/ukpga/2003/1/section/139
- title: Finance (No. 2) Act 2017 s. 2(2) (tax years 2020-21 to 2024-25)
href: https://www.legislation.gov.uk/ukpga/2017/32/section/2/enacted
- title: Finance Act 2023 s. 11 (tax years 2025-26, 2026-27 and 2027-28)
href: https://www.legislation.gov.uk/ukpga/2023/1/section/11/enacted
- title: Finance Act 2025 s. 5(2) (tax year 2028-29)
href: https://www.legislation.gov.uk/ukpga/2025/8/section/5/enacted
- title: Finance Act 2025 s. 6(2) (tax year 2029-30 and subsequent tax years)
href: https://www.legislation.gov.uk/ukpga/2025/8/section/6/enacted
- title: "HMRC 480 Appendix 2: appropriate percentages for 2020-21 to 2026-27"
href: https://www.gov.uk/guidance/company-car-benefit-the-appropriate-percentage-480-appendix-2
brackets:
# 51 to 54 g/km.
- threshold:
2020-04-06: 51
amount:
2020-04-06: 0.15
2025-04-06: 0.16
2026-04-06: 0.17
2027-04-06: 0.18
2028-04-06: 0.19
2029-04-06: 0.20
# 55 to 59 g/km.
- threshold:
2020-04-06: 55
amount:
2020-04-06: 0.16
2025-04-06: 0.17
2026-04-06: 0.18
2027-04-06: 0.19
2028-04-06: 0.20
2029-04-06: 0.21
# 60 to 64 g/km.
- threshold:
2020-04-06: 60
amount:
2020-04-06: 0.17
2025-04-06: 0.18
2026-04-06: 0.19
2027-04-06: 0.20
2028-04-06: 0.21
2029-04-06: 0.22
# 65 to 69 g/km.
- threshold:
2020-04-06: 65
amount:
2020-04-06: 0.18
2025-04-06: 0.19
2026-04-06: 0.20
2027-04-06: 0.21
2028-04-06: 0.22
2029-04-06: 0.23
# 70 to 74 g/km. In 2027-28 Finance Act 2023 s. 11(7) keeps it at 21%,
# level with 65-69 g/km and with the 75 g/km rate.
- threshold:
2020-04-06: 70
amount:
2020-04-06: 0.19
2025-04-06: 0.20
2026-04-06: 0.21
2027-04-06: 0.21
2028-04-06: 0.22
2029-04-06: 0.23
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
description: Percentage points added to the appropriate percentage of a company car propelled solely by diesel that does not meet the Euro 6d (RDE2) emissions standard, up to the maximum appropriate percentage.
values:
2020-04-06: 0.04
metadata:
unit: /1
period: year
label: Company car diesel supplement
reference:
- title: Income Tax (Earnings and Pensions) Act 2003 s. 141
href: https://www.legislation.gov.uk/ukpga/2003/1/section/141
- title: Finance Act 2018 s. 9(3)(b) (4 percentage points from 2018-19)
href: https://www.legislation.gov.uk/ukpga/2018/3/section/9/enacted
Loading
Loading