Child Benefit#
The Child Benefit is a universal benefit for children administered by HMRC. It is not means-tested, but HMRC does impose a tax charge (the High-Income Tax Charge) on the highest-earning parent if their income is over a threshold to recoup the benefit payment.
Child Benefit parameters can be found in policyengine_uk/parameters/gov/hmrc/child_benefit
and logic in policyengine_uk/variables/hmrc/child_benefit.py
.
Legislation#
The Child Benefit is defined primarily in The Social Security Contributions and Benefits Act 1992, Part IX. This defines the core of how the benefit operates, but the rates of payment are prescribed by The Child Benefit (Rates) Regulations 2006 reg. 2, which is amended by up-rating regulations (for example, in 2020, The Tax Credits, Child Benefit and Guardian’s Allowance Up-rating Regulations 2020 increased the payment levels).
Payment levels#
Child Benefit defines a (higher) amount for the eldest or only child, and an amount for each additional child. There is no limit on the number of children covered, unlike the Child Tax Credit or the Universal Credit child element. The table below shows the rates covered by PolicyEngine-UK.
Show code cell source
from policyengine_uk import CountryTaxBenefitSystem
import pandas as pd
parameters = CountryTaxBenefitSystem().parameters
data = {
"Date": [],
"Name": [],
"Value": [],
"Reference": [],
}
for parameter in parameters.gov.hmrc.child_benefit.amount.eldest.values_list:
data["Date"] += [parameter.instant_str]
data["Name"] += ["Eldest"]
data["Value"] += [f"£{parameter.value:.2f}"]
try:
data["Reference"] += [
f"<a href=\"{parameter.metadata['reference'][0]['href']}\">{parameter.metadata['reference'][0]['title']}</a>"
]
except:
data["Reference"] += [""]
for (
parameter
) in parameters.gov.hmrc.child_benefit.amount.additional.values_list:
data["Date"] += [parameter.instant_str]
data["Name"] += ["Additional"]
data["Value"] += [f"£{parameter.value:.2f}"]
try:
data["Reference"] += [
f"<a href=\"{parameter.metadata['reference'][0]['href']}\">{parameter.metadata['reference'][0]['title']}</a>"
]
except:
data["Reference"] += [""]
pd.DataFrame(data).sort_values("Date").set_index(
["Date", "Name"]
).style.format(lambda x: x)
Value | Reference | ||
---|---|---|---|
Date | Name | ||
2007-04-09 | Eldest | £18.80 | The Tax Credits, Child Benefit and Guardian’s Allowance Up-rating Regulations 2021(5)(b) |
Additional | £12.10 | The Tax Credits, Child Benefit and Guardian’s Allowance Up-rating Regulations 2021(5)(b) | |
2009-01-05 | Additional | £13.20 | The Tax Credits, Child Benefit and Guardian’s Allowance Up-rating Regulations 2021(5)(b) |
Eldest | £20.00 | The Tax Credits, Child Benefit and Guardian’s Allowance Up-rating Regulations 2021(5)(b) | |
2010-04-12 | Eldest | £20.30 | The Tax Credits, Child Benefit and Guardian’s Allowance Up-rating Regulations 2021(5)(b) |
Additional | £13.40 | The Tax Credits, Child Benefit and Guardian’s Allowance Up-rating Regulations 2021(5)(b) | |
2014-04-07 | Additional | £13.55 | The Tax Credits, Child Benefit and Guardian’s Allowance Up-rating Regulations 2021(5)(b) |
Eldest | £20.50 | The Tax Credits, Child Benefit and Guardian’s Allowance Up-rating Regulations 2021(5)(b) | |
2015-01-01 | Additional | £13.70 | |
Eldest | £20.70 | ||
2016-01-01 | Additional | £13.70 | |
Eldest | £20.70 | ||
2017-01-01 | Additional | £13.70 | |
Eldest | £20.70 | ||
2018-01-01 | Additional | £13.70 | |
Eldest | £20.70 | ||
2019-01-01 | Eldest | £20.70 | |
Additional | £13.70 | ||
2020-01-01 | Additional | £13.95 | |
Eldest | £21.05 | ||
2021-01-01 | Eldest | £21.15 | |
Additional | £14.00 | ||
2022-01-01 | Eldest | £21.80 | |
Additional | £14.45 | ||
2023-01-01 | Eldest | £24.00 | |
Additional | £15.90 | ||
2024-01-01 | Eldest | £25.60 | |
Additional | £16.95 | ||
2025-01-01 | Eldest | £25.60 | |
Additional | £16.95 | ||
2026-01-01 | Additional | £16.95 | |
Eldest | £25.60 |
Examples#
The below table shows the entitlement calculations for a family of increasing size.
Show code cell source
from policyengine_uk import IndividualSim
def get_cb_for_n_children(n):
sim = IndividualSim(year=2022)
for i in range(n):
sim.add_person(age=10, name=str(i))
sim.add_benunit(members=[str(i) for i in range(n)])
return f'£{sim.calc("child_benefit").sum():.2f}'
pd.DataFrame(
{
"Number of children": list(range(1, 7)),
"Child Benefit (Annual)": list(
map(get_cb_for_n_children, range(1, 7))
),
}
).set_index("Number of children")
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
/tmp/ipykernel_2289/935488397.py in <cell line: 1>()
----> 1 from policyengine_uk import IndividualSim
2
3
4 def get_cb_for_n_children(n):
5 sim = IndividualSim(year=2022)
ImportError: cannot import name 'IndividualSim' from 'policyengine_uk' (/home/runner/work/policyengine-uk/policyengine-uk/policyengine_uk/__init__.py)
Microsimulation#
PolicyEngine-UK simulates Child Benefit as described for each family in the survey microdata, preserving reported takeup. Child Benefit has a relatively high take-up rate compared to other benefits, most recently estimated at 92%. We use the central estimates from 2006 through 2018, provided by HMRC Child Benefit Statistics: Annual Release, August 2020 Main Commentary | Table 3.1, which are calculated from microsimulation and administrative data held by HMRC.