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.
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:- Search: find the company and obtain its
kyckrId. - Order: place an order against the company.
- Collect: poll the order, then download the completed profile as JSON, as a PDF, or both.
Placing an order
202 Accepted and returns an orderId:
Retrieving the result
PollGET /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:
_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
Thesubject 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 aninterests 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:
Ownership and economic interests
Ownership and economic interests
Control interests
Control interests
Trust and legal arrangement roles
Trust and legal arrangement roles
Metadata
Metadata
Interest details
Beyond itstype, each interest can carry:
Share ranges
Registers frequently disclose banded ownership rather than exact figures, so percentages use aShareRange. Percentages are expressed to two decimal places.
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 emptyinterestedParties 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:
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 meansSelfwhen 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’stypeis free text, not an enumerated value. - Where a register withholds a party’s details,
disclosure.statusrecords that (Suppressedfor a party whose details are withheld in full,Partialwhere only some are), anddisclosure.reasoncarries the register’s own wording for why. dataAsOfDatereflects the register’s own currency claim, not a snapshot date you control, and can be considerably older than the order itself;extractedAtis the retrieval-time reference.