07398 946 380
07398 946 380
Companies House API

Companies House + Xero: Automated Client Onboarding for Accountants and Bookkeepers

26 April 2026 7 min read

Most accountancy practices use some combination of practice management software and Xero for their client work. The standard onboarding flow looks something like this: client fills in a form, someone at the practice manually searches Companies House, copies the registered address and director names into the practice system, creates a Xero contact, re-enters the same information, and files the Companies House screenshot somewhere it will never be found again.

It works. It’s also slow, error-prone, and involves typing the same data into at least two different systems. The Companies House and Xero APIs together close this loop entirely.

Who this is for — and who it isn’t

Before going further, it’s worth being specific about where this integration makes sense, because most accounting software already covers some of this ground.

Standard practice management platforms — Iris, Karbon, Xero Practice Manager, TaxCalc — all have some level of Companies House integration built in. If you’re running a straightforward practice on one of those platforms and it’s covering your onboarding needs, a custom integration isn’t what you need.

This integration is for accountancies and bookkeepers in one of these situations:

You run a multi-tool firm where your CRM, your practice management system, and Xero are separate systems, and client data needs to exist consistently across all three. There’s no off-the-shelf tool that connects all of them in the way you need.

You’ve outgrown your practice management software and are running a custom client portal or internal system that the standard platforms don’t integrate with cleanly.

You’re handling AML compliance requirements that go beyond what your current platform covers — specifically where you need an auditable, timestamped record of what the Companies House register showed at the point of client acceptance.

You’re onboarding a high volume of clients, often corporate entities, and the manual data entry overhead has become a real cost.

If any of those describe your situation, the integration is worth understanding in detail.

What the combined integration does

At its simplest, the flow looks like this:

A new client engagement is opened — either from a client-facing onboarding form or by a staff member creating a new matter record. The client’s company registration number is entered. The Companies House API is called and returns the verified company data: name, registered address, director details, incorporation date, SIC code, and company status.

That data is then used to create or update a contact record in Xero via the Xero API. The contact is created with the verified registered address, the company name as it appears on the register, and any additional fields your practice needs. The Companies House response is also written to your internal records with a timestamp — the auditable snapshot of what the register showed at the point of onboarding.

The result: a new client goes from form submission to a fully populated Xero contact in seconds, with no manual data entry and a verified data trail.

The two API layers

This integration involves two APIs, each with different authentication patterns, and that’s where the build differs from a standalone Companies House integration.

Companies House API uses HTTP Basic Authentication with your API key as the username and an empty password. It’s a public API — you register once and the same credentials work for all your clients. Rate limited to 600 requests per five minutes, which is generous for a practice-facing tool.

Xero API uses OAuth 2.0, which means it can’t be a simple “type and try” integration. Each Xero organisation needs to be individually authorised. The typical approach is an initial OAuth flow that grants your integration access to the practice’s Xero organisation — a one-time setup per practice. Once authorised, the integration can create and update contacts without any further authentication steps.

The OAuth requirement is why there’s no live Xero demo on this site — OAuth flows don’t work as a public “type and try” tool in the way the Companies House lookup does. But in a practice-facing integration, OAuth is entirely normal and the authorisation flow takes about a minute to set up.

What data maps where

Companies House to Xero contact mapping:

  • company_name → Xero contact Name
  • registered_office_address → Xero contact Street, City, PostalCode, Country
  • company_number → stored as a custom field or in the Xero contact’s AccountNumber field
  • date_of_creation → stored as metadata (Xero doesn’t have an incorporation date field)
  • Director names from the officers endpoint → can be added as Xero contact persons

Beyond the basic mapping, most practices want to add custom logic: only pull in active directors, use the director name as the primary contact person on the Xero record, flag companies with overdue accounts or confirmation statements before creating the contact.

The AML angle

Anti-money laundering regulations require accountancy practices to verify the identity of clients and the beneficial owners of corporate clients before providing services. Part of that verification is confirming that the company is real, active, and that the person instructing you has authority to do so.

The Companies House API covers the entity verification part: is the company on the register, is it active, who are the directors and PSC? It doesn’t cover identity verification of individuals — for that you need a separate identity checking service.

What the integration adds to an AML process is the auditable record. When the Companies House lookup runs at the point of client acceptance, the response — including company status, director list, and PSC data — is timestamped and stored. That record shows what the register said at the point you took on the client, which is useful if you’re ever asked to evidence your onboarding process.

This is the part that most practice management platforms don’t do well: they’ll show you current Companies House data, but they don’t always preserve a timestamped snapshot of what the data said when you onboarded the client.

What it costs and what it saves

A Companies House + Xero integration at this level — OAuth setup, full data mapping, auditable records, director contact handling — sits in the £3,500–£6,000 range depending on the complexity of your existing systems and how much custom logic the mapping requires. This is above the standard Companies House integration price because of the additional Xero API layer and the OAuth implementation.

The saving is harder to put a precise number on, but for a practice onboarding more than 20–30 corporate clients per month, the manual data entry time alone justifies the investment within a year. Add the reduction in data entry errors, the consistency of having verified data in all systems from day one, and the AML record-keeping benefit, and the case is clear for any practice above a certain volume.

How to find out if it works for your setup

The integration works differently depending on what your practice runs on. A practice on Xero Practice Manager with a Xero organisation already connected is a different build from one running a custom CRM with Xero sitting separately. Before scoping the work, I need to understand your current system, what triggers client onboarding, and where you need the data to end up.

Start with the live Companies House demo to see the data the API returns, then look at the service page for the base integration. For the Xero layer on top, get in touch with a description of your current setup — what you run on, roughly how many corporate clients you onboard per month, and what you want to happen differently. I’ll come back with a straight answer on scope and price.

For pricing context on the Companies House part of the build, see how much a Companies House integration costs. And for the recruitment agency use case — which shares similar credit-verification goals — see the recruitment agency post.

Related posts

Need a custom integration built?

I build custom API integrations — Stripe, Companies House and bespoke data pipelines. Reliable, well-documented, no agency overhead.

Discuss your project →