Skip to main content

Overview

Every company in every registry has some notion of status. But registries express it very differently:
  • Germany’s Handelsregister records dozens of granular event codes
  • Belgium’s KBO has 36 juridical situation codes across 6 categories
  • Cyprus simply says “Active” or “Dissolved”
Topograph normalises all of these into a three-layer model so you can write one piece of logic that works across all supported countries.
"status": {
  "localName": "Ouverture de faillite",
  "active": false,
  "statusDetails": {
    "status": "UNDER_INSOLVENCY_PROCEEDING",
    "closureReason": "BANKRUPTCY",
    "insolvencyStartDate": "2024-03-15"
  }
}

The Three Layers

Layer 1 — active (boolean)

The simplest signal. true means the company is legally operating; false means it is not. This is derived deterministically from the registry and is always present. Use this for quick filtering: “show me only active companies”.

Layer 2 — localName (string)

The raw status label from the source registry, in its original language. Examples:
CountryExample localName
BelgiumOuverture de faillite
GermanyKonkurs
SwedenLikvidation
FranceEn liquidation judiciaire
PolandW upadłości
This is useful when you need to display the exact registry wording to your users.

Layer 3 — statusDetails (object)

The standardised, cross-country representation. Always use this layer for logic that needs to work across countries.
FieldTypeDescription
statusCompanyStatusStandardised status enum (see below)
closureReasonCompanyClosureReasonWhy the company closed, when applicable
closureDatestring (ISO date)When the company was formally closed
insolvencyStartDatestring (ISO date)When insolvency proceedings started
additionalInfostringFree-text context from the registry
statusDetails is populated for all countries where the registry provides sufficient data. For countries with very limited registry data (e.g. some offshore jurisdictions), only active and localName may be present.

CompanyStatus Values

ACTIVE

The company is registered and operating. No special proceedings are in effect.
"statusDetails": {
  "status": "ACTIVE"
}

UNDER_INSOLVENCY_PROCEEDING

An insolvency or restructuring proceeding has been opened but not yet concluded. The company still legally exists — it has not yet been struck off the register. This covers:
  • Bankruptcy proceedings opened (company is technically still alive while the liquidator works)
  • Judicial reorganisation / restructuring (court-supervised debt restructuring)
  • Payment suspension proceedings
The key distinction from CLOSED: the company has not yet been deregistered. It still appears on the register, but its legal situation is exceptional.
"statusDetails": {
  "status": "UNDER_INSOLVENCY_PROCEEDING",
  "closureReason": "BANKRUPTCY",
  "insolvencyStartDate": "2024-03-15"
}
Use insolvencyStartDate to assess how long the proceeding has been ongoing. Proceedings that have been open for several years without closure may indicate a complex or contested case.

CLOSED

The company has been deregistered from the registry. It no longer exists as a legal entity. Use closureReason and closureDate to understand how and when it ended.
"statusDetails": {
  "status": "CLOSED",
  "closureReason": "VOLUNTARY_DISSOLUTION",
  "closureDate": "2023-11-01"
}

UNKNOWN

The registry provides a status that cannot be mapped to any of the above (e.g. a cancelled registration file, data quality issues). Treat with caution.

CompanyClosureReason Values

Only present when status is CLOSED or UNDER_INSOLVENCY_PROCEEDING.
ValueWhen used
BANKRUPTCYCompany went bankrupt. Covers both open proceedings and concluded cases.
LIQUIDATIONLiquidation process completed and company was struck off.
VOLUNTARY_DISSOLUTIONShareholders or owners chose to wind down the company voluntarily.
ADMINISTRATIVE_DISSOLUTIONRegistry or authorities dissolved the company (e.g. failure to file, struck off by law).
COURT_ORDERA court ordered the dissolution (e.g. judicial dissolution for nullity, illegal activity).
MERGERCompany was absorbed into or merged with another entity. The surviving entity continues.
SPLITCompany divided into two or more entities. The original company ceases to exist; new entities carry on.
ACQUISITIONCompany was acquired and deregistered as a separate entity.
OTHERRegistry confirmed the company is closed but the reason doesn’t fit any above category.
UNKNOWNCompany is closed but the reason is not available or cannot be mapped.

Merger vs Split

These two are often confused:
MERGERSPLIT
DirectionMany → OneOne → Many
What happensTwo or more companies combineOne company divides into two or more
Original companyCeases to exist (absorbed)Ceases to exist (divided)
ResultOne surviving entityTwo or more new or existing entities
Example:
  • Merger: Company A + Company B → Company C (A and B are CLOSED + MERGER)
  • Split: Company A → Company B + Company C (A is CLOSED + SPLIT, B and C are new)

Example API Responses

Active company (normal)

"status": {
  "localName": "Aktiv",
  "active": true,
  "statusDetails": {
    "status": "ACTIVE"
  }
}

Active company under judicial reorganisation (Belgium)

The company is legally still active — no deregistration — but a restructuring proceeding is open.
"status": {
  "localName": "Sursis (réorganisation)",
  "active": true,
  "statusDetails": {
    "status": "UNDER_INSOLVENCY_PROCEEDING",
    "insolvencyStartDate": "2024-06-01"
  }
}

Bankrupt company with ongoing proceedings

"status": {
  "localName": "Ouverture de faillite",
  "active": false,
  "statusDetails": {
    "status": "UNDER_INSOLVENCY_PROCEEDING",
    "closureReason": "BANKRUPTCY",
    "insolvencyStartDate": "2023-11-15"
  }
}

Company closed by voluntary dissolution

"status": {
  "localName": "Dissolution anticipée",
  "active": false,
  "statusDetails": {
    "status": "CLOSED",
    "closureReason": "VOLUNTARY_DISSOLUTION",
    "closureDate": "2022-04-30"
  }
}

Company closed after merger

"status": {
  "localName": "Fusion par absorption",
  "active": false,
  "statusDetails": {
    "status": "CLOSED",
    "closureReason": "MERGER",
    "closureDate": "2021-09-01"
  }
}

Company split into two entities

"status": {
  "localName": "Scission",
  "active": false,
  "statusDetails": {
    "status": "CLOSED",
    "closureReason": "SPLIT",
    "closureDate": "2023-07-15"
  }
}

Filter for companies you can still do business with

const isOperational = company.status.active === true;

Detect companies in financial distress

const inDistress =
  company.status.statusDetails?.status === 'UNDER_INSOLVENCY_PROCEEDING';

Understand why a company closed

const { status, closureReason, closureDate } =
  company.status.statusDetails ?? {};

if (status === 'CLOSED') {
  switch (closureReason) {
    case 'BANKRUPTCY':
      // Flag for credit risk review
      break;
    case 'MERGER':
    case 'SPLIT':
      // Look up the successor entity
      break;
    case 'VOLUNTARY_DISSOLUTION':
      // Owner choice — low risk signal
      break;
  }
}

Show status in a UI component

function statusBadge(company) {
  const { active, statusDetails, localName } = company.status;

  if (statusDetails?.status === 'UNDER_INSOLVENCY_PROCEEDING') {
    return { label: 'Insolvent', color: 'orange' };
  }
  if (!active) {
    return { label: localName, color: 'red' };
  }
  return { label: 'Active', color: 'green' };
}

Migration from statusDetailsBeta

As of Week 9, 2026, statusDetailsBeta has been renamed to statusDetails. The field name is the only change — all values, types, and semantics are identical.
- company.status.statusDetailsBeta?.status
+ company.status.statusDetails?.status