Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
ab4022b
Apply the Pension Credit earnings disregards (SPC Regs 2002 Sch VI)
MaxGhenis Oct 1, 2026
3d4f12b
Cap the Pension Credit earnings disregard at net earnings (review of …
MaxGhenis Oct 2, 2026
b5567f4
Merge remote-tracking branch 'origin/main' into pc-earnings-disregard
MaxGhenis Oct 3, 2026
816a4e1
Tax earnings as the top slice on the person's schedule; carer entitle…
MaxGhenis Oct 4, 2026
cc47161
Merge remote-tracking branch 'origin/main' into pc-earnings-disregard
MaxGhenis Oct 12, 2026
d91b322
Measure Pension Credit net earnings as the statute does
MaxGhenis Oct 12, 2026
5689fad
Merge commit 'e2ea32893' into pc-earnings-disregard
MaxGhenis Oct 20, 2026
9eb9aaf
Preserve late explicit inputs in Pension Credit tax counterfactuals
MaxGhenis Oct 20, 2026
7736d5f
Fix Pension Credit notional Class 2 profit base
MaxGhenis Oct 20, 2026
9e23ce7
Reuse Pension Credit earnings tax in UC housing branch
MaxGhenis Oct 20, 2026
a10ab0c
Pin protected mixed-age couple Pension Credit award
MaxGhenis Oct 20, 2026
efcc491
fix: update Pension Credit gross earnings fixtures and held tax inputs
MaxGhenis Oct 20, 2026
eaf03fb
Merge remote-tracking branch 'origin/main' into pc-earnings-disregard
MaxGhenis Oct 20, 2026
d157482
test: remove pre-netted Pension Credit child amount inputs
MaxGhenis Oct 20, 2026
4e08807
test: use gross earnings in Pension Credit passport fixtures
MaxGhenis Oct 20, 2026
3055d0c
test: hold Pension Credit personal reliefs in trading-loss invariant
MaxGhenis Oct 20, 2026
dcf8d54
docs: qualify Pension Credit earnings flatness for pension contributions
MaxGhenis Oct 20, 2026
e3b9330
Merge current main into pc-earnings-disregard for round 2 validation
MaxGhenis Oct 20, 2026
54b409d
ci: retain Python collection after policy YAML failures
MaxGhenis Oct 20, 2026
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
4 changes: 4 additions & 0 deletions .github/workflows/test-suite.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,9 @@ jobs:
TESTS: ${{ steps.env.outputs.tests }}
run: policyengine-core test "$TESTS/policy" -c policyengine_uk
- name: List the Python tests
id: collect
# Keep Result's coverage audit available after a policy YAML failure.
if: ${{ !cancelled() && steps.env.outcome == 'success' }}
# Every Python test, collected without --shard, in the environment
# the shards use. Result checks that the shards ran each of these
# exactly once.
Expand All @@ -99,6 +102,7 @@ jobs:
--collect-only -q -p no:cacheprovider > collected.txt
tail -n 1 collected.txt
- name: Upload the list of Python tests
if: ${{ !cancelled() && steps.collect.outcome == 'success' }}
uses: actions/upload-artifact@v7
with:
name: test-collected
Expand Down
1 change: 1 addition & 0 deletions changelog.d/pc-earnings-disregard.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Apply the Pension Credit earnings disregards of SPC Regs 2002 Schedule VI: 20 pounds a week for lone parents, carers and claimants or partners on a listed disability benefit (including working tax credit with a disability element) or certified blind, otherwise 5 pounds (single) or 10 pounds (couple), capped at net earnings. Employed earnings are net of the income tax they add; self-employed earnings, in Pension Credit income too, are net of the notional tax and contributions of the Computation of Earnings Regulations 1996 reg. 14. The Housing Benefit savings-credit-only route now deducts only the higher Housing Benefit disregards.
1 change: 1 addition & 0 deletions changelog.d/pc-earnings-tax-reuse.changed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- Reuse Pension Credit earnings tax calculations when checking Universal Credit housing contribution exemptions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
description: Weekly earnings disregarded from Pension Credit income for a lone parent, a carer, or a claimant or partner on a listed disability benefit or certified blind. It is the most that can be disregarded however many conditions are met.
values:
2003-10-06: 20
metadata:
unit: currency-GBP
period: week
label: Pension Credit higher earnings disregard
reference:
- title: The State Pension Credit Regulations 2002 Sch. VI paras. 1, 3, 4 and 4A
href: https://www.legislation.gov.uk/uksi/2002/1792/schedule/VI
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
description: >
Benefit-unit awards whose receipt qualifies the benefit unit for the higher
Pension Credit earnings disregard (Sch. VI para. 4(1)(a)(vii), employment
and support allowance, from 27 October 2008). The model holds income-related
employment and support allowance on the benefit unit, as the claimant's
award; contributory employment and support allowance is a person-level
benefit in `disability_benefits`.
metadata:
label: Pension Credit higher earnings disregard benefit-unit disability benefits
unit: list
reference:
- title: The State Pension Credit Regulations 2002 Sch. VI para. 4(1)(a)(vii)
href: https://www.legislation.gov.uk/uksi/2002/1792/schedule/VI/paragraph/4
- title: The Employment and Support Allowance (Consequential Provisions) (No. 2) Regulations 2008 reg. 4(10)(a)(ii)
href: https://www.legislation.gov.uk/uksi/2008/1554/regulation/4
values:
2003-10-06: []
2008-10-27:
- esa_income
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
description: >
Person-level benefits whose receipt by the claimant or partner qualifies the
benefit unit for the higher Pension Credit earnings disregard (Sch. VI para.
4(1)(a)). Income-related employment and support allowance, a benefit-unit
award, is in `disability_benefit_unit_benefits`.
`incapacity_benefit` stands for long-term incapacity benefit (para.
4(1)(a)(i)); the model does not separate the short-term rates. Not modelled:
the war pensions mobility supplement (v), which has no variable; pension age
disability payment (iiia, from 21 October 2024), Scottish adult disability
living allowance (iva, from 21 March 2025) and adult disability payment
(viiia, from 21 March 2022), which have no separate variables. Working tax
credit with its disability or severe disability element (vi) is a
benefit-unit award, tested in the formula of
`pension_credit_earnings_disregard`.
metadata:
label: Pension Credit higher earnings disregard disability benefits
unit: list
reference:
- title: The State Pension Credit Regulations 2002 Sch. VI para. 4(1)(a)
href: https://www.legislation.gov.uk/uksi/2002/1792/schedule/VI/paragraph/4
- title: The Employment and Support Allowance (Consequential Provisions) (No. 2) Regulations 2008 reg. 4(10)(a)(ii) (ESA, from 27 October 2008)
href: https://www.legislation.gov.uk/uksi/2008/1554/regulation/4
- title: The Personal Independence Payment (Supplementary Provisions and Consequential Amendments) Regulations 2013 Sch. para. 27(8)(b) (PIP, from 8 April 2013)
href: https://www.legislation.gov.uk/uksi/2013/388/schedule/paragraph/27
- title: "The Armed Forces and Reserve Forces Compensation Scheme (Consequential Provisions: Subordinate Legislation) Order 2013 Sch. para. 23(8)(b) (AFIP, from 8 April 2013)"
href: https://www.legislation.gov.uk/uksi/2013/591/schedule/paragraph/23
values:
2003-10-06:
- incapacity_benefit
- sda
- attendance_allowance
- dla
2008-10-27:
- incapacity_benefit
- sda
- attendance_allowance
- dla
- esa_contrib
2013-04-08:
- incapacity_benefit
- sda
- attendance_allowance
- dla
- esa_contrib
- pip
- armed_forces_independence_payment
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
description: Weekly earnings disregarded from Pension Credit income where neither the claimant nor a partner qualifies for the higher disregard.
SINGLE:
values:
2003-10-06: 5
metadata:
label: Pension Credit standard earnings disregard (single)
COUPLE:
values:
2003-10-06: 10
metadata:
label: Pension Credit standard earnings disregard (couple)
metadata:
unit: currency-GBP
period: week
propagate_metadata_to_children: true
reference:
- title: The State Pension Credit Regulations 2002 Sch. VI para. 5
href: https://www.legislation.gov.uk/uksi/2002/1792/schedule/VI/paragraph/5
- title: The State Pension Credit Regulations 2002 reg. 17(9)
href: https://www.legislation.gov.uk/uksi/2002/1792/regulation/17
Original file line number Diff line number Diff line change
Expand Up @@ -141,8 +141,9 @@
pension_credit_assessable_capital: [20_000, 0]
# 18,000 + 1,040 = 19,040, above the couple minimum guarantee of 18,889.
# The non-dependant's is computed but he cannot have Pension Credit:
# 20,000 - 1,486 income tax - 594.40 National Insurance = 17,919.60.
pension_credit_income: [19_040, 17_919.60]
# 20,000 - 1,486 income tax - 594.40 National Insurance - the 5 pound
# earnings disregard (260) = 17,659.60.
pension_credit_income: [19_040, 17_659.60]
guarantee_credit: [0, 0]
# 1,045.20 - 0.4 x (19,040 - 18,889) = 1,045.20 - 60.40 = 984.80.
savings_credit: [984.80, 0]
Expand All @@ -169,9 +170,8 @@
members: [person1]
# £5 a week for a single claimant with earnings (Sch 4 para 7(a)),
# the same as the Pension Credit disregard (SPC Regs 2002 Sch VI
# para 5(a)); 5 x 52 = 260. Pension Credit income in the model
# disregards no earnings, so deducting it gives the Secretary of
# State's figure.
# para 5(a)); 5 x 52 = 260. The Secretary of State's figure is
# already after it, and reg 27(4) deducts only higher amounts.
housing_benefit_applicable_income_disregard: 260
households:
household:
Expand All @@ -180,14 +180,15 @@
tenure_type: RENT_FROM_COUNCIL
savings: 0
output:
# 13,000 - 86 = 12,914, as in case 1.
pension_credit_income: 12_914
savings_credit: 718.62
# 13,000 - 86 - the 5 pound Pension Credit earnings disregard (260).
pension_credit_income: 12_654
# 933.82 - 0.4 x (12,654 - 12,376) = 933.82 - 111.20 = 822.62.
savings_credit: 822.62
in_receipt_of_savings_credit_only: true
# 12,914 + 718.62 - 260 = 13,372.62.
housing_benefit_applicable_income: 13_372.62
# 7,800 - 0.65 x (13,372.62 - 13,312) = 7,800 - 39.40 = 7,760.60.
housing_benefit: 7_760.60
# 12,654 + 822.62 = 13,476.62; nothing more is disregarded.
housing_benefit_applicable_income: 13_476.62
# 7,800 - 0.65 x (13,476.62 - 13,312) = 7,800 - 107.00 = 7,693.00.
housing_benefit: 7_693

- name: Case 5, savings credit only lone parent in work, childcare charges and the lone parent and additional earnings disregards are deducted.
period: 2026
Expand All @@ -196,7 +197,7 @@
people:
person1:
age: 78
state_pension: 11_000
state_pension: 12_500
employment_income: 7_000
# 20 hours a week, so remunerative work (reg 6) and the reg 31
# condition for deducting childcare charges are met.
Expand All @@ -207,13 +208,10 @@
benunits:
benunit:
members: [person1, person2]
# Reg 27(4)(c)(i): the higher amount disregarded for a lone parent's
# earnings, £25 a week (Sch 4 para 2) against Pension Credit's £20
# (SPC Regs 2002 Sch VI para 1); and (d): the additional £17.10 (Sch
# 4 para 9(1)) for a lone parent working 16 hours or more whose net
# earnings cover the disregards and childcare. Pension Credit income
# in the model disregards no earnings, so the whole of both is
# deducted: (25 + 17.10) x 52 = 2,189.20, the value #1908 gives.
# The lone parent's £25 a week (Sch 4 para 2) and the additional
# £17.10 (Sch 4 para 9(1)) for a lone parent working 16 hours or more
# whose net earnings cover the disregards and childcare:
# (25 + 17.10) x 52 = 2,189.20, the value #1908 gives.
housing_benefit_applicable_income_disregard: 2_189.20
households:
household:
Expand All @@ -222,20 +220,57 @@
tenure_type: RENT_FROM_COUNCIL
savings: 0
output:
# (18,000 - 12,570) x 0.2 = 1,086; 18,000 - 1,086 = 16,914.
pension_credit_income: 16_914
# The lone parent's 20 pound Pension Credit disregard (SPC Regs 2002 Sch
# VI para 1): 20 x 52 = 1,040.
pension_credit_earnings_disregard: 1_040
# (19,500 - 12,570) x 0.2 = 1,386; 19,500 - 1,386 - 1,040 = 17,074.
pension_credit_income: 17_074
# 12,376 + 3,638.96 = 16,014.96.
minimum_guarantee: 16_014.96
guarantee_credit: 0
# 933.82 - 0.4 x (16,914 - 16,014.96) = 933.82 - 359.62 = 574.20.
savings_credit: 574.20
# 933.82 - 0.4 x (17,074 - 16,014.96) = 933.82 - 423.62 = 510.20.
savings_credit: 510.20
in_receipt_of_savings_credit_only: true
# Reg 27(4)(b): 2,600 of childcare (£50 a week), below the weekly
# maximum and the earnings.
housing_benefit_applicable_income_childcare_element: 2_600
# 16,914 + 574.20 - 2,600 - 2,189.20 = 12,699.
housing_benefit_savings_credit_only_income: 12_699
housing_benefit_applicable_income: 12_699
# Reg 27(4)(c)(i): the higher amount for a lone parent's earnings,
# 1,300 - 1,040 = 260; (d): the additional 17.10 x 52 = 889.20.
# 17,074 + 510.20 - 2,600 - 260 - 889.20 = 13,835.
housing_benefit_savings_credit_only_income: 13_835
housing_benefit_applicable_income: 13_835

- name: Case 5a, the same lone parent with less State Pension, whose 20 pound Pension Credit disregard brings a guarantee credit and its passport.
period: 2026
absolute_error_margin: 0.01
input:
people:
person1:
age: 78
state_pension: 11_000
employment_income: 7_000
hours_worked: 1_040
person2:
age: 8
childcare_expenses: 2_600
benunits:
benunit:
members: [person1, person2]
housing_benefit_applicable_income_disregard: 2_189.20
households:
household:
members: [person1, person2]
rent: 7_800
tenure_type: RENT_FROM_COUNCIL
savings: 0
output:
# (18,000 - 12,570) x 0.2 = 1,086; 18,000 - 1,086 - 1,040 = 15,874.
pension_credit_income: 15_874
# 16,014.96 - 15,874 = 140.96.
guarantee_credit: 140.96
in_receipt_of_savings_credit_only: false
# The guarantee credit passports the maximum Housing Benefit: the rent.
housing_benefit: 7_800

- name: Case 6, guarantee credit and savings credit together, the award is not savings credit only and the guarantee credit passport applies.
period: 2026
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -160,9 +160,13 @@
is_claimant_or_partner: [true, true]
# SPCA 2002 s.5: gross = 5,000 + 1,000 + 100 + 2,000 + 500 + 200
# + 104 = 8,904; deductions = 100 + 50 + 25 + 50% * 300 = 325.
pension_credit_income: 8_579
# Sch VI para 3 (both carers): 20 pounds a week, capped at net earnings
# (claimant 1,000 - 100 tax - 100 half contributions = 800; partner
# 500 - 25 NI - 50 tax - 50 = 375; 1,175), so 1,040 is disregarded:
# 8,904 - 325 - 1,040.
pension_credit_income: 7_539
# Reg.9: remove the claimant's 100 JSA and partner's 200 ESA.
savings_credit_income: 8_279
savings_credit_income: 7_239
# Sch.I para.4 and the 2026 carer addition: 2 * 48.15 * 52 = 5,007.60.
carer_minimum_guarantee_addition: 5_007.60

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,11 @@
# credit (SPCA 2002 s.3(1)(a)). The 2018-19 and 2019-20 couples have no
# income, so no savings credit either. The Housing Benefit cases' couple is
# aged 80, so savings credit applies to it. The grandchild is 10 (11 in
# 2025-26), born before 6 April 2017. Pension Credit earnings are entered net
# of the SPC Regs Sch VI para 5 disregard (£10 a week for a couple), which
# the model does not apply. £10,000 of savings gives no Pension Credit tariff
# income, and £300 of interest uses up the £300 step-one disregard of tax
# credit income (SI 2002/2006 reg 3). No one pays income tax or National
# Insurance.
# 2025-26), born before 6 April 2017. Employment income is gross: the model
# applies the SPC Regs Sch VI para 5 disregard (£10 a week for a couple)
# once. £10,000 of savings gives no Pension Credit tariff income, and £300
# of interest uses up the £300 step-one disregard of tax credit income
# (SI 2002/2006 reg 3). No one pays income tax or National Insurance.

- name: A Pension Credit couple awarded CTC and WTC gets no child amount
# Tax credit income: State Pension 8,000 + interest (300 - 300) + earnings
Expand Down Expand Up @@ -83,7 +82,7 @@
benunit:
members: [grandparent_1, grandparent_2, grandchild]
would_claim_uc: false
pension_credit_earnings: 2_080 # 2,600 - 10 x 52
# Gross wages are 2,600; Sch VI deducts 10 x 52, leaving 2,080.
CTC_family_element: 545
households:
household:
Expand Down Expand Up @@ -125,7 +124,7 @@
benunit:
members: [grandparent_1, grandparent_2, grandchild]
would_claim_uc: false
pension_credit_earnings: 2_080
# Gross wages are 2,600; Sch VI deducts 520, leaving 2,080 once.
households:
household:
members: [grandparent_1, grandparent_2, grandchild]
Expand Down Expand Up @@ -166,7 +165,7 @@
benunit:
members: [grandparent_1, grandparent_2, grandchild]
would_claim_uc: false
pension_credit_earnings: 2_080
# As in the first case, gross wages 2,600 become 2,080 after Sch VI.
households:
household:
members: [grandparent_1, grandparent_2, grandchild]
Expand Down Expand Up @@ -213,7 +212,7 @@
benunit:
members: [grandparent_1, grandparent_2, grandchild]
would_claim_uc: false
pension_credit_earnings: 2_980 # 3,500 - 10 x 52
# Gross wages 3,500 become 2,980 after Sch VI, even with no PC paid.
households:
household:
members: [grandparent_1, grandparent_2, grandchild]
Expand Down Expand Up @@ -254,7 +253,7 @@
benunit:
members: [grandparent_1, grandparent_2, grandchild]
would_claim_uc: false
pension_credit_earnings: 2_080
# Gross wages 2,600 less one Sch VI disregard of 520 give 2,080.
has_tax_credit_award: true
households:
household:
Expand Down Expand Up @@ -407,7 +406,7 @@
benunit:
members: [grandparent_1, grandparent_2, grandchild]
would_claim_uc: false
pension_credit_earnings: 2_080
# Tax-credit closure does not alter gross wages 2,600 less Sch VI 520.
standard_minimum_guarantee: 18_023.20 # 346.60 x 52
would_claim_uc_at_legacy_closure: false
households:
Expand Down
Loading
Loading