Skip to main content
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: 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. Each flag object carries:
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.
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.

statutoryFilings

Two obligations, each with what was last filed and what is next due. Each obligation carries:

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

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

Compliance flags

Statutory filings

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.
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”.

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.