> Statutory Sick Pay with the Check Take Home Pay API, POST /v1/statutory/sick-pay: every field, an example request in cURL, Node.js and Python, and the response.

Web version: https://checktakehomepay.co.uk/docs/api/statutory-sick-pay · Last updated: 2026-10-09

# Statutory Sick Pay

`POST /v1/statutory/sick-pay` Needs a key

One payment of Statutory Sick Pay: the lower of the flat rate and 80% of average weekly earnings, per qualifying day, rounded up to the penny, up to 28 weeks.

## Request

A JSON body. Fields not listed here are rejected.

| Field | Type | Description |
| --- | --- | --- |
| `average_weekly_earnings` required | object | Average weekly earnings: { amount } a week, or the earnings in the relevant period with the weeks, months or days to divide them by. |
| `average_weekly_earnings.amount` optional | number | Average weekly earnings, when already known. Allowed: 0 or more, under 100,000,000. |
| `average_weekly_earnings.earnings` optional | number | Gross earnings paid in the relevant period. Allowed: 0 or more, under 100,000,000. |
| `average_weekly_earnings.weeks` optional | integer | Whole weeks in the relevant period, for weekly, two-weekly and four-weekly pay. Allowed: 1 to 52. |
| `average_weekly_earnings.months` optional | integer | Months in the relevant period, for monthly pay. Allowed: 1 to 12. |
| `average_weekly_earnings.days` optional | integer | Days in the relevant period, for irregular pay or a new employee. Allowed: 1 to 366. |
| `qualifying_days_per_week` required | integer | The employee's usual working days in a week. Allowed: 1 to 7. |
| `days` required | integer | Qualifying days off sick in this pay period. Allowed: 0 to 366. |
| `tax_year` optional | string | The tax year, such as 2026-27. The latest when not given. Default `"2026-27"`. |
| `days_paid_before` optional | integer | Qualifying days of SSP already paid in this period of incapacity (and linked ones), for the 28-week limit. Allowed: 0 to 196. Default `0`. |

## Example

cURL

```
curl https://api.checktakehomepay.co.uk/v1/statutory/sick-pay \
  -H "Authorization: Bearer $CHECKTAKEHOMEPAY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "average_weekly_earnings": {
    "amount": 600
  },
  "qualifying_days_per_week": 5,
  "days": 5
}'
```

Node.js

```
const response = await fetch('https://api.checktakehomepay.co.uk/v1/statutory/sick-pay', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.CHECKTAKEHOMEPAY_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "average_weekly_earnings": {
      "amount": 600
    },
    "qualifying_days_per_week": 5,
    "days": 5
  }),
});
const result = await response.json();
```

Python

```
import os
import requests

response = requests.post(
    "https://api.checktakehomepay.co.uk/v1/statutory/sick-pay",
    headers={"Authorization": f"Bearer {os.environ['CHECKTAKEHOMEPAY_API_KEY']}"},
    json={
        "average_weekly_earnings": {"amount": 600},
        "qualifying_days_per_week": 5,
        "days": 5,
    },
)
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](https://api.checktakehomepay.co.uk/openapi.json).

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",
  "average_weekly_earnings": 600,
  "weekly_rate": 123.25,
  "days": 5,
  "amount": 123.25,
  "days_remaining": 135,
  "assumptions": [
    "Statutory Sick Pay from 6 April 2026: from the first day off sick, at any earnings, at the lower of £123.25 a week and 80% of average weekly earnings.",
    "A day is the weekly rate divided by the qualifying days in the week, and each payment rounds up to the penny, so send one request per pay period.",
    "The caller checks entitlement (an employee, sick for at least one full working day: from 6 April 2026 there is no 4-day rule) and works out the qualifying days and linked periods of sickness."
  ],
  "sources": [
    "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"
  ]
}
```

## 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](https://checktakehomepay.co.uk/docs/errors).
