Skip to content

Commit 9e16546

Browse files
vahid-ahmadiclaude
andauthored
Add Scottish Carer Support Payment (#1615)
* Add Scottish Carer Support Payment Implement Carer Support Payment (CSP) which replaced Carer's Allowance for carers living in Scotland. Includes: - CSP parameters: rate, supplement (from March 2026), and min hours - CSP variable with Scotland-only eligibility - Exclude Scottish residents from Carer's Allowance - Add CSP to benefit aggregations, HBAI income, gov spending, and taxable social security income - Update is_carer_for_benefits to recognise CSP recipients Fixes #950. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Fix YAML test format for carer_support_payment Use flat input/output format compatible with policyengine-core test runner instead of multi-entity nested format. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Fix CSP transition and linked benefit interactions * Format CSP regression test --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 1339ce9 commit 9e16546

21 files changed

Lines changed: 221 additions & 8 deletions

File tree

changelog.d/950.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
- Add Scottish Carer Support Payment, replacing Carer's Allowance for Scottish residents
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
description: Minimum number of hours spent providing care to qualify for Carer Support Payment.
2+
values:
3+
2024-11-01: 35
4+
metadata:
5+
economy: false
6+
period: week
7+
unit: hour
8+
label: Carer Support Payment minimum hours
9+
reference:
10+
- title: Carer Support Payment eligibility
11+
href: https://www.mygov.scot/carer-support-payment/eligibility
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
description: Weekly rate of Carer Support Payment.
2+
values:
3+
2024-11-01: 81.9
4+
2025-04-01: 83.29
5+
2026-04-01: 86.45
6+
metadata:
7+
period: week
8+
unit: currency-GBP
9+
label: Carer Support Payment rate
10+
uprating: gov.benefit_uprating_cpi
11+
reference:
12+
- title: Carer Support Payment - mygov.scot
13+
href: https://www.mygov.scot/carer-support-payment
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
description: Weekly rate of the Scottish Carer Supplement, paid on top of the Carer Support Payment.
2+
values:
3+
2024-11-01: 0
4+
2026-03-01: 11.70
5+
metadata:
6+
period: week
7+
unit: currency-GBP
8+
label: Scottish Carer Supplement rate
9+
reference:
10+
- title: New rates for carer and disability payments in 2026
11+
href: https://www.socialsecurity.gov.scot/news-events/news/new-payment-rates-from-april-2026
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
- name: Carer in Scotland receives CSP
2+
period: 2025
3+
absolute_error_margin: 0.01
4+
input:
5+
age: 35
6+
care_hours: 40
7+
country: SCOTLAND
8+
output:
9+
carer_support_payment: 4331.08
10+
carers_allowance: 0
11+
12+
- name: Carer in England receives CA not CSP
13+
period: 2025
14+
absolute_error_margin: 0.01
15+
input:
16+
age: 35
17+
care_hours: 40
18+
country: ENGLAND
19+
output:
20+
carer_support_payment: 0
21+
carers_allowance: 4331.08
22+
23+
- name: Non-carer in Scotland gets neither
24+
period: 2025
25+
absolute_error_margin: 0
26+
input:
27+
age: 35
28+
care_hours: 10
29+
country: SCOTLAND
30+
output:
31+
carer_support_payment: 0
32+
carers_allowance: 0
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
from policyengine_uk import Simulation
2+
3+
4+
YEAR_2024 = 2024
5+
YEAR_2025 = 2025
6+
7+
8+
def _situation(year: int, **person_overrides):
9+
person = {
10+
"age": {year: 35},
11+
"care_hours": {year: 40},
12+
}
13+
person.update(person_overrides)
14+
return {
15+
"people": {
16+
"person": person,
17+
},
18+
"benunits": {
19+
"benunit": {
20+
"members": ["person"],
21+
}
22+
},
23+
"households": {
24+
"household": {
25+
"members": ["person"],
26+
"country": {year: "SCOTLAND"},
27+
}
28+
},
29+
}
30+
31+
32+
def test_scottish_carers_allowance_remains_in_place_for_2024():
33+
sim = Simulation(situation=_situation(YEAR_2024))
34+
35+
assert sim.calculate("carers_allowance", YEAR_2024)[0] > 0
36+
assert sim.calculate("carer_support_payment", YEAR_2024)[0] == 0
37+
38+
39+
def test_scottish_carers_move_to_csp_in_2025():
40+
sim = Simulation(situation=_situation(YEAR_2025))
41+
42+
assert sim.calculate("carers_allowance", YEAR_2025)[0] == 0
43+
assert sim.calculate("carer_support_payment", YEAR_2025)[0] > 0
44+
45+
46+
def test_csp_counts_for_pension_credit_carer_additions_and_blocks_severe_disability():
47+
sim = Simulation(
48+
situation=_situation(
49+
YEAR_2025,
50+
attendance_allowance={YEAR_2025: 1},
51+
)
52+
)
53+
parameters = sim.tax_benefit_system.parameters(str(YEAR_2025))
54+
55+
expected_carer_addition = (
56+
float(parameters.gov.dwp.pension_credit.guarantee_credit.carer.addition) * 52
57+
)
58+
59+
assert sim.calculate("carer_minimum_guarantee_addition", YEAR_2025)[0] == (
60+
expected_carer_addition
61+
)
62+
assert (
63+
sim.calculate("severe_disability_minimum_guarantee_addition", YEAR_2025)[0] == 0
64+
)
65+
66+
67+
def test_csp_counts_for_uc_non_dep_exemption_and_housing_benefit_income():
68+
sim = Simulation(situation=_situation(YEAR_2025))
69+
70+
csp_amount = sim.calculate("carer_support_payment", YEAR_2025)[0]
71+
hb_disregard = sim.calculate(
72+
"housing_benefit_applicable_income_disregard", YEAR_2025
73+
)[0]
74+
hb_income = sim.calculate("housing_benefit_applicable_income", YEAR_2025)[0]
75+
76+
assert sim.calculate("uc_non_dep_deduction_exempt", YEAR_2025)[0]
77+
assert hb_income == max(0, csp_amount - hb_disregard)

policyengine_uk/variables/contrib/policyengine/pre_budget_change_household_benefits.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ class pre_budget_change_household_benefits(Variable):
3838
"epg_subsidy",
3939
"cost_of_living_support_payment",
4040
"energy_bills_rebate",
41+
"carer_support_payment",
4142
]
4243

4344
def formula(household, period, parameters):

policyengine_uk/variables/gov/dwp/carers_allowance.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,13 @@ class carers_allowance(Variable):
99
unit = GBP
1010

1111
def formula(person, period, parameters):
12+
in_scotland = person.household("country", period).decode_to_str() == "SCOTLAND"
13+
csp_replaces_ca = period.start.year >= 2025
1214
receives_ca = person("carers_allowance_reported", period) > 0
1315
ca = parameters(period).gov.dwp.carers_allowance
1416
weekly_care_hours = person("care_hours", period)
1517
meets_work_condition = weekly_care_hours >= ca.min_hours
16-
return (meets_work_condition | receives_ca) * ca.rate * WEEKS_IN_YEAR
18+
eligible = ~(in_scotland & csp_replaces_ca) & (
19+
meets_work_condition | receives_ca
20+
)
21+
return eligible * ca.rate * WEEKS_IN_YEAR

policyengine_uk/variables/gov/dwp/housing_benefit/applicable_income/housing_benefit_applicable_income.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ def formula(benunit, period, parameters):
1818
]
1919
PERSONAL_BENEFITS = [
2020
"carers_allowance",
21+
"carer_support_payment",
2122
"esa_contrib",
2223
"jsa_contrib",
2324
"state_pension",

policyengine_uk/variables/gov/dwp/is_benefit_cap_exempt_health_disability.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ def formula(benunit, period, parameters):
3636
QUAL_PERSONAL_BENEFITS = [
3737
"attendance_allowance",
3838
"carers_allowance",
39+
"carer_support_payment",
3940
"dla", # Disability Living Allowance (includes components)
4041
"pip_dl", # PIP daily living component
4142
"pip_m", # PIP mobility component

0 commit comments

Comments
 (0)