Skip to main content
UBO Verify automates the analysis of corporate ownership structures, retrieving Enhanced Profiles across jurisdictions and calculating beneficial ownership at each layer of the tree. What would take analysts hours to piece together manually is resolved in minutes.

How it works

UBO Verify works by iteratively retrieving Enhanced Profiles for each entity in the ownership structure of the root company, tracing shareholders layer by layer until it reaches individuals or terminates for a documented reason. The process follows three steps:
1

Search for the root company

Use Company Search to locate the entity and obtain its codeField and jurisdiction ISO. If the search response includes a registrationAuthorityCodeField, note this value — it is required when ordering the UBO report for certain jurisdictions (e.g. Germany, Canada).
2

Request an ownership tree

Submit the root company’s code, country ISO, and your cost parameters. Kyckr will begin retrieving Enhanced Profiles for each shareholder layer and return an orderIdField for polling.
3

Poll for results

Retrieve the ownership tree using the order ID. While the analysis is in progress, the response returns IN_PROGRESS. Once complete, the tree, UBO list, coverage metrics, and any recommended next actions are returned.

Request an ownership tree

Parameters

Response

Use the orderIdField to retrieve results.

Retrieve the ownership tree

Poll the list endpoint with the orderIdField until statusField is no longer IN_PROGRESS.
Processing time depends on the depth and complexity of the ownership structure. Shallow trees with a small number of corporate shareholders complete quickly; deep, multi-jurisdiction structures take longer as each layer requires a live Enhanced Profile retrieval.

Ownership tree status values


Understanding the response

A completed ownership tree response contains several distinct sections. The following example illustrates the key fields:

Nodes

The nodesField array contains every entity in the ownership tree. Each node represents either a company or a person, with edges describing the shareholding relationship to the node below it.

Edges

Each edge records a relationship between a parent entity and a connected entity. An edge is either a SHAREHOLDER edge (an ownership relationship, with a percentage) or a REPRESENTATIVE edge (a director, officer, or other appointment, with a role).
The nameField and addressField on an edge reflect how the parent company recorded that shareholder — which may differ from the entity’s canonical name and address. Comparing edge.nameField against node.entity.nameField helps you identify name variations and verify that the resolved entity is the correct match.

Jointly held shares

In jurisdictions such as Australia and New Zealand, shares may be held jointly. The shareholdingsField on an edge captures this:
Entries sharing a jointHoldingGroupIdField belong to the same jointly held block.

Analysis insights

The uboAnalysisField provides a structured assessment of your UBO discovery, including coverage metrics, recommended next steps, and detection of potential consolidated ownership.

Analysis status

The statusField in uboAnalysisField tells you immediately whether the investigation is complete and, if not, what is preventing it. When statusField indicates an incomplete analysis, blockingReasonField provides additional context explaining specifically what is preventing completion.

Coverage metrics

The metricsField quantifies how complete your analysis is:
Interpreting the metrics:
  • If shareholdingCoverageField is 100% but uboCoverageField is low, the entire tree has been explored but many branches end at companies without Enhanced Profiles. Use requiredProfilesField to identify which profiles to order next.
  • If unpurchasedTotalField is high, there is a clear gap to close. Each profile order reduces this value and is likely to improve uboCoverageField.

Required profile recommendations

When further investigation is possible, requiredProfilesField provides a ranked list of the entities whose Enhanced Profiles would have the greatest impact on your UBO coverage:
Use the entityIdField to locate the node in nodesField and the companyCodeField to retrieve its Enhanced Profile directly if needed.

Potential beneficial owners

The potentialBeneficialOwnersField surfaces cases where the same individual may appear under multiple name variations across different shareholder declarations. Where combined ownership across those variations exceeds the UBO threshold, the system flags this for review.
Fuzzy grouping is based on first name and last name similarity and is conservative by design. You should verify potential UBO matches through additional due diligence before treating them as confirmed.

Entity resolution

UBO Verify matches company names from shareholder declarations against registered entities globally. The resolution algorithm requires address-based or jurisdiction-specific confirmation before automatically selecting a company match. This means you may encounter more situations requiring manual input — but each resolution will be a high-confidence, verifiable match rather than a potentially incorrect automatic one.

Automatic resolution

UBO Verify resolves a node automatically only when it finds a single, unambiguous match. The moment competing or near matches exist, nothing is auto-selected — the candidates are instead surfaced for you to choose from via continuation (covered in the next section), and the resolved node is marked USER_SELECTED. This is conservative by design: an automatic resolution is always one high-confidence match, never a best guess between alternatives. An algorithm-resolved node records this in its entitySelectionMetadataField, including when it was resolved (dateSelectedField) and how the match was verified (matchVerificationField):
matchVerificationField records the basis of that single match — use it to judge how much additional review a resolved node warrants: Both values appear only when sourceField is ALGORITHM.

Ambiguous matches and continuation keys

When the algorithm cannot resolve a match with sufficient confidence — for example, when multiple companies share the same name in the same jurisdiction — it returns a COMPANY_NOT_FOUND reason for non-continuation and provides candidate options:
To continue the investigation, review the candidates and pass the continuationKeyField of the correct entity in a new create request:
After selection, the resolved node is marked with USER_SELECTED:
If there are multiple unresolved nodes in the tree, there may be multiple continuation keys. You can pass them as a comma-separated list in a single request.
Only one candidate can be selected per ambiguous node. If you later determine the selection was incorrect, you will need to submit a new create request with a different continuation key.

Audit trail

Every ownership tree maintains a complete record of how it was built and how it has evolved through continuations.

Continuation selection history

The selectedCandidatesField documents every manual disambiguation decision made during the investigation:

Version history

The previousVersionsField records the chain of order IDs that preceded the current tree:
This allows you to trace every continuation decision back to the initial request, providing a full audit trail for compliance and review purposes.

Reasons for non-continuation

When the ownership tree algorithm cannot continue down a branch, it returns a reasonForNonContinuationField on the relevant node. Any layers already discovered are always returned.

Cached Enhanced Profiles

Enhanced Profiles ordered as part of a UBO Verify request are cached for 24 hours. If you resubmit a request — for example, with a higher maxCreditCost or an additional continuation key — profiles retrieved within that window are reused, avoiding duplicate orders. After 24 hours, all underlying profiles are refreshed to ensure reporting accuracy.

Response codes

Create endpoint

List endpoint


Company Search

Find the root entity and retrieve its codeField before requesting an ownership tree

Enhanced Profile

Retrieve full company profiles including representatives and shareholders

UBO Verify API Reference

Full request and response schema for the UBO Verify endpoints

UBO Verify Release Note

Summary of the latest UBO Verify enhancements