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

# Perform a KYB Check

> Retrieve a company's full profile — including company information, representatives, and shareholders — sourced live from the official company register.

A KYB (Know Your Business) check gives you a verified, structured view of a company's legal identity, ownership structure, and key personnel. Kyckr retrieves this data live from the official company register at the point of request, ensuring you are always working with current information rather than a cached snapshot.

This article covers how to retrieve an Enhanced Profile, what data it contains, and how to work with the response.

***

## When to use an Enhanced Profile

<CardGroup cols={2}>
  <Card title="Director verification" icon="users">
    Retrieve a full list of company officials and directors, including their functions, dates of birth, and addresses, to support deeper due diligence.
  </Card>

  <Card title="Ownership structure" icon="chart-pie">
    Access shareholder data, including share counts and percentages, to understand who owns and controls a company.
  </Card>

  <Card title="Everything in a Lite Profile" icon="building">
    Includes all Lite Profile data — company name, registration number, legal status, and registered address — with expanded details where available from the registry.
  </Card>

  <Card title="Full KYB workflows" icon="building-columns">
    Combine all registry-sourced data — registration details, capital structure, officers, and shareholders — into a single profile for comprehensive onboarding checks.
  </Card>
</CardGroup>

***

## What the Enhanced Profile Contains

The Enhanced Profile is Kyckr's primary KYB data product. It extends the [Lite Profile](/documentation/features/verify-basic-details-v2) with structured ownership and representative data sourced directly from the company register.

| Data category              | Description                                                                                  |
| -------------------------- | -------------------------------------------------------------------------------------------- |
| Company information        | Legal name, registration number, status, addresses, legal form, and key dates                |
| Representatives            | Directors and other officers, including role, date of birth, and address                     |
| Shareholders               | Individual and corporate shareholders with share count, percentage, and identity information |
| Ultimate Beneficial Owners | UBO data where filed in structured form at the register                                      |

<Note>
  Data availability varies by jurisdiction. Not all company registers file shareholder, representative, or UBO information in structured, machine-readable form. Where this information is unavailable, the relevant fields will be absent or empty in the response.
</Note>

***

## How It Works

Retrieving an Enhanced Profile is a two-step process:

<Steps>
  <Step title="Search for the company">
    Use the [Company Search](/api-reference/companies/search-for-companies) endpoint to locate the company and confirm it exists in the registry. The search response returns an `id` field — a unique identifier for that company in Kyckr's network.
  </Step>

  <Step title="Order the Enhanced Profile">
    Pass the `id` from the search response as the resource identifier in the Enhanced Profile request. Kyckr retrieves the current data from the registry and returns it in the response.
  </Step>
</Steps>

### Example using a New Zealand company

```bash theme={null}
curl --location 'https://api.kyckr.com/v2/companies/NZ|OTQyOTAzMjk4MjU3Mg/enhanced' \
--header 'Authorization: {{apiKey}}'
```

***

## Asynchronous fulfilment

For most jurisdictions, `GET /v2/companies/{kyckrId}/enhanced` returns the profile synchronously within \~40s. Where upstream fulfilment exceeds that window, the response today times out without delivery (primarily observed for **Luxembourg**, with **Hong Kong** also in scope). Two patterns are being introduced (preview) to address this:

<CardGroup cols={2}>
  <Card title="POST + poll (recommended for production)" icon="server">
    Returns an `orderId` immediately, no server-side connection hold. Poll `GET /v2/orders/{orderId}` until `data.status` is `Success`. **Initial preview rollout: GB, IE, LU, EE, LV, CN, JP, HK.**
  </Card>

  <Card title="GET with 202 fallback" icon="bolt">
    `GET /enhanced` will hold up to \~40s; returns `200` with data if ready, or `202` with `orderId` if not. Use the `Location` header to poll. The `202` will fire only when upstream is slow.
  </Card>
</CardGroup>

<Info>**Status: Preview** — POST V2 Enhanced Profile will be rolled out registry-by-registry. The `202` GET fallback will fire opportunistically when upstream fulfilment exceeds \~40s. See the [release note](/company-v2/developer-news/2026-06-async-order-pattern) for the full rollout list and integration guidance.</Info>

***

## Optional Parameters

You can include a `customerreference` parameter to attach your own reference to a transaction. This is useful for:

* Tracking orders against internal records, such as a case ID or onboarding workflow reference.
* Reconciling API transactions in your billing or audit logs.
* Identifying requests when reviewing order history via the `/orders` endpoint.

***

## Understanding the Response

The response is structured around four main data blocks: company information, representatives, shareholders (via the `capital` array), and ultimate beneficial owners.

### Company information

Core identity and registration details are returned at the top level of the `data` object. Key fields include:

| Field                                   | Description                                                               |
| --------------------------------------- | ------------------------------------------------------------------------- |
| `companyName`                           | Legal name of the company as filed at the register                        |
| `englishName`                           | English-language name, where provided by the register                     |
| `aliases`                               | Alternative or trading names                                              |
| `previousNames`                         | Former legal names with applicable date ranges                            |
| `identifiers.primaryRegistrationNumber` | Primary company registration number                                       |
| `registrationAuthority`                 | Name of the authority where the company is registered                     |
| `status.normalized`                     | Company status mapped to a controlled value (e.g. `Active`, `Dissolved`)  |
| `legalForm.normalized`                  | Legal entity type (e.g. `Private Limited Company`)                        |
| `addresses`                             | Array of addresses, each typed (e.g. `Registered Address`, `Head Office`) |
| `foundationDate`                        | Date the company was founded                                              |
| `registrationDate`                      | Date the company was registered                                           |
| `incorporationDate`                     | Date the company was incorporated                                         |
| `dissolutionDate`                       | Date of dissolution, where applicable                                     |
| `activities`                            | Industry classifications (NACE, SIC, NAICS)                               |

Date fields follow a consistent structure throughout the response, providing both the original value as recorded at the register and a normalized ISO 8601 date:

```json theme={null}
"registrationDate": {
  "original": "01 November 2018",
  "normalized": "2018-11-01"
}
```

Company status similarly provides both the raw value from the register and a normalized equivalent:

```json theme={null}
"status": {
  "original": "Active - Registered",
  "normalized": "Active"
}
```

***

### Representatives

Representatives are the filed officers of the company — directors, senior management, legal representatives, and similar roles. They are returned in the `representatives` object, which contains two arrays: `individuals` for natural persons and `corporations` for corporate entities.

#### Individual representative

```json theme={null}
"representatives": {
  "individuals": [
    {
      "type": "Person",
      "name": "SMITH, Jane",
      "address": {
        "fullAddress": "10 Example Street, Wellington, 6011, NZ",
        "postcode": "6011",
        "country": "NZ"
      },
      "birthdate": {
        "original": "15 March 1975",
        "normalized": "1975-03-15"
      },
      "role": {
        "original": "Director",
        "normalized": "Director"
      },
      "startDate": {
        "original": "01 January 2020",
        "normalized": "2020-01-01"
      },
      "isActive": true
    }
  ]
}
```

#### Corporate representative

Where a company (rather than an individual) holds a representative role, that entity appears in `representatives.corporations`:

```json theme={null}
"representatives": {
  "corporations": [
    {
      "type": "Corporation",
      "name": "PARENT HOLDINGS LIMITED",
      "registrationNumber": "987654321",
      "registrationAuthority": "Companies House, United Kingdom",
      "role": {
        "original": "Corporate Director",
        "normalized": "Director"
      },
      "isActive": true
    }
  ]
}
```

#### Key representative fields

| Field                   | Description                                                            |
| ----------------------- | ---------------------------------------------------------------------- |
| `type`                  | Entity type: `Person`, `Corporation`, or `Other`                       |
| `name`                  | Name of the representative                                             |
| `role.original`         | Role as described at the source register                               |
| `role.normalized`       | Role mapped to a controlled dictionary value                           |
| `startDate` / `endDate` | Appointment and resignation dates                                      |
| `isActive`              | Whether the representative is currently in post                        |
| `birthdate`             | Date of birth (individuals only, where filed)                          |
| `address`               | Address of the representative                                          |
| `powers`                | Descriptions of the representative's powers, as stated at the register |
| `directorships`         | Other directorships held (UK only — see below)                         |

#### Directorship data (UK only)

For UK companies, passing the `showDirectorships=true` query parameter enriches each representative with a `directorships` array, listing other companies where the individual or corporation holds a position.

```bash theme={null}
curl --location 'https://api.kyckr.com/v2/companies/{id}/enhanced?showDirectorships=true' \
--header 'Authorization: {{apiKey}}'
```

Each directorship entry contains the company number, company name, role, appointment dates, and whether the position is currently active.

***

### Shareholders

Where the company register files shareholder information in structured form, the `capital` array contains one or more share class blocks. Each block describes a class of shares and its associated shareholdings.

Within each shareholding, shareholders appear in either `shareholders.individuals` (natural persons) or `shareholders.corporations` (corporate entities), with their respective percentage of that share class.

```json theme={null}
"capital": [
  {
    "quantity": 100.0,
    "shareholdings": [
      {
        "percentage": "99.00",
        "shareholders": {
          "individuals": [
            {
              "type": "Person",
              "name": "KIELER, Mette",
              "address": {
                "fullAddress": "1 Cornford Street, Karori, Wellington, 6012, NZ",
                "postcode": "6012",
                "country": "NZ"
              }
            }
          ]
        }
      },
      {
        "percentage": "1.00",
        "shareholders": {
          "individuals": [
            {
              "type": "Person",
              "name": "JOYCE, Darryl",
              "address": {
                "fullAddress": "1 Cornford Street, Karori, Wellington, 6012, NZ",
                "postcode": "6012",
                "country": "NZ"
              }
            }
          ]
        }
      }
    ]
  }
]
```

In this example, two individuals hold shareholdings of 99% and 1% respectively within a single share class.

#### Percentage ranges

Some registers express shareholdings as a range rather than a precise figure. When this is the case, `percentageIsRange` is `true` and the `percentage` field is `null`. Use `percentageRange`, `percentageLowerLimit`, and `percentageUpperLimit` instead.

```json theme={null}
{
  "percentageIsRange": true,
  "percentageRange": "25-50%",
  "percentageLowerLimit": "25",
  "percentageUpperLimit": "50",
  "percentage": null
}
```

#### Key shareholding fields

| Field               | Description                                                                                              |
| ------------------- | -------------------------------------------------------------------------------------------------------- |
| `percentage`        | Percentage of the share class held. Null when expressed as a range                                       |
| `percentageIsRange` | `true` when the register provides a range rather than a precise value                                    |
| `count`             | Number of shares held in this class, where available                                                     |
| `totalNominalValue` | Total nominal value of shares in this shareholding                                                       |
| `beneficiallyHeld`  | Indicates whether the holding is beneficially held. Where `false`, further investigation may be required |

***

### PDF download link

Every Enhanced Profile response includes a `links.document` field containing a path to a downloadable PDF version of the profile.

```json theme={null}
"links": {
  "document": "/orders/12345/download"
}
```

<Warning>
  The PDF is generated on demand. If the profile contains a large volume of representative or shareholder records, allow a few seconds after receiving the API response before following the download link.
</Warning>

***

## Data Availability by Jurisdiction

The depth of structured data in an Enhanced Profile depends on what the company register files and whether it is available in machine-readable form.

| Scenario                                            | Behaviour                                                               |
| --------------------------------------------------- | ----------------------------------------------------------------------- |
| Register files structured UBO data                  | UBO records appear in `ultimateBeneficialOwners`                        |
| Register files representatives but not shareholders | `capital` array will be absent or empty                                 |
| Register files shareholdings as ranges              | `percentageIsRange` is `true`; use range fields instead of `percentage` |
| Decentralised register (e.g. Germany, Canada)       | Data is aggregated from regional sub-registries.                        |

For a full breakdown of data availability by country, see [Supported Jurisdictions](/documentation/useful-information/country-coverage).

***

## Related Endpoints

<CardGroup cols={2}>
  <Card title="Company Search" icon="magnifying-glass" href="/documentation/features/search-for-a-company-v2">
    Find a company by name or registration number to retrieve the `id` needed for an Enhanced Profile request.
  </Card>

  <Card title="Lite Profile" icon="building" href="/documentation/features/verify-basic-details-v2">
    Retrieve a company's core registration details without representative or shareholder data.
  </Card>

  <Card title="Filing Search" icon="file-lines" href="/documentation/features/retrieve-a-document-v2">
    Order official register extracts and filings alongside your KYB check.
  </Card>

  <Card title="Supported Jurisdictions" icon="globe" href="/documentation/useful-information/country-coverage">
    View register coverage and data availability across 100+ countries.
  </Card>
</CardGroup>

```text theme={null}
```
