Skip to main content
A beneficial ownership profile is a company’s declaration to the central register of beneficial owners in its country: the register to which a company declares who ultimately owns or controls it. Kyckr retrieves the declaration directly from the official register when you order, so it reaches you independently of the customer. Where the register states how current the declaration is, dataAsOfDate carries that date.
To access ultimate beneficial ownership you must qualify for Legitimate Interest under the EU AML framework (AMLR). For more details, please speak to your Account Manager.
This article covers where declared beneficial ownership fits, how to order it, and how to read the response. For every field, see the UBO Register Profile reference and the Order a UBO Register Profile endpoint.

Where declared beneficial ownership fits

The draft regulatory technical standards on customer due diligence from AMLA, the EU Anti-Money Laundering Authority, treat the central register as a source to consult and to identify beneficial owners from, and look to a different, independent source to verify them, with the business register named first. Kyckr’s guide What AMLA’s Rules Say About KYB Data, Documents and Sources covers the regulatory detail.

Control beyond shareholding

Voting rights, board appointment rights and trust roles: interests that share-capital analysis alone does not reveal.

Trusts and foundations

Settlors, trustees, protectors and beneficiaries, where the register discloses them.

Audit trail

Each classification sits beside the register’s own text, or the register’s documented meaning of a code, and the UBO Register Profile PDF gives a document record of the declaration. Together they show what was disclosed and how it was interpreted.

Screening

The declared owners’ names, birth details and nationalities, where the register discloses them, feed sanctions and PEP screening of the people behind the company.

Declared ownership and the ownership chain

Company registers are a source separate from the central register of beneficial owners: the company profile for each entity in a chain carries details such as its legal form, jurisdiction and shareholdings, and Ownership Discovery traverses that chain from share-capital data to calculate ultimate beneficial owners. Together they give two independent accounts of ownership: the company’s declaration from the central register of beneficial owners, and the ownership chain from company registers.

How it works

The workflow has three steps:
  1. Search: find the company and obtain its kyckrId.
  2. Order: place an order against the company.
  3. Collect: poll the order, then download the completed profile as JSON, as a PDF, or both.
To see which countries you can order beneficial ownership profiles for, visit the Kyckr Coverage Portal. Ordering is always asynchronous: the profile is never returned inline, and collection is the same in every jurisdiction. All orders are managed through the Company V2 orders system, the same ordering, billing, and retrieval mechanism used by every other Kyckr product.

Placing an order

The response is 202 Accepted and returns an orderId:
Each successful POST places a new, chargeable order. If a request times out or fails with a 5xx status, don’t send it again straight away: first check GET /v2/orders for an order carrying your customerReference, and only place a new order if there isn’t one.

Retrieving the result

Poll GET /v2/orders/{orderId} until status is Success:
Poll at an interval of 30 seconds or longer, and lengthen the interval while the order stays Pending. A completed order carries two links:
Until the order is Success, a download returns 204 No Content with no body. Download the JSON profile:
The JSON response body is the profile itself. Its _payloadType is BOProfile_v2, and the order’s product is UBO_Register_Profile, so code that handles order results generically across products can tell what it received. schemaVersion gives the version of the profile schema the payload follows, as a semantic version such as 1.0.0; the version number on the API reference describes the documentation of the whole API, not an individual profile. Download the PDF:

Testing

In the test environment (https://test-api.kyckr.com/v2), ordering a beneficial ownership profile returns a single anonymised, redacted profile that reflects the structure of a typical entity, so you can build and test the order, poll and download flow end to end.

Errors

An order whose status is Failed carries the reason in failureReason. Placing the order again creates a new, chargeable order. See Response Codes for the error format shared by all V2 endpoints.

Understanding the response

A complete profile, for an example company with one beneficial owner:

Company and register metadata

The subject object identifies the entity or arrangement the profile describes: legal name, registration number, jurisdiction, and where available its addresses, legal form, status, and incorporation date. The kyckrId is not repeated: it is the path parameter you ordered with. The registryInfo object describes the currency and provenance of the data: These are two different clocks and can differ significantly: a register’s stated currency date can be months or even years old, for example under an annual filing cycle.

Interested parties

interestedParties is a single array of parties. Each carries a partyType of Individual, Entity, Arrangement or Unknown, so a trust or other legal arrangement holding an interest has somewhere to go rather than being forced into a company shape. Type-specific fields (date of birth for a person, for example) are present only where they apply. Where a party is itself a registered company, its registration number and issuing authority are carried in identifiers[], the same way as for any other party. Each party carries totalOwnership and totalVotingRights: the register’s own stated total where it gives one, otherwise the sum of the party’s interests that have not ended. The profile carries the register’s current position: the parties currently holding an interest in the subject, each with its current interests, and the statements in force.

Interests

Each owner has an interests array. A single person may hold several distinct interests, such as shares and voting rights. Each interest’s type pairs what the register gave with Kyckr’s normalisation of it:
The normalised values carry the meanings of the Beneficial Ownership Data Standard (BODS) v0.4 interestType codelist. Each value is the BODS code with its first letter capitalised: BODS shareholding is Shareholding. original matters where a register category spans several roles. The German example above names settlor, trustee and protector in a single category; the normalisation resolves it to Settlor, and original shows what was actually disclosed. The full vocabulary, grouped by what the interest asserts:

Interest details

Beyond its type, each interest can carry:

Share ranges

Registers frequently disclose banded ownership rather than exact figures, so percentages use a ShareRange. Percentages are expressed to two decimal places.
When only a range is available:
An open-ended band such as “more than 25%” has a minimum and no maximum:
exact is null when only a range is available, and minimum/maximum are null when an exact figure is known: check exact first, then fall back to the range.

Direct vs indirect ownership

directOrIndirect follows the same original / normalized shape as type. The values are the BODS v0.4 directOrIndirect codes with the first letter capitalised; Both expresses a case BODS does not:

Statements from the register

An empty interestedParties is itself information. The registerStatements array carries what the register states about the subject’s beneficial ownership declaration, most commonly why no owner is listed. A profile may carry several statements, and statements can accompany identified parties rather than replacing them. Statements are either subject-level (linkedPartyId null) or about one specific party (linkedPartyId set), independent of interestedParties. To show a name for a party-linked statement, match linkedPartyId against interestedParties[].partyId and use that party’s name. Each statement’s type uses the same original / normalized shape. Examples of each kind of statement, with the register’s own wording:
The statement vocabulary falls into three kinds: absence, which explains why no beneficial owner is listed; declaration, which confirms a filing occurred; and register flags, raised independently of either. The normalised values carry the meanings of the BODS v0.4 unspecifiedReason codelist, again with the first letter capitalised, plus further register-recorded statements about the subject’s declaration: Kyckr extensions, beyond BODS v0.4:

Data quality considerations

  • Field availability varies significantly by jurisdiction. A field populated for one register may be absent from another.
  • An omitted field means the same as that field with a null value. Treat the two identically. The one exception is heldAs, which means Self when omitted.
  • Enumerated values can grow as registers are added. Treat a value you don’t recognise as unknown rather than as an error.
  • Names and identifiers are returned as filed. Normalisation is applied to legalForm, status, interest types, and dates, not to names. An identifier’s type is free text, not an enumerated value.
  • Where a register withholds a party’s details, disclosure.status records that (Suppressed for a party whose details are withheld in full, Partial where only some are), and disclosure.reason carries the register’s own wording for why.
  • dataAsOfDate reflects the register’s own currency claim, not a snapshot date you control, and can be considerably older than the order itself; extractedAt is the retrieval-time reference.