Last updated 9 October 2026View as Markdown
Rates and thresholds
GET /v1/rates No keyEvery rate and threshold for a tax year: income tax bands by region, NI thresholds and rates by category letter, student loans, allowances, employer costs, statutory pay, dividends, the self-employed, corporation tax, the minimum wage and redundancy pay, with gov.uk sources. No key needed.
Request
Parameters in the path and query string.
| Field | Type | Description |
|---|---|---|
tax_year optional, in the query | string | The tax year, such as 2026-27. The latest when not given. |
Example
cURL
curl https://api.checktakehomepay.co.uk/v1/ratesNode.js
const response = await fetch('https://api.checktakehomepay.co.uk/v1/rates');
const result = await response.json();Python
import requests
response = requests.get("https://api.checktakehomepay.co.uk/v1/rates")
result = response.json()Response
200, with the result and what produced it: tax_year, engine, hmrc_test_data, assumptions and sources. This is the example's real response. Every field's type is in the OpenAPI document.
200 OK
{
"tax_year": "2026-27",
"engine": "2026-27.1",
"hmrc_test_data": "rest of UK and Welsh tax v1.0, Scottish tax v1.1, NI v1.0, directors NI v1.0, student loans v1.0",
"income_tax": {
"personal_allowance": 12570,
"personal_allowance_taper_threshold": 100000,
"blind_persons_allowance": 3250,
"marriage_allowance": 1260,
"bands": {
"rest_of_uk": [
{
"rate": 20,
"from": 0,
"to": 37700
},
{
"rate": 40,
"from": 37700,
"to": 125140
},
{
"rate": 45,
"from": 125140,
"to": null
}
],
"scotland": [
{
"rate": 19,
"from": 0,
"to": 3967
},
{
"rate": 20,
"from": 3967,
"to": 16956
},
{
"rate": 21,
"from": 16956,
"to": 31092
},
{
"rate": 42,
"from": 31092,
"to": 62430
},
{
"rate": 45,
"from": 62430,
"to": 125140
},
{
"rate": 48,
"from": 125140,
"to": null
}
],
"wales": [
{
"rate": 20,
"from": 0,
"to": 37700
},
{
"rate": 40,
"from": 37700,
"to": 125140
},
{
"rate": 45,
"from": 125140,
"to": null
}
]
},
"regulatory_limit": 50
},
"national_insurance": {
"thresholds": {
"lower_earnings_limit": 6708,
"primary_threshold": 12570,
"secondary_threshold": 5000,
"freeport_upper_secondary_threshold": 25000,
"upper_earnings_limit": 50270
},
"employee": {
"A": {
"lower_earnings_limit_to_primary_threshold": 0,
"primary_threshold_to_upper_earnings_limit": 8,
"above_upper_earnings_limit": 2
},
"M": {
"lower_earnings_limit_to_primary_threshold": 0,
"primary_threshold_to_upper_earnings_limit": 8,
"above_upper_earnings_limit": 2
},
"H": {
"lower_earnings_limit_to_primary_threshold": 0,
"primary_threshold_to_upper_earnings_limit": 8,
"above_upper_earnings_limit": 2
},
"F": {
"lower_earnings_limit_to_primary_threshold": 0,
"primary_threshold_to_upper_earnings_limit": 8,
"above_upper_earnings_limit": 2
},
"V": {
"lower_earnings_limit_to_primary_threshold": 0,
"primary_threshold_to_upper_earnings_limit": 8,
"above_upper_earnings_limit": 2
},
"N": {
"lower_earnings_limit_to_primary_threshold": 0,
"primary_threshold_to_upper_earnings_limit": 8,
"above_upper_earnings_limit": 2
},
"B": {
"lower_earnings_limit_to_primary_threshold": 0,
"primary_threshold_to_upper_earnings_limit": 1.85,
"above_upper_earnings_limit": 2
},
"I": {
"lower_earnings_limit_to_primary_threshold": 0,
"primary_threshold_to_upper_earnings_limit": 1.85,
"above_upper_earnings_limit": 2
},
"E": {
"lower_earnings_limit_to_primary_threshold": 0,
"primary_threshold_to_upper_earnings_limit": 1.85,
"above_upper_earnings_limit": 2
},
"C": {
"lower_earnings_limit_to_primary_threshold": 0,
"primary_threshold_to_upper_earnings_limit": 0,
"above_upper_earnings_limit": 0
},
"S": {
"lower_earnings_limit_to_primary_threshold": 0,
"primary_threshold_to_upper_earnings_limit": 0,
"above_upper_earnings_limit": 0
},
"K": {
"lower_earnings_limit_to_primary_threshold": 0,
"primary_threshold_to_upper_earnings_limit": 0,
"above_upper_earnings_limit": 0
},
"J": {
"lower_earnings_limit_to_primary_threshold": 0,
"primary_threshold_to_upper_earnings_limit": 2,
"above_upper_earnings_limit": 2
},
"L": {
"lower_earnings_limit_to_primary_threshold": 0,
"primary_threshold_to_upper_earnings_limit": 2,
"above_upper_earnings_limit": 2
},
"Z": {
"lower_earnings_limit_to_primary_threshold": 0,
"primary_threshold_to_upper_earnings_limit": 2,
"above_upper_earnings_limit": 2
},
"D": {
"lower_earnings_limit_to_primary_threshold": 0,
"primary_threshold_to_upper_earnings_limit": 2,
"above_upper_earnings_limit": 2
}
},
"employer": {
"A": {
"secondary_threshold_to_upper_earnings_limit": 15,
"above_upper_earnings_limit": 15
},
"B": {
"secondary_threshold_to_upper_earnings_limit": 15,
"above_upper_earnings_limit": 15
},
"C": {
"secondary_threshold_to_upper_earnings_limit": 15,
"above_upper_earnings_limit": 15
},
"J": {
"secondary_threshold_to_upper_earnings_limit": 15,
"above_upper_earnings_limit": 15
},
"H": {
"secondary_threshold_to_upper_earnings_limit": 0,
"above_upper_earnings_limit": 15
},
"M": {
"secondary_threshold_to_upper_earnings_limit": 0,
"above_upper_earnings_limit": 15
},
"V": {
"secondary_threshold_to_upper_earnings_limit": 0,
"above_upper_earnings_limit": 15
},
"Z": {
"secondary_threshold_to_upper_earnings_limit": 0,
"above_upper_earnings_limit": 15
},
"F": {
"secondary_threshold_to_freeport_upper_secondary_threshold": 0,
"freeport_upper_secondary_threshold_to_upper_earnings_limit": 15,
"above_upper_earnings_limit": 15
},
"I": {
"secondary_threshold_to_freeport_upper_secondary_threshold": 0,
"freeport_upper_secondary_threshold_to_upper_earnings_limit": 15,
"above_upper_earnings_limit": 15
},
"S": {
"secondary_threshold_to_freeport_upper_secondary_threshold": 0,
"freeport_upper_secondary_threshold_to_upper_earnings_limit": 15,
"above_upper_earnings_limit": 15
},
"L": {
"secondary_threshold_to_freeport_upper_secondary_threshold": 0,
"freeport_upper_secondary_threshold_to_upper_earnings_limit": 15,
"above_upper_earnings_limit": 15
},
"D": {
"secondary_threshold_to_freeport_upper_secondary_threshold": 0,
"freeport_upper_secondary_threshold_to_upper_earnings_limit": 15,
"above_upper_earnings_limit": 15
},
"E": {
"secondary_threshold_to_freeport_upper_secondary_threshold": 0,
"freeport_upper_secondary_threshold_to_upper_earnings_limit": 15,
"above_upper_earnings_limit": 15
},
"K": {
"secondary_threshold_to_freeport_upper_secondary_threshold": 0,
"freeport_upper_secondary_threshold_to_upper_earnings_limit": 15,
"above_upper_earnings_limit": 15
},
"N": {
"secondary_threshold_to_freeport_upper_secondary_threshold": 0,
"freeport_upper_secondary_threshold_to_upper_earnings_limit": 15,
"above_upper_earnings_limit": 15
}
}
},
"student_loans": {
"plan_1": {
"threshold": 26900,
"rate": 9
},
"plan_2": {
"threshold": 29385,
"rate": 9
},
"plan_4": {
"threshold": 33795,
"rate": 9
},
"plan_5": {
"threshold": 25000,
"rate": 9
},
"postgraduate": {
"threshold": 21000,
"rate": 6
}
},
"married_couples_allowance": {
"maximum": 11700,
"minimum": 4530,
"income_limit": 39200,
"rate": 10
},
"child_benefit": {
"eldest_child_weekly": 27.05,
"other_child_weekly": 17.9,
"weeks_in_year": 53,
"high_income_charge_threshold": 60000,
"high_income_charge_step": 200
},
"childcare_vouchers": {
"weekly": {
"basic": 55,
"higher": 28,
"additional": 25
},
"monthly": {
"basic": 243,
"higher": 124,
"additional": 110
}
},
"employer": {
"class_1a_ni": 15,
"employment_allowance": 10500,
"apprenticeship_levy": 0.5,
"auto_enrolment_minimum": 3,
"qualifying_earnings": {
"weekly": {
"lower": 120,
"upper": 967
},
"two_weekly": {
"lower": 240,
"upper": 1934
},
"four_weekly": {
"lower": 480,
"upper": 3867
},
"monthly": {
"lower": 520,
"upper": 4189
}
}
},
"statutory_pay": {
"sick_pay_weekly": 123.25,
"sick_pay_earnings_percent": 80,
"sick_pay_max_weeks": 28,
"family_pay_weekly": 194.32,
"family_pay_earnings_percent": 90
},
"dividends": {
"allowance": 500,
"basic": 10.75,
"higher": 35.75,
"additional": 39.35
},
"self_employed": {
"lower_profits_limit": 12570,
"upper_profits_limit": 50270,
"class_4_main": 6,
"class_4_additional": 2,
"small_profits_threshold": 7105,
"class_2_weekly": 3.65
},
"corporation_tax": {
"small_profits_rate": 19,
"main_rate": 25,
"lower_limit": 50000,
"upper_limit": 250000,
"marginal_relief_fraction": "3/200"
},
"minimum_wage": {
"aged_21_and_over": 12.71,
"aged_18_to_20": 10.85,
"under_18": 8,
"apprentice": 8
},
"redundancy": {
"weekly_pay_cap": 751
},
"assumptions": [
"Amounts are pounds a year unless the name says weekly or monthly; rates are percentages.",
"Income tax bands are taxable income above the allowances. National Insurance thresholds are annual; payroll works them out for each pay period."
],
"sources": [
"https://www.gov.uk/government/publications/payroll-technical-specifications-income-tax",
"https://www.gov.uk/government/publications/payroll-technical-specifications-national-insurance",
"https://www.gov.uk/government/publications/payroll-technical-specifications-student-loans/collection-of-student-loans-from-6-april-2026",
"https://www.gov.uk/income-tax-rates",
"https://www.gov.uk/marriage-allowance",
"https://www.litrg.org.uk/tax-and-nic/income-tax/tax-allowances/blind-persons-allowance",
"https://www.thepensionsregulator.gov.uk/en/employers/new-employers/im-an-employer-who-has-to-provide-a-pension/declare-your-compliance/ongoing-duties-for-employers/earnings-thresholds",
"https://www.litrg.org.uk/tax-and-nic/income-tax/tax-allowances/married-couples-allowance",
"https://www.gov.uk/government/publications/rates-and-allowances-tax-credits-child-benefit-and-guardians-allowance/tax-credits-child-benefit-and-guardians-allowance",
"https://www.gov.uk/child-benefit-tax-charge",
"https://www.gov.uk/hmrc-internal-manuals/employment-income-manual/eim22012",
"https://www.gov.uk/hmrc-internal-manuals/employment-income-manual/eim16056",
"https://www.gov.uk/expenses-and-benefits-childcare/whats-exempt",
"https://www.gov.uk/national-minimum-wage-rates",
"https://www.gov.uk/redundant-your-rights/redundancy-pay",
"https://www.gov.uk/tax-on-dividends",
"https://www.gov.uk/self-employed-national-insurance-rates",
"https://www.gov.uk/corporation-tax-rates",
"https://www.gov.uk/guidance/corporation-tax-marginal-relief",
"https://www.gov.uk/guidance/rates-and-thresholds-for-employers-2026-to-2027",
"https://www.gov.uk/guidance/statutory-sick-pay-manually-calculate-your-employees-payments",
"https://www.thepensionsregulator.gov.uk/en/business-advisers/automatic-enrolment-guide-for-business-advisers/minimum-contribution-increases-planned-by-law-phasing",
"https://www.gov.uk/government/publications/software-developers-payroll-test-data-2026-to-2027"
]
}Errors
- 400
INVALID_INPUT: the message names each field that is wrong.
Every code, and how to handle them: Errors.