SStratum APIs

Compliance team · KYB onboarding pipeline

Companies House watch for KYB onboarding

The problem

KYB onboarding wants the full corporate picture: company status + officers + PSC tree + charges + insolvency events. The Companies House API gives you each one as a separate request and the layered corporate structure (ParentCo → HoldCo → OpCo → individual UBO) takes 4-5 hops to walk. Doing it correctly is hours of code; doing it incorrectly misses sanctions exposure on a hidden owner.

How Stratum fits

The CH-watch endpoint composes Companies House profile + officers + PSC tree + UBO walk in one call. The PSC walker handles up to 5 levels of corporate ownership with cycle detection + lower-bound stake aggregation (75% × 75% = 56.25% UBO). Pair with sanctions-screening on each UBO and corporate name — that's the LSAG-2025 expectation for "sanctions exposure on beneficial owners". Cached for 30 days per company; live refresh on bypass.

One request

# Request
curl https://api.stratumapis.com/v1/ch/companies/00445790/psc-tree?depth=5 -H "x-stratum-key: $KEY"

# Response
{ "companyName": "Acme Holdings Ltd", "tree": {...}, "ubos": [{"name": "Alice Smith", "effectiveStake": 0.5625, "isUbo": true}], "unresolved": false }

Set $KEY from your dashboard.

Frequently asked

How deep does the PSC walk go?

Default depth 5; configurable via `?depth=N` (max 5). UK corporate parents recurse; non-UK parents stop with a `non-uk-corporate-leaf` flag.

What about cycles in the ownership structure?

Cycle detection runs per-walk with a path-Set; cycle nodes are marked + the unresolved-walk flag bubbles up to the response so the caller can flag for manual review.

Can I monitor a company for changes?

The /v1/ch/monitor endpoint adds a company to the watchlist; daily-cron diffs the PSC tree + officers + filings + alerts on changes. Subscription tier required (mirrors S1 monitoring tier).

Companies House Watch for KYB Onboarding | Stratum APIs