Last updated 9 October 2026View as Markdown

Employer cost

POST /v1/employer-cost Needs a key

What employing someone costs over a year: pay, employer NI less any Employment Allowance, Class 1A NI on benefits, the employer pension (including the auto-enrolment minimum) and the Apprenticeship Levy.

Request

A JSON body. Fields not listed here are rejected.

FieldTypeDescription
gross requiredobjectGross pay: { amount, per } with per as year, month, four_weeks, two_weeks, week, day or hour.
gross.amount required in grossnumberPounds and pence. Allowed: 0 or more, under 100,000,000.
gross.per required in grossstringThe period the amount is for. One of year, month, four_weeks, two_weeks, week, day, hour.
tax_year optionalstringThe tax year, such as 2026-27. The latest when not given. Default "2026-27".
region optionalstringWhere the employee lives: england, scotland, wales or northern_ireland. Needed unless tax_code is given (its S or C prefix sets the region). One of england, scotland, wales, northern_ireland.
pay_frequency optionalstringHow often they are paid: monthly (when not given), four_weekly, two_weekly or weekly. Each period runs through payroll. One of monthly, four_weekly, two_weekly, weekly. Default "monthly".
working_pattern optionalobjectDays and hours a week and weeks a year, for amounts per day or hour: 5 days, 37.5 hours and 52 weeks when not given.
working_pattern.days_per_week optionalnumberDays worked a week: 5 when not given. Allowed: more than 0, up to 7. Default 5.
working_pattern.hours_per_week optionalnumberHours worked a week: 37.5 when not given. Allowed: more than 0, up to 168. Default 37.5.
working_pattern.weeks_per_year optionalnumberWeeks paid a year: 52 when not given. Allowed: 1 to 53. Default 52.
tax_code optionalstringTheir tax code, such as 1257L, S1257L, K475, BR, D0, NT or 0T, with W1 or M1 for the week 1/month 1 basis. Worked out from the income when not given.
ni_category optionalstringNational Insurance category letter: A when not given, C over State Pension age. One of A, B, C, D, E, F, H, I, J, K, L, M, N, S, V, Z. Default "A".
student_loans optionalarray of stringEach loan they repay: plan_1, plan_2, plan_4, plan_5, postgraduate. One of plan_1, plan_2, plan_4, plan_5, postgraduate.
pension optionalobjectTheir pension contribution: method (relief_at_source, net_pay or salary_sacrifice) with a percent (of pay, or of qualifying_earnings as basis) or a fixed amount.
pension.method required in pensionstringHow the contribution is taken: relief_at_source, net_pay or salary_sacrifice. One of relief_at_source, net_pay, salary_sacrifice.
pension.percent optionalnumberA percentage of pensionable pay. Allowed: 0 to 100.
pension.basis optionalstringPensionable pay: all of it (pay), or only automatic enrolment qualifying earnings. Pay when not given. One of pay, qualifying_earnings.
pension.includes optionalarray of stringPay besides salary that is pensionable: overtime, allowances, bonus. One of overtime, allowances, bonus.
pension.amount optionalobjectA fixed contribution instead of a percent.
pension.amount.amount required in pension.amountnumberPounds and pence. Allowed: 0 or more, under 100,000,000.
pension.amount.per required in pension.amountstringThe period the amount is for. One of year, month, four_weeks, two_weeks, week, day, hour.
employer_pension optionalstring or objectThe employer's contribution, on top of pay: auto_enrolment_minimum (3% of qualifying earnings), or a percent or amount.
employer_pension.percent optionalnumberA percentage of pensionable pay. Allowed: 0 to 100.
employer_pension.basis optionalstringPensionable pay: all of it (pay), or only automatic enrolment qualifying earnings. Pay when not given. One of pay, qualifying_earnings.
employer_pension.includes optionalarray of stringPay besides salary that is pensionable: overtime, allowances, bonus. One of overtime, allowances, bonus.
employer_pension.amount optionalobjectA fixed contribution instead of a percent.
employer_pension.amount.amount required in employer_pension.amountnumberPounds and pence. Allowed: 0 or more, under 100,000,000.
employer_pension.amount.per required in employer_pension.amountstringThe period the amount is for. One of year, month, four_weeks, two_weeks, week, day, hour.
overtime optionalarray of objectOvertime: amounts per period, or hours at a multiple of the hourly rate per period.
overtime[].amount optionalnumberPounds and pence. Allowed: 0 or more, under 100,000,000.
overtime[].per required in overtimestringThe period the amount or hours are for. One of year, month, four_weeks, two_weeks, week, day, hour.
overtime[].hours optionalnumberOvertime hours. Allowed: 0 to 168.
overtime[].multiplier optionalnumberTimes the salary's hourly rate: 1.5 for time and a half. Allowed: 0 to 10.
allowances optionalobjectCash allowances, taxed and NI'd like salary.
allowances.amount required in allowancesnumberPounds and pence. Allowed: 0 or more, under 100,000,000.
allowances.per required in allowancesstringThe period the amount is for. One of year, month, four_weeks, two_weeks, week, day, hour.
bonus optionalobjectA one-off bonus, paid in pay_period (the last pay period of the year when not given).
bonus.amount required in bonusnumberThe bonus, in pounds and pence. Allowed: 0 or more, under 100,000,000.
bonus.pay_period optionalintegerThe pay period it is paid in: 1 is the first of the tax year. Allowed: 1 to 52.
salary_sacrifice optionalobjectSalary given up for something other than a pension: free of tax and NI.
salary_sacrifice.amount required in salary_sacrificenumberPounds and pence. Allowed: 0 or more, under 100,000,000.
salary_sacrifice.per required in salary_sacrificestringThe period the amount is for. One of year, month, four_weeks, two_weeks, week, day, hour.
benefits_in_kind optionalobjectTaxable benefits in kind, collected through the tax code.
benefits_in_kind.amount required in benefits_in_kindnumberPounds and pence. Allowed: 0 or more, under 100,000,000.
benefits_in_kind.per required in benefits_in_kindstringThe period the amount is for. One of year, month, four_weeks, two_weeks, week, day, hour.
childcare_vouchers optionalobjectChildcare vouchers taken from pay; joined_before_2011 gives the old scheme’s basic rate exempt amount.
childcare_vouchers.amount required in childcare_vouchersnumberPounds and pence. Allowed: 0 or more, under 100,000,000.
childcare_vouchers.per required in childcare_vouchersstringThe period the amount is for. One of year, month, four_weeks, two_weeks, week, day, hour.
childcare_vouchers.joined_before_2011 optionalbooleanJoined the scheme before 6 April 2011.
pre_tax_deductions optionalobjectDeductions before tax but after NI, such as payroll giving.
pre_tax_deductions.amount required in pre_tax_deductionsnumberPounds and pence. Allowed: 0 or more, under 100,000,000.
pre_tax_deductions.per required in pre_tax_deductionsstringThe period the amount is for. One of year, month, four_weeks, two_weeks, week, day, hour.
post_tax_deductions optionalobjectDeductions from net pay.
post_tax_deductions.amount required in post_tax_deductionsnumberPounds and pence. Allowed: 0 or more, under 100,000,000.
post_tax_deductions.per required in post_tax_deductionsstringThe period the amount is for. One of year, month, four_weeks, two_weeks, week, day, hour.
blind optionalbooleanBlind Person's Allowance.
marriage_allowance optionalstringMarriage Allowance: transferring or receiving. One of transferring, receiving.
married_couples_allowance optionalbooleanClaims Married Couple's Allowance (one of the couple born before 6 April 1935).
child_benefit optionalobjectChild Benefit in the household, for the High Income Child Benefit Charge: the children, and the weeks of the year it is paid (all of them when not given).
child_benefit.children required in child_benefitintegerChildren Child Benefit is paid for. Allowed: 1 to 20.
child_benefit.weeks optionalintegerWeeks of the tax year it is paid for: all of them when not given. Allowed: 1 to 53.
employment_allowance optionalbooleanSets the year's Employment Allowance against this employee's employer NI.
apprenticeship_levy optionalbooleanAdds the Apprenticeship Levy: 0.5% of this employee's NI-able pay.

Example

cURL

curl https://api.checktakehomepay.co.uk/v1/employer-cost \
  -H "Authorization: Bearer $CHECKTAKEHOMEPAY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "gross": {
    "amount": 40000,
    "per": "year"
  },
  "region": "england",
  "employer_pension": "auto_enrolment_minimum"
}'

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",
  "cost": {
    "pay": 40000,
    "benefits_in_kind": 0,
    "employer_ni": 5249.4,
    "employment_allowance": 0,
    "class_1a_ni": 0,
    "employer_pension": 1012.8,
    "apprenticeship_levy": 0,
    "total": 46262.2
  },
  "employee": {
    "tax_code": "1257L",
    "tax_code_derived": true,
    "tax_region": "rest_of_uk",
    "pay_frequency": "monthly",
    "personal_allowance": 12570,
    "adjusted_net_income": 40000,
    "benefits_in_kind": 0,
    "married_couples_allowance": 0,
    "childcare_voucher_band": null,
    "child_benefit": null,
    "periods": {
      "year": {
        "gross": 40000,
        "salary_sacrifice": 0,
        "childcare_vouchers": 0,
        "pension": 0,
        "pension_contribution": 0,
        "employer_pension": 1012.8,
        "pre_tax_deductions": 0,
        "niable_pay": 40000,
        "taxable_pay": 40000,
        "tax": 5484,
        "employee_ni": 2193.96,
        "employer_ni": 5249.4,
        "student_loans": {},
        "post_tax_deductions": 0,
        "take_home": 32322.04
      },
      "month": {
        "gross": 3333.33,
        "salary_sacrifice": 0,
        "childcare_vouchers": 0,
        "pension": 0,
        "pension_contribution": 0,
        "employer_pension": 84.4,
        "pre_tax_deductions": 0,
        "niable_pay": 3333.33,
        "taxable_pay": 3333.33,
        "tax": 457,
        "employee_ni": 182.83,
        "employer_ni": 437.45,
        "student_loans": {},
        "post_tax_deductions": 0,
        "take_home": 2693.5
      },
      "four_weeks": {
        "gross": 3076.92,
        "salary_sacrifice": 0,
        "childcare_vouchers": 0,
        "pension": 0,
        "pension_contribution": 0,
        "employer_pension": 77.91,
        "pre_tax_deductions": 0,
        "niable_pay": 3076.92,
        "taxable_pay": 3076.92,
        "tax": 421.85,
        "employee_ni": 168.77,
        "employer_ni": 403.8,
        "student_loans": {},
        "post_tax_deductions": 0,
        "take_home": 2486.31
      },
      "two_weeks": {
        "gross": 1538.46,
        "salary_sacrifice": 0,
        "childcare_vouchers": 0,
        "pension": 0,
        "pension_contribution": 0,
        "employer_pension": 38.95,
        "pre_tax_deductions": 0,
        "niable_pay": 1538.46,
        "taxable_pay": 1538.46,
        "tax": 210.92,
        "employee_ni": 84.38,
        "employer_ni": 201.9,
        "student_loans": {},
        "post_tax_deductions": 0,
        "take_home": 1243.16
      },
      "week": {
        "gross": 769.23,
        "salary_sacrifice": 0,
        "childcare_vouchers": 0,
        "pension": 0,
        "pension_contribution": 0,
        "employer_pension": 19.48,
        "pre_tax_deductions": 0,
        "niable_pay": 769.23,
        "taxable_pay": 769.23,
        "tax": 105.46,
        "employee_ni": 42.19,
        "employer_ni": 100.95,
        "student_loans": {},
        "post_tax_deductions": 0,
        "take_home": 621.58
      },
      "day": {
        "gross": 153.85,
        "salary_sacrifice": 0,
        "childcare_vouchers": 0,
        "pension": 0,
        "pension_contribution": 0,
        "employer_pension": 3.9,
        "pre_tax_deductions": 0,
        "niable_pay": 153.85,
        "taxable_pay": 153.85,
        "tax": 21.09,
        "employee_ni": 8.44,
        "employer_ni": 20.19,
        "student_loans": {},
        "post_tax_deductions": 0,
        "take_home": 124.32
      },
      "hour": {
        "gross": 20.51,
        "salary_sacrifice": 0,
        "childcare_vouchers": 0,
        "pension": 0,
        "pension_contribution": 0,
        "employer_pension": 0.52,
        "pre_tax_deductions": 0,
        "niable_pay": 20.51,
        "taxable_pay": 20.51,
        "tax": 2.81,
        "employee_ni": 1.13,
        "employer_ni": 2.69,
        "student_loans": {},
        "post_tax_deductions": 0,
        "take_home": 16.58
      }
    },
    "payslips": [
      {
        "period": 1,
        "gross": 3333.34,
        "salary_sacrifice": 0,
        "childcare_vouchers": 0,
        "pension": 0,
        "pension_contribution": 0,
        "employer_pension": 84.4,
        "pre_tax_deductions": 0,
        "niable_pay": 3333.34,
        "taxable_pay": 3333.34,
        "tax": 457,
        "employee_ni": 182.83,
        "employer_ni": 437.45,
        "student_loans": {},
        "post_tax_deductions": 0,
        "take_home": 2693.51
      },
      {
        "period": 2,
        "gross": 3333.34,
        "salary_sacrifice": 0,
        "childcare_vouchers": 0,
        "pension": 0,
        "pension_contribution": 0,
        "employer_pension": 84.4,
        "pre_tax_deductions": 0,
        "niable_pay": 3333.34,
        "taxable_pay": 3333.34,
        "tax": 457,
        "employee_ni": 182.83,
        "employer_ni": 437.45,
        "student_loans": {},
        "post_tax_deductions": 0,
        "take_home": 2693.51
      },
      {
        "period": 3,
        "gross": 3333.34,
        "salary_sacrifice": 0,
        "childcare_vouchers": 0,
        "pension": 0,
        "pension_contribution": 0,
        "employer_pension": 84.4,
        "pre_tax_deductions": 0,
        "niable_pay": 3333.34,
        "taxable_pay": 3333.34,
        "tax": 457,
        "employee_ni": 182.83,
        "employer_ni": 437.45,
        "student_loans": {},
        "post_tax_deductions": 0,
        "take_home": 2693.51
      },
      {
        "period": 4,
        "gross": 3333.34,
        "salary_sacrifice": 0,
        "childcare_vouchers": 0,
        "pension": 0,
        "pension_contribution": 0,
        "employer_pension": 84.4,
        "pre_tax_deductions": 0,
        "niable_pay": 3333.34,
        "taxable_pay": 3333.34,
        "tax": 457,
        "employee_ni": 182.83,
        "employer_ni": 437.45,
        "student_loans": {},
        "post_tax_deductions": 0,
        "take_home": 2693.51
      },
      {
        "period": 5,
        "gross": 3333.33,
        "salary_sacrifice": 0,
        "childcare_vouchers": 0,
        "pension": 0,
        "pension_contribution": 0,
        "employer_pension": 84.4,
        "pre_tax_deductions": 0,
        "niable_pay": 3333.33,
        "taxable_pay": 3333.33,
        "tax": 457,
        "employee_ni": 182.83,
        "employer_ni": 437.45,
        "student_loans": {},
        "post_tax_deductions": 0,
        "take_home": 2693.5
      },
      {
        "period": 6,
        "gross": 3333.33,
        "salary_sacrifice": 0,
        "childcare_vouchers": 0,
        "pension": 0,
        "pension_contribution": 0,
        "employer_pension": 84.4,
        "pre_tax_deductions": 0,
        "niable_pay": 3333.33,
        "taxable_pay": 3333.33,
        "tax": 457,
        "employee_ni": 182.83,
        "employer_ni": 437.45,
        "student_loans": {},
        "post_tax_deductions": 0,
        "take_home": 2693.5
      },
      {
        "period": 7,
        "gross": 3333.33,
        "salary_sacrifice": 0,
        "childcare_vouchers": 0,
        "pension": 0,
        "pension_contribution": 0,
        "employer_pension": 84.4,
        "pre_tax_deductions": 0,
        "niable_pay": 3333.33,
        "taxable_pay": 3333.33,
        "tax": 457,
        "employee_ni": 182.83,
        "employer_ni": 437.45,
        "student_loans": {},
        "post_tax_deductions": 0,
        "take_home": 2693.5
      },
      {
        "period": 8,
        "gross": 3333.33,
        "salary_sacrifice": 0,
        "childcare_vouchers": 0,
        "pension": 0,
        "pension_contribution": 0,
        "employer_pension": 84.4,
        "pre_tax_deductions": 0,
        "niable_pay": 3333.33,
        "taxable_pay": 3333.33,
        "tax": 457,
        "employee_ni": 182.83,
        "employer_ni": 437.45,
        "student_loans": {},
        "post_tax_deductions": 0,
        "take_home": 2693.5
      },
      {
        "period": 9,
        "gross": 3333.33,
        "salary_sacrifice": 0,
        "childcare_vouchers": 0,
        "pension": 0,
        "pension_contribution": 0,
        "employer_pension": 84.4,
        "pre_tax_deductions": 0,
        "niable_pay": 3333.33,
        "taxable_pay": 3333.33,
        "tax": 457,
        "employee_ni": 182.83,
        "employer_ni": 437.45,
        "student_loans": {},
        "post_tax_deductions": 0,
        "take_home": 2693.5
      },
      {
        "period": 10,
        "gross": 3333.33,
        "salary_sacrifice": 0,
        "childcare_vouchers": 0,
        "pension": 0,
        "pension_contribution": 0,
        "employer_pension": 84.4,
        "pre_tax_deductions": 0,
        "niable_pay": 3333.33,
        "taxable_pay": 3333.33,
        "tax": 457,
        "employee_ni": 182.83,
        "employer_ni": 437.45,
        "student_loans": {},
        "post_tax_deductions": 0,
        "take_home": 2693.5
      },
      {
        "period": 11,
        "gross": 3333.33,
        "salary_sacrifice": 0,
        "childcare_vouchers": 0,
        "pension": 0,
        "pension_contribution": 0,
        "employer_pension": 84.4,
        "pre_tax_deductions": 0,
        "niable_pay": 3333.33,
        "taxable_pay": 3333.33,
        "tax": 457,
        "employee_ni": 182.83,
        "employer_ni": 437.45,
        "student_loans": {},
        "post_tax_deductions": 0,
        "take_home": 2693.5
      },
      {
        "period": 12,
        "gross": 3333.33,
        "salary_sacrifice": 0,
        "childcare_vouchers": 0,
        "pension": 0,
        "pension_contribution": 0,
        "employer_pension": 84.4,
        "pre_tax_deductions": 0,
        "niable_pay": 3333.33,
        "taxable_pay": 3333.33,
        "tax": 457,
        "employee_ni": 182.83,
        "employer_ni": 437.45,
        "student_loans": {},
        "post_tax_deductions": 0,
        "take_home": 2693.5
      }
    ],
    "tax_bands": [
      {
        "rate": 20,
        "taxable": 27420,
        "tax": 5484
      }
    ],
    "rates": {
      "effective": 19.19,
      "marginal": 27.99
    }
  },
  "assumptions": [
    "Benefits in kind count at their taxable value, as an estimate of what they cost.",
    "apprenticeship_levy is the marginal cost for an employer whose pay bill is over £3 million: 0.5% of this employee's NI-able pay.",
    "employment_allowance sets the whole allowance against this employee: right for an employer with no one else using it. It is not available where the only employee paid above the secondary threshold is a director.",
    "Pay is the same in every pay period, apart from any bonus, and each period runs through payroll with a cumulative tax code unless the code says week 1/month 1.",
    "A bonus without a pay_period is paid in the last pay period of the year.",
    "periods other than the year are the year divided evenly, so they show an average period, not one payslip.",
    "rates.effective and rates.marginal count income tax, employee NI and student loans; rates.marginal is on the next £1,000 of salary.",
    "The tax code is the one HMRC would issue for this income from the start of the year: the personal allowance after its taper, less benefits in kind, plus any allowances asked for."
  ],
  "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.gov.uk/government/publications/software-developers-payroll-test-data-2026-to-2027",
    "https://www.gov.uk/guidance/rates-and-thresholds-for-employers-2026-to-2027",
    "https://www.thepensionsregulator.gov.uk/en/business-advisers/automatic-enrolment-guide-for-business-advisers/minimum-contribution-increases-planned-by-law-phasing",
    "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"
  ]
}

Errors

  • 400 INVALID_INPUT: the message names each field that is wrong.
  • 401 UNAUTHENTICATED (no key) or INVALID_KEY (a key we don’t know, or a revoked one).

Every code, and how to handle them: Errors.