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

# Company Status

> How Topograph models company status across jurisdictions, from binary active/ceased to insolvency proceedings, closure reasons, and dates

## 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 nearly 40 juridical situation codes
* 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.

```json theme={null}
"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 register. It can be omitted when the register's status cannot be classified (`statusDetails.status` is then `UNKNOWN`), so test for `active === false` rather than a falsy value.

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:

| Country | Example `localName` |
| - | - |
| Belgium | `Ouverture de faillite` |
| Germany | `Konkurs` |
| Sweden | `Likvidation` |
| France | `En liquidation judiciaire` |
| Poland | `W 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.

| Field | Type | Description |
| - | - | - |
| `status` | `CompanyStatus` | Standardised status enum (see below) |
| `closureReason` | `CompanyClosureReason` | Why the company closed, when applicable |
| `closureDate` | `string` (ISO date) | When the company was formally closed |
| `insolvencyStartDate` | `string` (ISO date) | When insolvency proceedings started |
| `additionalInfo` | `string` | Free-text context from the registry |

<Note>
  `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.
</Note>

***

## `CompanyStatus` Values

### `ACTIVE`

The company is registered and operating. No special proceedings are in effect.

```json theme={null}
"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.

```json theme={null}
"statusDetails": {
  "status": "UNDER_INSOLVENCY_PROCEEDING",
  "closureReason": "BANKRUPTCY",
  "insolvencyStartDate": "2024-03-15"
}
```

<Tip>
  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.
</Tip>

### `INACTIVE_NOT_CLOSED`

The company still exists on the register but is **not currently operating**, and it has not been permanently closed. It could become active again. This covers:

* Dormant or non-trading companies
* Suspended or administratively inactive companies that can be reinstated (for example, after filing overdue accounts)
* Companies that are registered but not yet trading, or whose registration is still pending

`active` is usually `false`. The register's own wording stays in `localName`, and `additionalInfo` may add context.

```json theme={null}
"statusDetails": {
  "status": "INACTIVE_NOT_CLOSED",
  "additionalInfo": "Company registration is suspended"
}
```

### `PENDING_DISSOLUTION`

The company is still registered, but the register records a **process to remove it** that has not yet completed, such as a proposal to strike it off or a liquidation that is under way. The register usually still reports the company as active, so `active` is usually `true`. The status becomes `CLOSED` once the removal completes.

```json theme={null}
"statusDetails": {
  "status": "PENDING_DISSOLUTION",
  "additionalInfo": "Active proposal to strike off (pending dissolution)"
}
```

### `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.

```json theme={null}
"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. `active` may be absent in this case.

***

## `CompanyClosureReason` Values

Only present when `status` is `CLOSED` or `UNDER_INSOLVENCY_PROCEEDING`.

| Value | When used |
| - | - |
| `BANKRUPTCY` | Company went bankrupt. Covers both open proceedings and concluded cases. |
| `LIQUIDATION` | Liquidation process completed and company was struck off. |
| `VOLUNTARY_DISSOLUTION` | Shareholders or owners chose to wind down the company voluntarily. |
| `ADMINISTRATIVE_DISSOLUTION` | Registry or authorities dissolved the company (e.g. failure to file, struck off by law). |
| `COURT_ORDER` | A court ordered the dissolution (e.g. judicial dissolution for nullity, illegal activity). |
| `MERGER` | Company was absorbed into or merged with another entity. The surviving entity continues. |
| `SPLIT` | Company divided into two or more entities. The original company ceases to exist; new entities carry on. |
| `ACQUISITION` | Company was acquired and deregistered as a separate entity. |
| `OTHER` | Registry confirmed the company is closed but the reason doesn't fit any above category. |
| `UNKNOWN` | Company is closed but the reason is not available or cannot be mapped. |

### Merger vs Split

These two are often confused:

| | `MERGER` | `SPLIT` |
| - | - | - |
| Direction | Many → One | One → Many |
| What happens | Two or more companies combine | One company divides into two or more |
| Original company | Ceases to exist (absorbed) | Ceases to exist (divided) |
| Result | One surviving entity | Two 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)

```json theme={null}
"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.

```json theme={null}
"status": {
  "localName": "Sursis (réorganisation)",
  "active": true,
  "statusDetails": {
    "status": "UNDER_INSOLVENCY_PROCEEDING",
    "insolvencyStartDate": "2024-06-01"
  }
}
```

### Bankrupt company with ongoing proceedings

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

### Company closed by voluntary dissolution

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

### Company closed after merger

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

### Company split into two entities

```json theme={null}
"status": {
  "localName": "Scission",
  "active": false,
  "statusDetails": {
    "status": "CLOSED",
    "closureReason": "SPLIT",
    "closureDate": "2023-07-15"
  }
}
```

***

## Recommended Patterns

### Filter for companies you can still do business with

```javascript theme={null}
const isOperational = company.status.active === true;
```

### Detect companies in financial distress

```javascript theme={null}
const inDistress =
  company.status.statusDetails?.status === 'UNDER_INSOLVENCY_PROCEEDING';
```

### Understand why a company closed

```javascript theme={null}
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

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

  if (statusDetails?.status === 'UNDER_INSOLVENCY_PROCEEDING') {
    return { label: 'Insolvent', color: 'orange' };
  }
  if (statusDetails?.status === 'PENDING_DISSOLUTION') {
    return { label: 'Pending dissolution', color: 'orange' };
  }
  if (statusDetails?.status === 'INACTIVE_NOT_CLOSED') {
    return { label: localName, color: 'grey' };
  }
  if (active === false) {
    return { label: localName, color: 'red' };
  }
  if (active === undefined) {
    return { label: localName, color: 'grey' };
  }
  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.

```diff theme={null}
- company.status.statusDetailsBeta?.status
+ company.status.statusDetails?.status
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.