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

# Shareholding Summary for Enhanced Profile

> Each owner's combined shareholding across every share class in an Enhanced Profile, with a beneficial ownership resolution at a threshold you choose.

## Overview

The `capital[]` array in an Enhanced Profile reports each shareholding as a percentage of its own share class. An owner who holds shares in three classes appears as three figures, each relative to one class.

The shareholding summary combines those figures into one entry per owner, calculated across every class the owner holds. It also tells you whether the profile alone shows who owns at or above an ownership threshold. If a corporate shareholder could change the result, use Ownership Discovery in the UBO Verify API to trace that shareholder down to individuals.

## Request the summary

Add `shareholdingSummary` to the `extend` query parameter on `GET` or `POST /v2/companies/{kyckrId}/enhanced`:

```http theme={null}
GET /v2/companies/{kyckrId}/enhanced?extend=shareholdingSummary
```

`shareholdingSummary` alone uses a threshold of 25. To choose another threshold, request `shareholdingSummary:<n>`, where `<n>` is 5, 10, 15, 20 or 25:

```http theme={null}
GET /v2/companies/{kyckrId}/enhanced?extend=shareholdingSummary:10
```

Each request carries one threshold. Names are case-insensitive and extension types combine, for example `extend=geocoding,shareholdingSummary:5`.

On `POST`, the option goes in the query string:

```http theme={null}
POST /v2/companies/{kyckrId}/enhanced?extend=shareholdingSummary:10
```

The result is in the order download, at `additionalInformation.shareholdingSummary`:

```http theme={null}
GET /v2/orders/{orderId}/download?format=json
```

A `GET` that returns `202` with an `orderId` carries the same option. The summary is in that order download once the order completes.

## Unsupported requests

An unsupported threshold, such as `shareholdingSummary:30`, returns HTTP 400 with this detail:

```text theme={null}
shareholdingSummary threshold must be one of 5, 10, 15, 20, 25
```

Requesting `shareholdingSummary` more than once returns HTTP 400 with this detail:

```text theme={null}
shareholdingSummary may only be requested once
```

A 400 does not place an order and does not incur a charge.

## Owners

`owners[]` has one entry per distinct owner across all capital classes, sorted by `ownershipPercentage` from highest to lowest. Owners without an `ownershipPercentage` follow, ordered by name and then `identifier`.

`ownershipPercentage` is the headline figure. `ownershipPercentageBasis` names where it came from:

| Basis | Meaning |
| - | - |
| `ShareCountExact` | The exact figure from `shareCountPercentage`. |
| `ValueExact` | The exact figure from `valuePercentage`. |
| `ShareCountBound` | The upper end of the `shareCountPercentage` range. |
| `ValueBound` | The upper end of the `valuePercentage` range. |

An exact figure is used before a range. When both lenses are exact the higher is used. When neither is exact the higher upper end is used. A tie goes to share count.

`ownershipPercentage` and `ownershipPercentageBasis` are omitted when neither lens has a figure. Such an owner makes the outcome `Indeterminate` with the reason `OwnerPercentageUnknown`.

`matchedBy` names the field that grouped an owner's holdings across classes: `IdNumber`, `RegistrationNumber` or `Name`.

## Two percentages

* `shareCountPercentage` is the owner's combined share count divided by the company's total share count.
* `valuePercentage` weights the same holdings by nominal capital value.

The two differ when share classes differ in value per share. Value per share is constant within a class, so an owner's value in a class is their share of the class value in proportion to their shares.

Neither percentage is voting power. Classes can carry different voting or economic rights.

`shareCountPercentage` also carries quota percentages where a company issues quotas rather than shares, for example an Italian S.r.l.

Each percentage uses the same shape. `exact` is set when one figure is known. `minimum` and `maximum` carry a range when only a bound is known. `original` carries the value as the register filed it.

## Classes and joint holdings

`byClass[]` lists one entry for each share class an owner holds, with the class percentage, count, value and `sourceName`, the holder name exactly as filed.

A holding shared between parties with no disclosed split is a joint holding. Each joint holder is credited with the full holding, so figures across owners and `corporateHoldingTotal` can add up to more than 100. `hasJointHoldings` marks the owner and `jointlyHeld` marks the class entry.

## Investigation reasons

`investigationReasons` explains why an owner's figures can be partial or approximate. `requiresInvestigation` is true when the list is not empty.

| Reason | Meaning |
| - | - |
| `JointHolding` | A holding is jointly held with no disclosed split. |
| `ShareCountUnknown` | The share count lens cannot be computed exactly. |
| `ValueUnknown` | The value lens cannot be computed exactly. |
| `BandOnlyPercentage` | A holding percentage is disclosed as a range. |
| `ClassWeightUnknown` | A class percentage cannot be converted to a company percentage because the class weight is not known. |
| `NameMatch` | Holdings were grouped by name, so holdings filed under a differently written name can appear as a separate owner. Compare `byClass[].sourceName`. |

The two lenses are independent. An owner can have an exact figure on one lens while the other lens carries a reason.

## Beneficial ownership resolution

`beneficialOwnershipResolution` carries the `threshold` it was evaluated at and an `outcome`:

| Outcome | Meaning |
| - | - |
| `ResolvedFromProfile` | The profile alone shows who owns at or above the threshold. |
| `FurtherResolutionRequired` | A corporate holding could change who is at or above the threshold. |
| `Indeterminate` | The profile cannot support the assessment. |

`reasons[]` explains the outcome:

| Reason | Meaning |
| - | - |
| `NoShareholdingData` | The profile discloses no shareholders and `owners[]` is empty. |
| `OwnerPercentageUnknown` | At least one owner has no figure on either lens. The outcome is `Indeterminate` and the reason for the remaining owners follows. |
| `NoCorporateShareholders` | Every owner is an individual. |
| `CorporateHoldingsAtOrAboveThreshold` | `corporateHoldingTotal` is at or above the threshold. |
| `CorporateHoldingsCouldLiftIndividual` | An individual below the threshold would reach it with `corporateHoldingTotal` added. |
| `CorporateHoldingsCannotLiftAnyone` | `corporateHoldingTotal` is below the threshold and no individual would reach it. |

`corporateHoldingTotal` is the sum of `ownershipPercentage` across corporate owners. `individualsAtOrAboveThreshold` lists the `identifier` of each individual at or above the threshold. `individualsWithinReach` lists the `identifier` of each individual below it who would reach it with `corporateHoldingTotal` added.

Two things shape the result. Name matching can split one person across two owner entries. `shareholderType` is the register classification.

## Example

A company has two share classes. Class A holds Ordinary Shares with the higher value per share. Class B holds Preference Shares. The request uses the default threshold of 25.

```json theme={null}
{
  "additionalInformation": {
    "shareholdingSummary": {
      "owners": [
        {
          "identifier": "SH-0001",
          "name": "John Sample",
          "shareholderType": "Person",
          "idNumber": "12345670",
          "matchedBy": "IdNumber",
          "shareCountPercentage": { "minimum": 15.0, "maximum": 65.0, "exclusiveMinimum": false, "exclusiveMaximum": false },
          "valuePercentage": { "minimum": 10.0, "maximum": 76.67, "exclusiveMinimum": false, "exclusiveMaximum": false },
          "ownershipPercentage": 76.67,
          "ownershipPercentageBasis": "ValueBound",
          "hasJointHoldings": false,
          "requiresInvestigation": true,
          "investigationReasons": ["ShareCountUnknown", "ValueUnknown"],
          "byClass": [
            {
              "classCode": "A",
              "classDescription": "Ordinary Shares",
              "percentage": {},
              "jointlyHeld": false,
              "sourceName": "John Sample"
            },
            {
              "classCode": "B",
              "classDescription": "Preference Shares",
              "percentage": { "exact": 30.0, "original": "30.0" },
              "jointlyHeld": false,
              "sourceName": "John Sample"
            }
          ]
        },
        {
          "identifier": "SH-0002",
          "name": "Jane Example",
          "shareholderType": "Person",
          "idNumber": "12345671",
          "matchedBy": "IdNumber",
          "totalShareCount": 500,
          "shareCountPercentage": { "exact": 25.0, "exclusiveMinimum": false, "exclusiveMaximum": false },
          "valuePercentage": { "exact": 33.33, "exclusiveMinimum": false, "exclusiveMaximum": false },
          "ownershipPercentage": 33.33,
          "ownershipPercentageBasis": "ValueExact",
          "hasJointHoldings": false,
          "requiresInvestigation": false,
          "investigationReasons": [],
          "byClass": [
            {
              "classCode": "A",
              "classDescription": "Ordinary Shares",
              "percentage": { "exact": 50.0, "original": "50.0" },
              "count": 500,
              "value": 5000.0,
              "jointlyHeld": false,
              "sourceName": "Jane Example"
            }
          ]
        },
        {
          "identifier": "SH-0003",
          "name": "Carol Sample",
          "shareholderType": "Person",
          "idNumber": "12345672",
          "matchedBy": "IdNumber",
          "totalShareCount": 400,
          "shareCountPercentage": { "exact": 20.0, "exclusiveMinimum": false, "exclusiveMaximum": false },
          "valuePercentage": { "exact": 13.33, "exclusiveMinimum": false, "exclusiveMaximum": false },
          "ownershipPercentage": 20.0,
          "ownershipPercentageBasis": "ShareCountExact",
          "hasJointHoldings": false,
          "requiresInvestigation": false,
          "investigationReasons": [],
          "byClass": [
            {
              "classCode": "B",
              "classDescription": "Preference Shares",
              "percentage": { "exact": 40.0, "original": "40.0" },
              "count": 400,
              "value": 2000.0,
              "jointlyHeld": false,
              "sourceName": "Carol Sample"
            }
          ]
        },
        {
          "identifier": "SH-0004",
          "name": "Example Holdings Ltd",
          "shareholderType": "Corporation",
          "registrationNumber": "87654321",
          "matchedBy": "RegistrationNumber",
          "totalShareCount": 150,
          "shareCountPercentage": { "exact": 7.5, "exclusiveMinimum": false, "exclusiveMaximum": false },
          "valuePercentage": { "exact": 5.0, "exclusiveMinimum": false, "exclusiveMaximum": false },
          "ownershipPercentage": 7.5,
          "ownershipPercentageBasis": "ShareCountExact",
          "hasJointHoldings": false,
          "requiresInvestigation": false,
          "investigationReasons": [],
          "byClass": [
            {
              "classCode": "B",
              "classDescription": "Preference Shares",
              "percentage": { "exact": 15.0, "original": "15.0" },
              "count": 150,
              "value": 750.0,
              "jointlyHeld": false,
              "sourceName": "Example Holdings Ltd"
            }
          ]
        }
      ],
      "beneficialOwnershipResolution": {
        "threshold": 25,
        "outcome": "FurtherResolutionRequired",
        "reasons": ["CorporateHoldingsCouldLiftIndividual"],
        "corporateHoldingTotal": 7.5,
        "individualsAtOrAboveThreshold": ["SH-0001", "SH-0002"],
        "individualsWithinReach": ["SH-0003"]
      }
    }
  }
}
```

Jane Example holds only Class A and the count is disclosed. Both lenses are exact. Her share count percentage is 25 and her value percentage is 33.33, because a Class A share carries twice the nominal value of a Class B share.

John Sample's Class A holding discloses no percentage and no count. His Class B holding discloses a percentage of 30 and no count. The Class B portion converts to 15 by share count and 10 by value. The Class A portion can add up to 50 percentage points by share count and 66.67 by value, which is Class A's weight on each lens. The result is a range of 15 to 65 by share count and 10 to 76.67 by value. `ShareCountUnknown` and `ValueUnknown` record why. Neither lens is exact, so `ownershipPercentage` is 76.67 with the basis `ValueBound`, the highest figure he could hold by value. He is listed in `individualsAtOrAboveThreshold` on that basis.

Example Holdings Ltd is the only corporate owner at 7.5, below the threshold of 25. Carol Sample holds 20. With `corporateHoldingTotal` added her figure reaches 27.5, which is at or above the threshold, so the outcome is `FurtherResolutionRequired` with the reason `CorporateHoldingsCouldLiftIndividual`.

## Additional resources

* [Company V2 API Reference](https://developer.kyckr.com/company-v2/api-reference/overview.md)
* [Company V2 Changelog](https://developer.kyckr.com/company-v2/api-reference/changelog.md)


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