UK business systems guide

Using the Companies House API for UK customer onboarding and KYC

A practical architecture for finding the right legal entity, separating company lookup from identity checks, and monitoring Companies House data without putting customer records at risk.

By RiteshSep 1, 202617 min read
Companies House data connected to company onboarding, identity checks and monitoring

Executive summary

Companies House can confirm that a company appears on the UK register. It cannot, by itself, prove that the person completing your form controls that company or is authorised to act for it. A reliable onboarding system treats those as separate decisions.

01DiscoverFind possible companies
02ResolveSelect the legal entity
03VerifyCheck organisation and person
04MonitorWatch material changes

Companies House can tell your application that a company exists, its registration number, status, registered office, officers, people with significant control, filing history and other public information. It cannot, by itself, prove that the person completing your form controls that company or has authority to act for it.

That distinction determines whether a Companies House integration becomes a useful onboarding tool or a source of incorrect customer records.

Company lookup

Does this legal entity appear on the UK register, and what does the public record say?

Identity and authority

Is this person who they claim to be, and may they act for this company?

After working with Companies House data in UK accounting, company data and CRM projects, our preferred model has four stages: discover possible companies, resolve the correct legal entity, verify the organisation and the person acting for it, then monitor important changes after onboarding. The API call is the easy part. Entity matching, verification policy and safe synchronisation require most of the design work.

What the Companies House API provides

The Companies House Public Data API returns live register data for companies covered by the Companies Act 2006. The core company profile can include the legal name, company number, status, incorporation date, company type, registered office, previous names, SIC codes and links to related resources. Those resources include officers, people with significant control, filing history, charges and insolvency information. Companies House API Company profile resource

A typical onboarding integration uses these endpoints:

PurposeEndpoint
Search for candidatesGET /search/companies?q={query}
Fetch the selected companyGET /company/{company_number}
Fetch current officersGET /company/{company_number}/officers
Fetch people with significant controlGET /company/{company_number}/persons-with-significant-control
Review filing eventsGET /company/{company_number}/filing-history
Review insolvency informationGET /company/{company_number}/insolvency
Review registered chargesGET /company/{company_number}/charges

The public API uses an API key sent through HTTP Basic Authentication. Companies House currently allows 600 requests within a five-minute period for the standard API. Requests above the limit receive a 429 Too Many Requests response for the remainder of the window. Authentication guidance Rate-limit guidance

The commercial takeaway

Use Companies House to accelerate company discovery and supply trusted registry evidence. Do not let a successful API response become shorthand for “the customer has passed KYC”.

Company lookup and KYC answer different questions

The term KYC is often used loosely in product requirements. A useful technical specification separates the checks.

Onboarding questionCan Companies House help?What else may be required?
Does this legal entity appear on the UK register?YesConfirm that the customer selected the correct record
Is the company active?YesApply your acceptance policy for other statuses
What is its registered office?YesConfirm that the address is relevant to your use case
Who are its recorded officers and PSCs?YesConsider filing dates, ceased appointments and PSC statements
Is the applicant one of those people?PartlyVerify the applicant's identity and match it to the relevant role
Is the applicant authorised to act for the company?NoUse an authority check, business email, mandate or direct confirmation
Has the individual passed your required identity checks?PartlyUse a suitable identity verification process where required
Is the customer or beneficial owner sanctioned?NoScreen against the current UK Sanctions List and other required lists
Is the relationship acceptable under your risk policy?NoComplete risk assessment, enhanced checks and ongoing monitoring
Company discovery, confirmation, identity protection and ongoing monitoring workflow
The register is one input to a wider onboarding and monitoring system—not the final decision engine.

Companies House continues to warn users that information on the register should not automatically be treated as verified or validated. Its powers and checking processes have expanded, and identity verification is being introduced, but register data still reflects information filed with Companies House. Companies House register Searching the register guidance

For businesses covered by the UK Money Laundering Regulations, customer due diligence involves identifying and verifying customers, beneficial owners and people acting on their behalf. Companies House data can support that process. It does not complete the process. HMRC customer due diligence guidance

Lesson one from a real data-matching project

In one UK data-mapping exercise, we built a small application that accepted a spreadsheet of business names, searched Companies House, collected the company number and SIC codes, mapped each SIC code to its description, retained the client's internal account reference and produced an Excel file for review.

The API responses were consistent. The matches were not.

Some source names did not exactly match the registered legal names. Trading names, abbreviations, punctuation, former names and businesses with similar names created ambiguity. In one reviewed example, the Companies House search result selected by the script was wrong, while a broader web search surfaced the intended business.

The initial assumption was:

Business nameFirst search resultCorrect company

The safer model became:

Name + addressCandidatesScored matchesConfirmationCompany number

This is the most important design decision in a Companies House onboarding flow. Search results are candidates. The company number is the durable identifier.

Multiple company candidates being evaluated into one confirmed company record
Treat every name search as candidate discovery. Use corroborating data and human confirmation to resolve the legal entity.

A practical company-matching score

When the customer already knows the company number, request it and use it directly. Preserve it as a string because leading zeroes and letter prefixes matter. When a user enters a company name, show candidate records and ask them to select one. For spreadsheet imports or CRM enrichment, introduce a confidence score and a review queue.

This is the starting score we use when designing such systems:

SignalSuggested score
Exact normalised legal name40
Exact registered office postcode25
Exact town or locality10
Active company status10
Expected SIC code5
Incorporation date matches known information5
Source name matches a previous company name5

Recommended routing:

ResultAction
90 to 100Preselect the candidate and require customer confirmation
70 to 89Show the leading candidates with their differentiating details
Below 70Send the record to manual review
Less than 15 points between the top twoRequire manual review regardless of the total

These weights are a starting model. A production system should calibrate them against reviewed matches from its own customer base. Name normalisation should remove superficial differences while preserving meaningful words. Useful transformations include case folding, repeated-space removal, punctuation normalisation and careful treatment of common legal suffixes such as Limited and Ltd. Aggressive fuzzy matching can join two different businesses, so postcode and other corroborating details should carry substantial weight.

Lesson two from a scheduled Companies House sync

Another UK accounting platform we supported used a scheduled Companies House synchronisation job. During a production incident, company names disappeared and customer records were affected. The wider application recovered after the Companies House job was disabled.

This exposed a common integration risk: an external registry feed had become authoritative over the platform's operational customer record. A missing value, changed response, incorrect match or partial job should never erase information that the customer has already confirmed.

We now recommend separating the data into four records:

Registry data modeltext
customer_company
    Operational record confirmed by the customer

registry_link
    Selected company number, match method and verification state

registry_snapshot
    Raw or mapped Companies House data with retrieval time and ETag

registry_change_event
    Detected change, review status and audit history

The scheduled job updates registry_snapshot. Business rules decide whether a detected difference updates the operational record, creates a review task or sends an alert.

  1. A null API value cannot overwrite a confirmed customer value.
  2. A changed company name becomes an event with previous and current values.
  3. A failed batch can resume without repeating completed updates.
  4. Every automated decision has an audit trail.
  5. The Companies House integration can be paused without stopping the customer platform.
Companies House data flowing through snapshot storage and validation into a protected customer database
Registry snapshots and explicit update rules create a safety boundary around the customer record.

The four-stage onboarding architecture

01Discover

Name or number to candidates

02Resolve

Confirmation and match evidence

03Verify

Company, person and authority

04Monitor

Changes, events and review

Four-stage company onboarding architecture from registry discovery through identity and risk verification
A production onboarding flow combines registry evidence, identity and authority checks, risk policy and an auditable decision.

1. Discover

Accept a company name or company number. A number should lead directly to the company profile endpoint. A name should call the company search endpoint and return a short candidate list.

Display enough information to distinguish similar companies:

  • Legal name
  • Company number
  • Status
  • Registered office locality and postcode
  • Incorporation date
  • Company type

Search should be debounced and performed by your server. Keep the API key away from browser code.

2. Resolve

Ask the customer to confirm the correct company. Save the company number, search term, selected candidate and confirmation time. Automated imports should store all serious candidates and the reasons behind the score. A reviewer should see why candidate A scored above candidate B.

An explainable match such as “legal name and postcode matched” is more useful than an unexplained confidence of 96 per cent.

3. Verify

Fetch the company profile, officers and PSCs after selection. Apply rules appropriate to the product and its regulatory exposure.

For a basic business account, this may involve:

  • Active company status
  • Customer confirmation of company number
  • Business email verification
  • Confirmation that the applicant has authority to act

For a regulated or higher-risk relationship, the workflow may also need:

  • Identity verification for the applicant
  • Beneficial-owner identification and verification
  • Sanctions and PEP screening
  • Nature and purpose of the relationship
  • Source-of-funds or wealth checks where required
  • Enhanced due diligence based on risk

The current UK Sanctions List is the UK Government's source for designated people, entities and ships. The former OFSI Consolidated List closed on 28 January 2026, so integrations should use the current source. UK Sanctions List

4. Monitor

Company status, officers, PSCs, filing events and insolvency information can change after onboarding.

Low-volume products can refresh selected records on a schedule. Larger datasets can start from a Companies House snapshot and consume the Streaming API to keep a local dataset current. The API pushes real-time changes through a long-running connection and supports company, filing, officer, PSC, charge and insolvency streams. Streaming API overview Streaming API reference

Streaming consumers need durable timepoint storage, idempotent event processing and reconnection backoff. Companies House permits a maximum of two concurrent streaming connections per account and advises clients to resume from the last processed timepoint after a disconnect. Streaming connection guidance

Identity verification changes in 2026

Companies House identity verification became a legal requirement on 18 November 2025, with a twelve-month transition period for existing directors and PSCs. New directors and PSCs entered the requirement from that date, while existing people must verify according to their applicable due dates. Identity verification guidance When verification is required

Officer and PSC API resources can now contain optional identity_verification_details. Depending on the record, these details can include the verification date, the name of an Authorised Corporate Service Provider and appointment verification dates. Officer resource PSC resource

Handle missing verification data carefully

The field is optional; the transition was still in progress when this guide was reviewed in September 2026; and Companies House verification concerns the person's Companies House role. Your product may still need to verify the applicant and their authority for your own relationship.

An absent field should produce “verification information unavailable” or a review state—not an accusation or automatic rejection.

A safe server-side implementation

The following TypeScript example shows a minimal server-side client:

companies-house.tstypescript
const baseUrl = "https://api.company-information.service.gov.uk";

function companiesHouseAuth() {
  const apiKey = process.env.COMPANIES_HOUSE_API_KEY;

  if (!apiKey) {
    throw new Error("Companies House API key is missing");
  }

  return `Basic ${Buffer.from(`${apiKey}:`).toString("base64")}`;
}

async function companiesHouseGet<T>(path: string): Promise<T> {
  const response = await fetch(`${baseUrl}${path}`, {
    headers: {
      Authorization: companiesHouseAuth(),
      Accept: "application/json",
    },
    signal: AbortSignal.timeout(8000),
  });

  if (response.status === 429) {
    throw new Error("Companies House rate limit reached");
  }

  if (!response.ok) {
    throw new Error(`Companies House returned ${response.status}`);
  }

  return response.json() as Promise<T>;
}

export function searchCompanies(query: string) {
  const params = new URLSearchParams({ q: query, items_per_page: "10" });
  return companiesHouseGet(`/search/companies?${params}`);
}

export function getCompany(companyNumber: string) {
  return companiesHouseGet(`/company/${encodeURIComponent(companyNumber)}`);
}

A production version should add:

  • Input-length and character validation
  • Request correlation IDs
  • Caching for repeated searches and profiles
  • A queue for bulk enrichment
  • Controlled retry with jitter
  • A circuit breaker when error rates rise
  • Structured logs without unnecessary personal data
  • Metrics for 429, timeout, mismatch and manual-review rates

At the published limit, the theoretical average is two standard API requests per second. A bulk worker should operate below that rate so interactive searches retain capacity. Caching candidate searches for a short period and company profiles for longer reduces repeated traffic.

Companies House provides a sandbox running the same API versions as the live environment. Use it for response handling, failure paths and test data before connecting production workflows. Some services have sandbox limitations, so test critical reads against controlled live records as well. API testing guidance

Update rules that protect customer data

Each mapped field should have an explicit update policy.

Incoming changeRecommended behaviour
Company status changesSave snapshot, create risk event and evaluate policy
Registered name changesSave as registry name, retain customer display name and request review
API field becomes nullRetain confirmed value and log the missing source value
Registered office changesSave change and request confirmation when operationally relevant
Officer or PSC changesCreate a review event for regulated or higher-risk products
Company is dissolved or enters insolvencyRestrict relevant actions according to product policy and review
API is temporarily unavailablePreserve the last successful snapshot and mark it stale
Search produces a different top resultKeep the confirmed company number and ignore ranking changes

The confirmed company number anchors the relationship. Future name searches should never silently relink the customer to another company.

Privacy and retention

Public availability does not remove UK GDPR responsibilities when officer or PSC information is stored and used in your own system. The ICO's data-minimisation principle requires organisations to identify the minimum personal data needed for a defined purpose. Storage limitation requires a retention period connected to that purpose. ICO data-minimisation guidance ICO storage-limitation guidance

Practical controls include:

  • Store the company number and decision evidence required for the relationship.
  • Avoid copying every officer and PSC field into the customer database.
  • Record the source URL or endpoint, retrieval time and decision outcome.
  • Set retention rules for rejected applicants and expired checks.
  • Restrict access to identity and due-diligence records.
  • Explain registry checks in the privacy notice.
  • Keep an audit trail showing automated and human decisions.

Implementation checklist

Before releasing a Companies House onboarding flow, confirm that:

Store the company number as a string.

Return candidate records; never silently accept the first name match.

Show legal name, number, status and registered office before confirmation.

Use address and other corroborating data for automated matching.

Send ambiguous matches to a review queue.

Keep the API key on the server.

Handle rate limits, timeouts and retries.

Separate registry data from customer-confirmed data.

Prevent null source values from erasing confirmed values.

Make scheduled jobs idempotent, observable and pausable.

Collect officer and PSC data only where required.

Use current sources for sanctions and identity checks.

Record the evidence and time behind every verification decision.

Monitor important changes after onboarding.

Frequently asked questions

Is the Companies House API free?
The public data API can be accessed with a registered application and API key. Companies House applies usage limits, including the standard limit of 600 requests within five minutes. Confirm current terms and limits before designing a high-volume service.
Can Companies House be used as a KYC provider?
It can support company identification, status checks, officer checks and beneficial ownership research. A complete KYC or customer due diligence process may also require applicant identity, authority, sanctions, PEP, risk and ongoing monitoring checks.
Can I automatically select the first company search result?
This is safe only when your product can tolerate incorrect matches, which most onboarding and CRM systems cannot. Ask the user to confirm the company or use a scoring and review workflow.
Should I store the whole Companies House response?
Store only what your purpose, audit requirements and retention policy justify. A timestamped source snapshot can be useful, while duplicating every piece of personal data creates privacy and maintenance costs.
How often should company information be refreshed?
Refresh frequency should follow the risk and operational need. A basic supplier directory may refresh periodically. A regulated financial relationship may require event-based monitoring and additional risk checks. The Companies House Streaming API supports real-time registry change feeds for larger monitoring systems.

Final recommendation

Use Companies House as the official registry source within a wider onboarding system.

SearchResolveConfirm company numberVerify person + authorityAssess riskMonitor

Our project experience shows that the largest risks sit around the API. Business names are ambiguous. Search ranking can select the wrong legal entity. Scheduled syncs can damage operational records when external data is allowed to overwrite customer-confirmed information.

A strong implementation therefore treats company search as discovery, the company number as the registry key, identity and authority as separate checks, and every external update as an auditable event. That architecture creates a faster onboarding experience while protecting the accuracy of the customer record.

This article provides technical and operational guidance. Businesses with legal or regulatory obligations should have their onboarding and due-diligence policy reviewed by an appropriate UK compliance professional.

The engagements this writing comes from

UK · Europe · Worldwide

selected work

Where these numbers came from

Production systems with the delivery figures attached.

Creoate product interface01
B2B commerce

The engineering partnership behind a cross-border wholesale marketplace.

Next.js storefront, Python ingestion pipelines, DynamoDB data layer and AWS infrastructure.

8+ yearsone team, still shipping
Ontick product interface02
Event technology

A commission-free ticketing platform built for ownership and scale.

Multi-organiser commerce, Stripe instalments and two native apps in one connected platform.

£2M+processed since launch
Easyship product interface03
Global logistics

Embedded product engineering for a global shipping platform.

Rate, tax and duty calculators, server-rendered courier pages and a custom MongoDB CMS.

550+couriers on the calculator
TEFL.ie product interface04
Education & training

A course-commerce and learning platform wired into one system.

WordPress and WooCommerce, a Moodle LMS, Stripe deposits and Zoho CRM, tied together with Zapier automation.

8 yrsengineer & run, since 2017
All White Laser product interface05
Medical aesthetics

A bespoke platform that finances aesthetic machines on Direct Debit.

A lead-to-billing system on GoCardless Direct Debit, provider certification, and a React Native app for machine owners.

9 yrsbuild & run, since 2017
Decofetch product interface06
Luxury commerce

A custom furniture marketplace engineered from storefront to infrastructure.

Server-rendered Next.js commerce over a Laravel API, bespoke operations tooling and re-architected AWS infrastructure.

0→livecustom, front to back
BA Engine Room product interface07
AI operations

An AI-native operating system that runs a consultancy lead to invoice.

Discovery briefs, e-signed contracts, Stripe deposits, delivery milestones and time tracking in one operational system.

0→1built from the ground up
PlusHeat product interface08
Home services

A conversion platform for a growing UK boiler-cover provider.

Custom plan configuration, postcode-qualified lead journeys, CRM synchronisation and campaign landing pages.

5 yrsweb partner since 2021
Léonia product interface09
Beauty commerce

A custom Shopify store for a French beauty brand.

Custom theme, customer accounts, loyalty rewards, referrals and gift-with-purchase offers.

5 yrspartners since 2021
Shutters 365 product interface10
Home improvement

Made-to-measure shutters with live pricing.

A seven-step product builder with live previews, sample orders and supplier tools.

7-stepconfigurator, live pricing
Bloc Ads Manager product interface11
Advertising

A self-service advertising platform for venues.

Campaign creation, audience targeting, in-app ads and reporting linked to venue check-ins.

check-insclosed-loop attribution
Bloc product interface12
Social events

An events app with the tools to run it.

Mobile app, backend, advertising tools, a digital marketplace and website.

4+ yrsone team, five codebases
Zonely product interface13
Social mobile

Two mobile apps for real-time companionship.

Customer and buddy apps with per-minute billing, wallets, moderation and admin tools.

2 appsconsumer + buddy, iOS & Android
Player Profile Hub product interface14
Grassroots football

Player profiles and discovery for youth football.

Verified profiles, video highlights, coach discovery and safeguarding on web and mobile.

0→1built from the ground up
DeepSpatial product interface15
Geospatial AI

Websites and a talent platform for DeepSpatial.

Corporate and investor pages, the Xploor talent platform and ongoing releases on AWS Amplify.

2 yrsone team, ongoing
Yippee Malta product interface16
Travel

Tour bookings with a custom mobile-first checkout.

A multilingual website connected to the booking API, with deposits, coupons and affiliate tracking.

90+core web vitals, mobile & desktop
Professional Energy product interface17
Energy brokerage

One platform for tenders, contracts and accounts.

Supplier tenders, contract management, brokerage accounting and client records.

100+suppliers in one tender

Tell us what you are trying to build.

A thirty-minute call with the engineer who would run it.

Book a call