Skip to content
Draft
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
1 change: 1 addition & 0 deletions changelog.d/2361.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- The salary sacrifice National Insurance measures (`salary_sacrifice_pension_ni_employee` and `salary_sacrifice_pension_ni_employer`) now equal the change in the Class 1 liability from the amount returned to income: an amount crossing the upper earnings limit is split between the main and additional rates, and the thresholds and age conditions apply. No tax total changes.
1 change: 1 addition & 0 deletions changelog.d/2362.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- Corrected units: `shareholding` and `consumption_shareholding` are shares (`/1`, so a month's value is no longer a twelfth of the share), `free_tv_licence_value` is in pounds, and seven true/false variables (`sdlt_liable`, `lbtt_liable`, `benunit_is_rent_liable`, the three Pension Credit eligibility flags and `car_is_ved_exempt`) no longer declare a unit. No yearly value changes.
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,124 @@
# Full excess is redirected (no targeted haircut)
salary_sacrifice_returned_to_income: 1_000

# The cases below set only the pay (employment_income_before_lsr), so
# employment_income is the pay plus the amount returned. The charge is the
# employee Class 1 liability on those earnings less the liability without the
# amount returned. 2025 thresholds: primary threshold 241.73 x 52 = 12,569.96,
# upper earnings limit 966.73 x 52 = 50,269.96.
- name: Amount returned straddles the upper earnings limit
period: 2025
absolute_error_margin: 0.01
input:
employment_income_before_lsr: 48_000
pension_contributions_via_salary_sacrifice: 6_000
gov.hmrc.national_insurance.salary_sacrifice_pension_cap: 2_000
gov.contrib.behavioral_responses.salary_sacrifice_broad_base_haircut_rate: 0
output:
salary_sacrifice_returned_to_income: 4_000
employment_income: 52_000
# 8% from 48,000 to the limit, 2% from the limit to 52,000 = 216.20.
# (A single rate on the whole amount would give 4,000 x 2% = 80.)
salary_sacrifice_pension_ni_employee: (50_269.96 - 48_000) * 0.08 + (52_000 - 50_269.96) * 0.02

- name: Amount returned stays below the primary threshold
period: 2025
absolute_error_margin: 0.01
input:
employment_income_before_lsr: 6_000
pension_contributions_via_salary_sacrifice: 5_000
gov.hmrc.national_insurance.salary_sacrifice_pension_cap: 2_000
gov.contrib.behavioral_responses.salary_sacrifice_broad_base_haircut_rate: 0
output:
employment_income: 9_000
# Earnings of 9,000 are below the threshold, so no contributions are due.
ni_class_1_employee: 0
salary_sacrifice_pension_ni_employee: 0

- name: Amount returned straddles the primary threshold
period: 2025
absolute_error_margin: 0.01
input:
employment_income_before_lsr: 11_000
pension_contributions_via_salary_sacrifice: 5_000
gov.hmrc.national_insurance.salary_sacrifice_pension_cap: 2_000
gov.contrib.behavioral_responses.salary_sacrifice_broad_base_haircut_rate: 0
output:
employment_income: 14_000
# Only the part above the threshold is charged: 1,430.04 x 8% = 114.40.
ni_class_1_employee: (14_000 - 12_569.96) * 0.08
salary_sacrifice_pension_ni_employee: (14_000 - 12_569.96) * 0.08

- name: No employee charge over State Pension age
period: 2025
absolute_error_margin: 0.01
input:
age: 70
employment_income_before_lsr: 45_000
pension_contributions_via_salary_sacrifice: 5_000
gov.hmrc.national_insurance.salary_sacrifice_pension_cap: 2_000
gov.contrib.behavioral_responses.salary_sacrifice_broad_base_haircut_rate: 0
output:
salary_sacrifice_returned_to_income: 3_000
# Primary contributions end at pensionable age (SSCBA 1992 s.6(3)).
ni_class_1_employee: 0
salary_sacrifice_pension_ni_employee: 0

- name: No employee charge under 16
period: 2025
absolute_error_margin: 0.01
input:
age: 15
employment_income_before_lsr: 20_000
pension_contributions_via_salary_sacrifice: 5_000
gov.hmrc.national_insurance.salary_sacrifice_pension_cap: 2_000
gov.contrib.behavioral_responses.salary_sacrifice_broad_base_haircut_rate: 0
output:
salary_sacrifice_returned_to_income: 3_000
ni_class_1_employee: 0
salary_sacrifice_pension_ni_employee: 0

- name: Statutory pay counts towards the upper earnings limit
period: 2025
absolute_error_margin: 0.01
input:
employment_income_before_lsr: 46_000
statutory_sick_pay: 3_000
pension_contributions_via_salary_sacrifice: 5_000
gov.hmrc.national_insurance.salary_sacrifice_pension_cap: 2_000
gov.contrib.behavioral_responses.salary_sacrifice_broad_base_haircut_rate: 0
output:
employment_income: 49_000
ni_class_1_income: 52_000
# Class 1 earnings are 52,000 with the 3,000 returned and 49,000 without.
salary_sacrifice_pension_ni_employee: (50_269.96 - 49_000) * 0.08 + (52_000 - 50_269.96) * 0.02

- name: Worked example in the salary sacrifice cap research post
period: 2025
absolute_error_margin: 0.01
input:
# A 50,000 salary with 5,000 sacrificed leaves pay of 45,000.
employment_income_before_lsr: 45_000
pension_contributions_via_salary_sacrifice: 5_000
gov.hmrc.national_insurance.salary_sacrifice_pension_cap: 2_000
gov.contrib.behavioral_responses.salary_sacrifice_broad_base_haircut_rate: 0
output:
employment_income: 48_000
# Earnings stay below the upper earnings limit: 3,000 x 8% = 240.
salary_sacrifice_pension_ni_employee: 240

- name: Current law in 2029, with the cap and the broad-base haircut
period: 2029
absolute_error_margin: 0.01
input:
employment_income_before_lsr: 48_000
pension_contributions_via_salary_sacrifice: 6_000
output:
salary_sacrifice_returned_to_income: 4_000
# 48,000 + 4,000 returned - 76.80 haircut (0.16% of 48,000).
employment_income: 51_923.20
salary_sacrifice_pension_ni_employee: (50_269.96 - 47_923.20) * 0.08 + (51_923.20 - 50_269.96) * 0.02

- name: Broad-base haircut reduces all workers employment income
period: 2025
absolute_error_margin: 1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -105,3 +105,92 @@
salary_sacrifice_pension_ni_employer: (3_000 - 2_000) * 0.15
# Full excess is redirected (no targeted haircut)
salary_sacrifice_returned_to_income: 1_000

# The cases below set only the pay (employment_income_before_lsr), so
# employment_income is the pay plus the amount returned. The charge is the
# employer Class 1 liability on those earnings less the liability without the
# amount returned. 2025 secondary threshold: 96.153846 x 52 = 5,000.
- name: Amount returned stays below the secondary threshold
period: 2025
absolute_error_margin: 0.01
input:
employment_income_before_lsr: 1_500
pension_contributions_via_salary_sacrifice: 5_000
gov.hmrc.national_insurance.salary_sacrifice_pension_cap: 2_000
gov.contrib.behavioral_responses.salary_sacrifice_broad_base_haircut_rate: 0
output:
employment_income: 4_500
# Earnings of 4,500 are below the threshold, so no contributions are due.
# (The rate on the whole amount would give 3,000 x 15% = 450.)
ni_class_1_employer: 0
salary_sacrifice_pension_ni_employer: 0

- name: Amount returned straddles the secondary threshold
period: 2025
absolute_error_margin: 0.01
input:
employment_income_before_lsr: 3_000
pension_contributions_via_salary_sacrifice: 5_000
gov.hmrc.national_insurance.salary_sacrifice_pension_cap: 2_000
gov.contrib.behavioral_responses.salary_sacrifice_broad_base_haircut_rate: 0
output:
employment_income: 6_000
# Only the part above the threshold is charged: 1,000 x 15% = 150.
ni_class_1_employer: (6_000 - 5_000) * 0.15
salary_sacrifice_pension_ni_employer: (6_000 - 5_000) * 0.15

- name: Employer charge continues over State Pension age
period: 2025
absolute_error_margin: 0.01
input:
age: 70
employment_income_before_lsr: 45_000
pension_contributions_via_salary_sacrifice: 5_000
gov.hmrc.national_insurance.salary_sacrifice_pension_cap: 2_000
gov.contrib.behavioral_responses.salary_sacrifice_broad_base_haircut_rate: 0
output:
# Secondary contributions have no upper age limit (SSCBA 1992 s.6(3)).
salary_sacrifice_pension_ni_employer: 3_000 * 0.15

- name: No employer charge under 16
period: 2025
absolute_error_margin: 0.01
input:
age: 15
employment_income_before_lsr: 20_000
pension_contributions_via_salary_sacrifice: 5_000
gov.hmrc.national_insurance.salary_sacrifice_pension_cap: 2_000
gov.contrib.behavioral_responses.salary_sacrifice_broad_base_haircut_rate: 0
output:
salary_sacrifice_returned_to_income: 3_000
ni_class_1_employer: 0
salary_sacrifice_pension_ni_employer: 0

- name: Employer pension contributions count when they are not exempt
period: 2025
absolute_error_margin: 0.01
input:
employment_income_before_lsr: 1_500
employer_pension_contributions: 2_000
pension_contributions_via_salary_sacrifice: 5_000
gov.hmrc.national_insurance.salary_sacrifice_pension_cap: 2_000
gov.contrib.behavioral_responses.salary_sacrifice_broad_base_haircut_rate: 0
gov.contrib.policyengine.employer_ni.exempt_employer_pension_contributions: false
output:
employment_income: 4_500
# Charged earnings are 4,500 + 2,000 = 6,500 with the 3,000 returned and
# 3,500 without: (6,500 - 5,000) x 15% = 225.
ni_class_1_employer: (6_500 - 5_000) * 0.15
salary_sacrifice_pension_ni_employer: (6_500 - 5_000) * 0.15

- name: Current law in 2029, with the cap and the broad-base haircut
period: 2029
absolute_error_margin: 0.01
input:
employment_income_before_lsr: 48_000
pension_contributions_via_salary_sacrifice: 6_000
output:
salary_sacrifice_returned_to_income: 4_000
employment_income: 51_923.20
# Earnings stay above the secondary threshold: 4,000 x 15% = 600.
salary_sacrifice_pension_ni_employer: 4_000 * 0.15
Loading
Loading