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.values[].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.

Country-specific coverage

Every country manifest contains complianceSignals.flags.values. Each entry includes its own country-specific description, the public register source, reportsNegative, available payload fields, and providedBy request paths (datapoint and mode). An empty list means no compliance flags are currently covered. Pricing details and the Topograph Wizard expose the same descriptions and request paths. Flags are included in the corresponding data request, rather than sold separately. Belgium covers uboAdministrativeStrikingOff through the BCE public register with company in verification mode. Only an explicit notice produces active: true; an absent notice does not produce active: false. The notice can coexist with an active company and a normal legal situation. Correcting the UBO declaration does not automatically remove it. Annual confirmation and modification are different events: an unchanged ownership declaration can be confirmed annually. An old modification date, a control-start date, or the time Topograph fetched data does not establish an overdue confirmation. uboConfirmationOverdue is returned with ultimateBeneficialOwners in verification mode, including in a UBO-only request. The Belgian UBO Register explicitly reports overdue (active: true) or valid (active: false) confirmation; missing or unrecognised evidence remains unknown. lastConfirmedOn records the confirmation date when available, and observedAt records the source observation without being refreshed when a result is reused. Successful live retrieval remains live even when the declaration is old; compliance flags do not change retrieval freshness or authority.

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.values[].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 Wizard. The table below is a snapshot.

Compliance flags

Statutory filings

Netherlands, Jersey, Singapore and Portugal are read from the document, not a structured register field. Every other row in this table comes from a field the register publishes directly. For these four, the register’s own document states the date, but we read it from the document text rather than a dedicated data field the register exposes. Treat these four with the same caution you would apply to reading the source document yourself, and verify independently before making a compliance decision on them.
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.