> ## Documentation Index
> Fetch the complete documentation index at: https://docs.topograph.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Compliance Signals & Statutory Filings

> Register-reported filing standing, charges, insolvency history, and the statutory filing calendar

Company registers publish more than a company's identity. They also publish **how the company stands with the register**: whether its filings are up to date, whether there are charges over its assets, and when the next statutory filing falls due.

Topograph exposes this in two country-agnostic fields on `company`:

| Field              | What it carries                                                                                   |
| ------------------ | ------------------------------------------------------------------------------------------------- |
| `complianceFlags`  | Point-in-time signals: filings overdue, registered charges, insolvency history, past liquidation. |
| `statutoryFilings` | The filing calendar: the accounts and confirmation filings last made, and the ones next due.      |

Neither is a passthrough of any one register. The same two obligations (file your accounts, periodically confirm your particulars are current) exist in nearly every jurisdiction under different local names, and both fields are modelled around those obligations rather than around any single register's field names.

## `complianceFlags`

Each signal has its own key, and each key holds its own object.

| Key                   | Meaning when `active` is `true`                                               |
| --------------------- | ----------------------------------------------------------------------------- |
| `accountsOverdue`     | The statutory annual accounts are overdue.                                    |
| `annualFilingOverdue` | The periodic confirmation filing is overdue.                                  |
| `registeredCharges`   | The register records charges, mortgages or pledges over the company's assets. |
| `insolvencyHistory`   | The register records insolvency proceedings in the company's history.         |
| `liquidated`          | The company has been through liquidation at some point.                       |

Each flag object carries:

| Field     | Description                                                                                    |
| --------- | ---------------------------------------------------------------------------------------------- |
| `active`  | The register's own answer.                                                                     |
| `dueDate` | The date the filing was due and missed. Overdue flags only, and only while `active` is `true`. |
| `since`   | The date the signal began, when the register reports it.                                       |
| `source`  | The register that reported it.                                                                 |

<Warning>
  **A key is present only when the register formally states the signal.**

  `active: false` is a positive statement: the register says the company has no registered charges. An **absent key** means we hold no formal statement either way; it is **not** a clearance.

  To tell the two apart before you integrate, check the country's entry in the coverage manifest: `complianceSignals.flags[].reportsNegative` tells you whether that register ever states the negative. Where it is `false`, a missing key carries no information.
</Warning>

```json theme={null}
{
  "complianceFlags": {
    "accountsOverdue": { "active": true, "dueDate": "2024-09-30", "source": "companies_house" },
    "registeredCharges": { "active": false, "source": "companies_house" },
    "insolvencyHistory": { "active": false, "source": "companies_house" }
  }
}
```

<Note>
  `insolvencyHistory` is **historical**. A company *currently* in proceedings is reported through `status.statusDetails.status` (`UNDER_INSOLVENCY_PROCEEDING`). A company that has since recovered keeps `insolvencyHistory.active: true` while returning to an active status. That is exactly the signal a risk model wants.
</Note>

## `statutoryFilings`

Two obligations, each with what was last filed and what is next due.

| Key            | The obligation                                                                                                                                                                     |
| -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `accounts`     | File the statutory annual accounts.                                                                                                                                                |
| `annualFiling` | Periodically confirm the company still exists and its particulars are current. UK confirmation statement, Irish annual return, US state annual report, Guernsey annual validation. |

Each obligation carries:

| Field              | Description                                                                                                                         |
| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------- |
| `financialYearEnd` | The recurring accounting reference date as `MM-DD` (e.g. `03-31`). Accounts only. It repeats every cycle, so it is not a full date. |
| `cadence`          | `annual` or `biennial`. Confirmation filing only.                                                                                   |
| `lastFiled`        | `{ year, periodStart, periodEnd, dueDate, filedOn }`                                                                                |
| `next`             | `{ year, periodStart, periodEnd, dueDate, overdue }`                                                                                |
| `source`           | The register that reported the obligation.                                                                                          |

```json theme={null}
{
  "statutoryFilings": {
    "accounts": {
      "financialYearEnd": "03-31",
      "lastFiled": { "periodStart": "2024-04-01", "periodEnd": "2025-03-31" },
      "next": {
        "periodStart": "2025-04-01",
        "periodEnd": "2026-03-31",
        "dueDate": "2026-12-31",
        "overdue": false
      },
      "source": "companies_house"
    },
    "annualFiling": {
      "cadence": "annual",
      "lastFiled": { "periodEnd": "2025-10-25" },
      "next": { "periodEnd": "2026-10-25", "dueDate": "2026-11-08", "overdue": false },
      "source": "companies_house"
    }
  }
}
```

### Every sub-field is independently optional

Registers publish very different subsets, and we return exactly what the register states. Nothing is derived to fill a gap.

* A register that publishes only a due date populates `next.dueDate` and nothing else.
* A register that publishes only a filing **year** (several US states) populates `next.year`. No day or month is invented.
* `overdue` is only ever the register's own word. It is **never** computed by comparing `dueDate` to today, because filing deadlines carry jurisdiction-specific grace periods.

Check `complianceSignals.statutoryFilings[].fields` in the coverage manifest for the exact list a country populates before you build against it.

## Country availability

<Info>
  The manifest is the source of truth and is served live through the API and the Topograph MCP. The table below is a snapshot.
</Info>

### Compliance flags

| Country             | Flags                                                                                            | States the negative?                       |
| ------------------- | ------------------------------------------------------------------------------------------------ | ------------------------------------------ |
| 🇬🇧 United Kingdom | `accountsOverdue`, `annualFilingOverdue`, `registeredCharges`, `insolvencyHistory`, `liquidated` | Yes. `active: false` is a formal clearance |

### Statutory filings

| Country             | Accounts | Confirmation filing | Fields published                                                                     |
| ------------------- | -------- | ------------------- | ------------------------------------------------------------------------------------ |
| 🇬🇧 United Kingdom | Yes      | Annual              | Full calendar: year end, both periods, due dates, overdue                            |
| 🇮🇪 Ireland        | No       | Annual              | Last and next annual return date (NARD), as `periodEnd`. No due date: see note below |
| 🇬🇬 Guernsey       | No       | Annual              | Next due date                                                                        |
| 🇺🇸 Alaska         | No       | Biennial            | Next due date                                                                        |
| 🇺🇸 Washington DC  | No       | Biennial            | Next due date, last filed date                                                       |
| 🇺🇸 Kansas         | No       | Annual              | Next due date, last filed year                                                       |
| 🇺🇸 Kentucky       | No       | Annual              | Last filed date                                                                      |
| 🇺🇸 Louisiana      | No       | Annual              | Last filed date                                                                      |
| 🇺🇸 Montana        | No       | Annual              | Next due date                                                                        |
| 🇺🇸 Nebraska       | No       | Biennial            | Next due date                                                                        |
| 🇺🇸 New Hampshire  | No       | Annual              | Next due **year**, last filed **year**                                               |
| 🇺🇸 New Jersey     | No       | Annual              | Last filed date + year (paid status report only)                                     |
| 🇺🇸 New Mexico     | No       | Annual              | Next due date                                                                        |
| 🇺🇸 Nevada         | No       | Annual              | Next due date                                                                        |
| 🇺🇸 New York       | No       | Biennial            | Next due date                                                                        |
| 🇺🇸 Pennsylvania   | No       | Annual              | Next due date                                                                        |
| 🇺🇸 Vermont        | No       | Annual              | Last filed due date, last filed date                                                 |
| 🇺🇸 Washington     | No       | Annual              | Next due date                                                                        |

<Note>
  **Ireland reports the annual return date as a period, not a deadline.** The Irish Annual Return Date (ARD) is the latest date to which a return must be *made up*; the return is then due within 56 days of it. So `annualFiling.next.periodEnd` carries the ARD and no `dueDate` is published. The deadline is not derived, because it is not a plain 56 days: it extends past weekends and public holidays, and where financial statements are annexed it is the earlier of ARD + 56 days and financial-year-end + 9 months + 56 days.
</Note>

<Note>
  **US states publish no statutory accounts.** The `accounts` obligation is deliberately absent for every US state rather than returned empty. An empty object would read as "we looked and found nothing", which is a different claim from "this register does not hold it".
</Note>

## Both fields are additive

`complianceFlags` and `statutoryFilings` are optional and appear only where a register publishes them. Adding a country, a flag, or a sub-field never changes an existing response shape.

`statutoryFilings.*.next.overdue` intentionally mirrors `complianceFlags.accountsOverdue` / `annualFilingOverdue`. Use `complianceFlags` when you want the alerting surface, `statutoryFilings` when you want the calendar.
