Skip to content
Open
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/uc-pc-qyp-sixteen-route.fixed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- Counted a 16-year-old outside education as a Universal Credit and Pension Credit qualifying young person until the 1 September following their 16th birthday (UC Regs 2013 reg. 5(1)(a); SPC Regs 2002 reg. 4A(1)(a)), in any year that starts before that date.
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@
output:
is_uc_work_allowance_eligible: false

- name: Case 6, a nonqualifying 16-year-old does not create a work allowance.
- name: Case 6, a 16-year-old outside education past the reg. 5(1)(a) route does not create a work allowance.
period: 2025
input:
people:
Expand All @@ -91,13 +91,33 @@
age: 16
is_in_non_advanced_education: false
is_in_approved_training: false
is_before_first_september_following_16th_birthday: false
uc_limited_capability_for_WRA: false
benunits:
benunit:
members: [person1, person2]
output:
is_uc_work_allowance_eligible: false

- name: Case 6a, a 16-year-old outside education in the reg. 5(1)(a) route creates a work allowance.
period: 2025
input:
people:
person1:
age: 40
is_parent: true
uc_limited_capability_for_WRA: false
person2:
age: 16
is_in_non_advanced_education: false
is_in_approved_training: false
uc_limited_capability_for_WRA: false
benunits:
benunit:
members: [person1, person2]
output:
is_uc_work_allowance_eligible: true

- name: Case 7, a looked-after child does not create a work allowance.
period: 2025
input:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,335 @@
# UC Regs 2013 reg. 5(1)(a) and SPC Regs 2002 reg. 4A(1)(a): a person who has
# reached 16 is a qualifying young person "up to, but not including, the 1st
# September following" their 16th birthday, whatever their education. The
# model counts the route for a year that starts (6 April) before that date.
# Ages are ages on 6 October; with no date of birth, a whole age places the
# birthday on 6 April (months_since_last_birthday 6).

- name: A 16-year-old outside education is a qualifying young person for UC and Pension Credit.
# 16th birthday 6 April 2026; the route runs to 31 August 2026.
period: 2026
input:
people:
parent:
age: 40
is_parent: true
young_person:
age: 16
current_education: NOT_IN_EDUCATION
benunits:
benunit:
members: [parent, young_person]
output:
is_in_non_advanced_education: [false, false]
is_before_first_september_following_16th_birthday: [false, true]
is_qualifying_young_person_for_universal_credit: [false, true]
is_child_or_qualifying_young_person_for_universal_credit: [false, true]
is_qualifying_young_person_for_pension_credit: [false, true]
is_child_or_qualifying_young_person_for_pension_credit: [false, true]

- name: A 16-year-old apprentice qualifies through reg. 5(1)(a), which has no contract-of-employment exclusion.
# Reg. 5(3) excludes training under a contract of employment from the
# education route (b) only.
period: 2026
input:
people:
parent:
age: 40
is_parent: true
young_person:
age: 16
current_education: POST_SECONDARY
is_apprentice: true
benunits:
benunit:
members: [parent, young_person]
output:
is_in_non_advanced_education: [false, false]
is_qualifying_young_person_for_universal_credit: [false, true]
is_qualifying_young_person_for_pension_credit: [false, true]

- name: A 16-year-old outside education whose route has ended for the year is not a qualifying young person.
period: 2026
input:
people:
parent:
age: 40
is_parent: true
young_person:
age: 16
current_education: NOT_IN_EDUCATION
is_before_first_september_following_16th_birthday: false
benunits:
benunit:
members: [parent, young_person]
output:
is_qualifying_young_person_for_universal_credit: [false, false]
is_child_or_qualifying_young_person_for_universal_credit: [false, false]
is_qualifying_young_person_for_pension_credit: [false, false]
is_child_or_qualifying_young_person_for_pension_credit: [false, false]

- name: The education route still applies after the 1 September following the 16th birthday.
period: 2026
input:
people:
parent:
age: 40
is_parent: true
young_person:
age: 16
current_education: UPPER_SECONDARY
is_before_first_september_following_16th_birthday: false
benunits:
benunit:
members: [parent, young_person]
output:
is_qualifying_young_person_for_universal_credit: [false, true]
is_qualifying_young_person_for_pension_credit: [false, true]

- name: A 17-year-old with a 16th birthday on 15 September 2025 is in the route until 31 August 2026.
# Born 15 September 2009: aged 17 on 6 October 2026. The 1 September
# following the 16th birthday is 1 September 2026, after 6 April 2026.
period: 2026
input:
people:
parent:
age: 40
is_parent: true
young_person:
age: 17
date_of_birth: 20090915
current_education: NOT_IN_EDUCATION
benunits:
benunit:
members: [parent, young_person]
output:
is_before_first_september_following_16th_birthday: [false, true]
is_qualifying_young_person_for_universal_credit: [false, true]
is_qualifying_young_person_for_pension_credit: [false, true]

- name: A 16th birthday on 1 September runs the route to the 17th birthday.
# Born 1 September 2009: the 1 September following the 16th birthday (1
# September 2025) is 1 September 2026, after 6 April 2026.
period: 2026
input:
people:
parent:
age: 40
is_parent: true
young_person:
age: 17
date_of_birth: 20090901
current_education: NOT_IN_EDUCATION
benunits:
benunit:
members: [parent, young_person]
output:
is_before_first_september_following_16th_birthday: [false, true]
is_qualifying_young_person_for_universal_credit: [false, true]

- name: A 16th birthday on 31 August ends the route that day.
# Born 31 August 2009: the route ran only on 31 August 2025, before the
# 2026-27 fiscal year starts.
period: 2026
input:
people:
parent:
age: 40
is_parent: true
young_person:
age: 17
date_of_birth: 20090831
current_education: NOT_IN_EDUCATION
benunits:
benunit:
members: [parent, young_person]
output:
is_before_first_september_following_16th_birthday: [false, false]
is_qualifying_young_person_for_universal_credit: [false, false]
is_qualifying_young_person_for_pension_credit: [false, false]

- name: A 16-year-old receiving Universal Credit in their own right is not a qualifying young person.
# Reg. 5(5) and reg. 4A(5) apply to both routes.
period: 2026
input:
people:
parent:
age: 40
is_parent: true
young_person:
age: 16
current_education: NOT_IN_EDUCATION
receives_benefits_in_own_right: true
benunits:
benunit:
members: [parent, young_person]
output:
is_qualifying_young_person_for_universal_credit: [false, false]
is_qualifying_young_person_for_pension_credit: [false, false]

- name: A looked-after 16-year-old is a qualifying young person but not the family's.
period: 2026
input:
people:
parent:
age: 40
is_parent: true
young_person:
age: 16
current_education: NOT_IN_EDUCATION
is_looked_after_by_local_authority: true
benunits:
benunit:
members: [parent, young_person]
output:
is_qualifying_young_person_for_universal_credit: [false, true]
is_child_or_qualifying_young_person_for_universal_credit: [false, false]
is_qualifying_young_person_for_pension_credit: [false, true]
is_child_or_qualifying_young_person_for_pension_credit: [false, false]

- name: Neither 15- nor 18-year-olds outside education are qualifying young persons.
# A 15-year-old is a child (Welfare Reform Act 2012 s. 40); an 18-year-old's
# 1 September following their 16th birthday has passed.
period: 2026
input:
people:
parent:
age: 45
is_parent: true
child:
age: 15
current_education: NOT_IN_EDUCATION
adult_child:
age: 18
current_education: NOT_IN_EDUCATION
benunits:
benunit:
members: [parent, child, adult_child]
output:
is_before_first_september_following_16th_birthday: [false, true, false]
is_qualifying_young_person_for_universal_credit: [false, false, false]
is_child_or_qualifying_young_person_for_universal_credit: [false, true, false]
is_qualifying_young_person_for_pension_credit: [false, false, false]

- name: A lone parent with a 16-year-old outside education gets the child element and a work allowance.
# 2026-27: born 6 April 2010, before 6 April 2017, so the higher first-child
# amount: GBP 351.88 a month x 12 = GBP 4,222.56. Responsibility for a
# qualifying young person gives the work allowance (reg. 22(1)(b)): no
# housing element, so GBP 710 a month x 12 = GBP 8,520. Maximum amount: the
# single 25-or-over standard allowance GBP 424.90 x 12 = GBP 5,098.80, plus
# the child element, = GBP 9,321.36.
period: 2026
input:
people:
parent:
age: 40
is_parent: true
young_person:
age: 16
current_education: NOT_IN_EDUCATION
benunits:
benunit:
members: [parent, young_person]
households:
household:
members: [parent, young_person]
output:
uc_individual_child_element: [0, 4_222.56]
uc_child_element: 4_222.56
is_responsible_for_child_or_qualifying_young_person_for_universal_credit: true
is_uc_work_allowance_eligible: true
uc_work_allowance: 8_520
uc_maximum_amount: 9_321.36
is_benefit_cap_single_claimant_rate: false

- name: A pensioner with a 16-year-old outside education gets the Pension Credit child addition.
# 2026-27: born 6 April 2010, before 6 April 2017, so the first child
# addition (Sch. IIA para. 10): GBP 81.07 a week x 52 = GBP 4,215.64. The
# single standard minimum guarantee is GBP 238.00 x 52 = GBP 12,376, so the
# minimum guarantee is GBP 16,591.64.
period: 2026
input:
people:
pensioner:
age: 70
is_SP_age: true
young_person:
age: 16
current_education: NOT_IN_EDUCATION
benunits:
benunit:
members: [pensioner, young_person]
households:
household:
members: [pensioner, young_person]
output:
child_minimum_guarantee_addition: 4_215.64
standard_minimum_guarantee: 12_376
minimum_guarantee: 16_591.64

- name: In 2025-26 the 16-year-old counts first under the two-child limit, and the youngest child loses the element.
# 2025-26: the 16-year-old (born 6 April 2009) is a qualifying young person
# through reg. 5(1)(a), so the eldest of three. The higher first-child
# amount: GBP 339 a month x 12 = GBP 4,068. The 7-year-old (born 6 April
# 2018): GBP 292.81 x 12 = GBP 3,513.72. The 5-year-old (born 6 April 2020,
# after 6 April 2017) is the third child, so no element (reg. 24A). Total
# GBP 7,581.72.
period: 2025
input:
people:
parent:
age: 40
is_parent: true
young_person:
age: 16
current_education: NOT_IN_EDUCATION
child_7:
age: 7
child_5:
age: 5
benunits:
benunit:
members: [parent, young_person, child_7, child_5]
households:
household:
members: [parent, young_person, child_7, child_5]
output:
uc_child_index: [-1, 1, 2, 3]
uc_individual_child_element: [0, 4_068, 3_513.72, 0]
uc_is_child_limit_affected: [false, false, false, true]
uc_child_element: 7_581.72

- name: A date of birth given for one person leaves another's age-placed date unchanged.
# The 17-year-old's date of birth (15 September 2009) puts them in the
# route; the 16-year-old elsewhere has none, so age places their birthday
# on 6 April 2010 and they are in it too.
period: 2026
input:
people:
parent_1:
age: 34
is_parent: true
young_person_17:
age: 17
date_of_birth: 20090915
current_education: NOT_IN_EDUCATION
parent_2:
age: 40
is_parent: true
young_person_16:
age: 16
current_education: NOT_IN_EDUCATION
benunits:
benunit_1:
members: [parent_1, young_person_17]
benunit_2:
members: [parent_2, young_person_16]
households:
household_1:
members: [parent_1, young_person_17]
household_2:
members: [parent_2, young_person_16]
output:
is_before_first_september_following_16th_birthday: [false, true, false, true]
is_qualifying_young_person_for_universal_credit: [false, true, false, true]
is_qualifying_young_person_for_pension_credit: [false, true, false, true]
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@
output:
universal_credit: 9_321.36

- name: A 17-year-old outside education is not a UC young person, so their pay does not count
- name: A 17-year-old outside education and past the 1 September after their 16th birthday is not a UC young person, so their pay does not count
period: 2026
absolute_error_margin: 1
input:
Expand Down
Loading
Loading