Resolve the ultimate beneficial owners of any UK company — traversing corporate structures automatically, decoding control types to plain English, and splitting active from ceased PSCs. One API call.
The Companies House PSC API returns the right data — but in a form that requires significant work before it's usable in a compliance or KYB workflow.
Raw CH responses use codes like ownership-of-shares-25-to-50-percent. There are 80+ codes across shares, voting rights, director appointment, LLP membership, and influence. No human-readable decoding is provided.
The CH API returns all PSCs in a single list — past and present — with no filtering. You have to check ceased and ceased_on on every item to determine who still controls the company.
If a corporate entity PSC is registered at CH, you need to fetch its PSCs separately. Then repeat. And handle cycles. The raw API has no chain-traversal capability.
Every control code is translated to plain English. 'ownership-of-shares-25-to-50-percent' becomes 'Owns 25-50% of shares'. All 80+ codes across shares, voting, director appointment, LLP, and RLE are covered.
The response separates active_pscs from ceased_pscs automatically. No need to check ceased or ceased_on on every item — the active register is ready to use directly.
When a PSC is a UK corporate entity, its registration_number is surfaced as company_number at the top level. Pass it directly to the chain endpoint — no digging through identification objects.
Listed PLCs and other entities exempt from PSC filing are detected automatically. The response includes has_psc_exemption: true with an explanation — your code doesn't need to handle exemption links separately.
The /psc/chain endpoint traverses the ownership structure recursively — following corporate entity PSCs to find the natural persons who ultimately control the company.
# Flat PSC register — who controls the company? GET /v1/company/12345678/psc # Ownership chain — who ultimately controls? GET /v1/company/12345678/psc/chain?max_depth=5 X-API-Key: reg_live_...
Every node in the chain has a terminal_reason that explains exactly why traversal ended there.
| terminal_reason | Meaning | UBO found? |
|---|---|---|
| natural_person | An individual — ultimate beneficial owner identified | Yes |
| foreign_entity | Corporate entity not registered at Companies House — no further traversal possible | No |
| legal_person | Government body, charity, or similar legal entity | No |
| super_secure | PSC details protected by court order | No |
| psc_exempt | Company exempt from PSC filing (e.g. listed PLC) | No |
| depth_limit | max_depth reached — increase to traverse further | No |
| not_found | Company not found at Companies House or API error | No |
| cycle_detected | Circular ownership detected — traversal stopped to prevent a loop | No |
chain_metadata.total_credits so you always know the cost.Verify who controls a business before onboarding. Pull the UBO chain as part of your automated onboarding flow — no manual Companies House searches.
Identify natural persons with significant control for PEP and sanctions screening. The chain endpoint returns individuals in a consistent format regardless of depth.
Corporate landlords and SPVs are often controlled through multi-layer holding structures. Resolve the full chain to identify who ultimately owns the property portfolio.
Verify that the beneficial owners of a borrower match the loan application. Detect undisclosed related-party structures by comparing chains across applicants.
Identify who you are ultimately doing business with before signing term sheets or transferring funds.
Many regulatory regimes require documentation of UBOs above a 25% threshold. The PSC chain gives you this in a machine-readable format ready for your compliance record.
50 free calls per month. All endpoints included. No Companies House API key required.
By signing up you agree to our terms of service.