---
title: "CIS late filing penalties"
method: POST
path: "/api/v1/late-penalties"
tags: ["CIS"]
---

# CIS late filing penalties

`POST /api/v1/late-penalties`

## Request

- Base URL: `https://0sand1s.co.uk`
- URL: `https://0sand1s.co.uk/api/v1/late-penalties`
- Auth: none declared

Works out the late filing penalties on one monthly CIS return under Finance Act 2009 Schedule 55: £100 the day after the 19th, £200 at 2 months, then the greater of £300 and 5% of the deductions at 6 and at 12 months (5% alone for a first return). Takes the tax year and month, the filing date or none, today's date, the deductions and whether a return had been filed before. Returns each penalty with its date and whether it is charged, avoided or still to come. Does not cover deliberate withholding, interest on late payment, or appeals. The same as the GET, with the input as a JSON body.

## Request body

- object
  - `tax_year` integer, required: The tax year, by the calendar year it starts in: 2026 for 6 April 2026 to 5 April 2027
  - `tax_month` integer, required: The tax month, 1 to 12: 1 is 6 April to 5 May, 12 is 6 March to 5 April
  - `filed_on` string: The day the return was filed. Leave out or null if it has not been filed, YYYY-MM-DD
  - `as_at` string, required: Today's date. Penalties on a return not yet filed run to this date, YYYY-MM-DD
  - `deductions` string: The CIS deductions the return shows, or would show. Leave out or 0 for a nil return. Pounds, as a string like "1,200.00" or a number like 1200.
  - `filed_before` boolean: true if the contractor had already filed a CIS return before this one was due (the usual case). false for the first return, which has no £300 minimum

## Response `200`

The answer

- ToolResponse
  - `tool` string, required
  - `result` object, required: The answer. Amounts are { pence, pounds } objects; dates are YYYY-MM-DD.
  - `summary` string, required: The answer in one line
  - `sources` object[], required
    - `title` string
    - `url` string, uri
  - `see_also` string, uri, required: The page on 0sand1s.co.uk that does the same sum or explains the rule

## Other responses

- `400`: Input that could not be used, with a message per field
- `429`: More than 60 requests in a minute from one address

---

[API](https://skmtc.dev/0sand1s/apis/0s-and-1s-cis-api.md) · [All operations](https://skmtc.dev/0sand1s/apis/0s-and-1s-cis-api/llms.txt) · [OpenAPI document](https://skmtc.dev/0sand1s/apis/0s-and-1s-cis-api/revisions/caf4279c7477?raw)
