# UK Business Tax and Filing Deadlines (`landlordtools/uk-business-deadlines`) Actor

UK statutory deadlines from a date: Companies House accounts and confirmation statements, Corporation Tax, VAT returns, Self Assessment, MTD Income Tax quarters, and the tax week and month. See README for limits.

- **URL**: https://apify.com/landlordtools/uk-business-deadlines.md
- **Developed by:** [LandlordTools](https://apify.com/landlordtools) (community)
- **Categories:** Business, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 deadline results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

Work out UK statutory deadlines from a date: Companies House annual accounts and confirmation statements, Corporation Tax payment and return, VAT Returns, Self Assessment, Making Tax Digital for Income Tax quarterly updates, and the tax year, tax week and tax month for any date. Pure date arithmetic: no company lookup, no network, no personal data. One JSON result goes to the dataset and the `OUTPUT` record.

### What it does and who it is for

For accountants, bookkeepers, company secretaries, small-business owners and AI agents. Give a deadline type and one date; get each due date with weekday, days from the start date, rule and source link. **Not tax or legal advice.** Check deadlines against your own Companies House and HMRC accounts.

### Types and what `date` means

| `type` | `date` is | Rule |
|---|---|---|
| `companies-house-accounts` | the accounting reference date | 9 months after for a private company, 6 months for a public company [1]. If the date is the last day of a month, the deadline is the last day of the month [1], [9] |
| `confirmation-statement` | the end of the review period | within 14 days after it [2] |
| `corporation-tax` | the end of the accounting period | pay 9 months and 1 day after [3]; file the return 12 months after [4] |
| `vat-return` | the end of the VAT period | 1 calendar month and 7 days after [5] |
| `self-assessment` | any date in the tax year | register by 5 October, paper return by 31 October, online return and balancing payment by 31 January after the year [6]; payments on account 31 January and 31 July [7] |
| `mtd-income-tax-quarterly` | any date in the tax year | updates by 7 August, 7 November, 7 February and 7 May [8] |
| `tax-calendar` | any date | tax year (6 April to 5 April), tax week (week 1 starts 6 April) and tax month (month 1 is 6 April to 5 May) |

### Quick start

Prefill input:

```json
{
  "type": "corporation-tax",
  "date": "2026-03-31"
}
```

Output (the `sources` list of nine links is omitted here):

```json
{
  "type": "corporation-tax",
  "date": "2026-03-31",
  "companyType": null,
  "deadlines": [
    {
      "name": "Corporation Tax payment",
      "due": "2027-01-01",
      "weekday": "Friday",
      "daysFromDate": 276,
      "rule": "9 months and 1 day after the end of the accounting period",
      "source": "https://www.gov.uk/pay-corporation-tax"
    },
    {
      "name": "Company Tax Return (CT600)",
      "due": "2027-03-31",
      "weekday": "Wednesday",
      "daysFromDate": 365,
      "rule": "12 months after the end of the accounting period",
      "source": "https://www.gov.uk/company-tax-returns"
    }
  ],
  "notes": [
    "Large and very large companies pay Corporation Tax in instalments instead; this covers the normal payment date.",
    "Dates are not moved for weekends or bank holidays. Companies House deadlines stand even then; where a date falls on one, check how HMRC applies it (a payment may need to reach HMRC by the last working day before). Not tax or legal advice."
  ]
}
```

### Input fields

| Field | Type | Required | Default | Meaning |
|---|---|---|---|---|
| `type` | string | yes (single input) | none | One of the seven types in the table above |
| `date` | string | yes (single input) | none | `YYYY-MM-DD`, 1990 to 2099; meaning depends on `type` |
| `companyType` | string | no | `private` | `private` or `public`. Only for `companies-house-accounts`; other types reject it |
| `items` | array | no | none | Batch input, on its own; see Batch use |

Unknown fields are rejected. No company names or numbers are needed.

### Output fields

| Field | Meaning |
|---|---|
| `type`, `date` | Deadline type and the date counted from |
| `companyType` | `private` or `public` for accounts; otherwise `null` |
| `deadlines` | List with `name`, `due`, `weekday`, `daysFromDate`, `rule`, `source`; empty for `tax-calendar` |
| `taxYear`, `taxYearStart`, `taxYearEnd` | `tax-calendar`: tax year containing the date, and its first and last day |
| `taxWeek`, `taxMonth`, `taxMonthStart` | `tax-calendar`: tax week, tax month, and the date that month started |
| `notes`, `sources` | Notes and caveats; official sources |

### Batch use

Send `{"items": [ ... ]}` with up to 1,000 inputs for one dataset row per item with its `index`. A bad item gives a row with `error` instead of failing the run. Give no other top-level fields with `items`.

### Use from code

```bash
curl -X POST "https://api.apify.com/v2/acts/landlordtools~uk-business-deadlines/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"type": "corporation-tax", "date": "2026-03-31"}'
```

```js
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('landlordtools/uk-business-deadlines').call({
  type: 'corporation-tax', date: '2026-03-31',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0].deadlines);
```

### Use with AI agents

AI agents can call this Actor through Apify's MCP server (https://mcp.apify.com). Example prompt: "When are Corporation Tax due and the CT600 filed for a period ending 31 March 2026?"

### Limits

- Dates are **not** moved for weekends or bank holidays. Companies House says its filing deadline stands even on a Sunday or bank holiday [1]. Where a date falls on one, check how HMRC applies it.
- Not covered: first accounts and changed accounting reference dates, LLPs, Corporation Tax instalments for large companies, VAT annual accounting and payments on account, and non-standard VAT periods.
- Rules change rarely, but check the sources after each Budget.

### Integrations

Power Platform, OpenAPI, Excel and Google Sheets files are in [`integrations/`](integrations/README.md). Apify's Zapier, Make and n8n apps work too.

### Pricing

Pay per event: $2 per 1,000 results, plus Apify's tiny per-run start fee ($0.00005). See the Pricing tab for the current price.

### Related Actors

- [UK Late Payment Interest](https://apify.com/landlordtools/uk-late-payment-interest): interest on a late business invoice.
- [UK Working Days](https://apify.com/landlordtools/uk-working-days): working days and CPR 2.8 time limits.
- [UK Renters' Rights Dates](https://apify.com/landlordtools/uk-renters-rights-dates): rent increase and pet request dates.
- [England PRS Registration Deadline](https://apify.com/landlordtools/england-prs-registration-deadline): PRS registration dates.

### Sources

1. [GOV.UK: Preparing and filing Companies House accounts](https://www.gov.uk/government/publications/life-of-a-company-annual-requirements/life-of-a-company-part-1-accounts). Accessed 3 October 2026.
2. [GOV.UK: Filing your company's confirmation statement](https://www.gov.uk/guidance/filing-your-companys-confirmation-statement). Accessed 3 October 2026.
3. [GOV.UK: Pay your Corporation Tax bill](https://www.gov.uk/pay-corporation-tax). Accessed 3 October 2026.
4. [GOV.UK: Company Tax Returns](https://www.gov.uk/company-tax-returns). Accessed 3 October 2026.
5. [GOV.UK: Sending a VAT Return](https://www.gov.uk/submit-vat-return). Accessed 3 October 2026.
6. [GOV.UK: Self Assessment tax returns, deadlines](https://www.gov.uk/self-assessment-tax-returns/deadlines). Accessed 3 October 2026.
7. [GOV.UK: Understand your Self Assessment tax bill, payments on account](https://www.gov.uk/understand-self-assessment-bill/payments-on-account). Accessed 3 October 2026.
8. [GOV.UK: Use Making Tax Digital for Income Tax, send quarterly updates](https://www.gov.uk/guidance/use-making-tax-digital-for-income-tax/send-quarterly-updates). Accessed 3 October 2026.
9. [legislation.gov.uk: Companies Act 2006, section 443 (calculation of period allowed)](https://www.legislation.gov.uk/ukpga/2006/46/section/443). Accessed 3 October 2026.

[1]: https://www.gov.uk/government/publications/life-of-a-company-annual-requirements/life-of-a-company-part-1-accounts

[2]: https://www.gov.uk/guidance/filing-your-companys-confirmation-statement

[3]: https://www.gov.uk/pay-corporation-tax

[4]: https://www.gov.uk/company-tax-returns

[5]: https://www.gov.uk/submit-vat-return

[6]: https://www.gov.uk/self-assessment-tax-returns/deadlines

[7]: https://www.gov.uk/understand-self-assessment-bill/payments-on-account

[8]: https://www.gov.uk/guidance/use-making-tax-digital-for-income-tax/send-quarterly-updates

[9]: https://www.legislation.gov.uk/ukpga/2006/46/section/443

# Actor input Schema

## `type` (type: `string`):

Which deadline set to work out. What date means depends on the type: see the README table. Example: corporation-tax.

## `date` (type: `string`):

YYYY-MM-DD, from 1990 to 2099. Depending on type: accounting reference date, end of the review, accounting or VAT period, or any date in the tax year. Example: 2026-03-31.

## `companyType` (type: `string`):

Only for companies-house-accounts: private (9 months, default) or public (6 months). Rejected for other types.

## `items` (type: `array`):

Optional batch, used on its own: 1 to 1000 objects, each with type and date (and companyType where needed). One dataset row per item; a bad item gives an error row.

## Actor input object example

```json
{
  "type": "corporation-tax",
  "date": "2026-03-31"
}
```

# Actor output Schema

## `result` (type: `string`):

No description

## `output` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "type": "corporation-tax",
    "date": "2026-03-31"
};

// Run the Actor and wait for it to finish
const run = await client.actor("landlordtools/uk-business-deadlines").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "type": "corporation-tax",
    "date": "2026-03-31",
}

# Run the Actor and wait for it to finish
run = client.actor("landlordtools/uk-business-deadlines").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "type": "corporation-tax",
  "date": "2026-03-31"
}' |
apify call landlordtools/uk-business-deadlines --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,landlordtools/uk-business-deadlines"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/flgybOxHdvmlx2qvM/builds/psrsRfB61aUT2AEjD/openapi.json
