Client onboarding due diligence desk for UK companies
Search the UK company register, review officers, ownership, charges and filings on one screen, then save the packet to your CRM and a dated audit log.
Build me a client onboarding due diligence desk that my compliance and onboarding team opens every time we take on a new UK client. Today they paste screenshots of the Companies House register into a Word template. I want one review screen instead, and a persisted audit register so we can show who checked what and when.
The app opens on a search box. The reviewer types a company name or a company number and I run Search Companies in Companies House, showing the matches as a list with company name, company number, status, incorporation date and registered office address so they can tell similar names apart. Give me an optional advanced filter panel that uses Advanced Company Search when someone wants to narrow by status, company type, SIC code or location. Picking a result opens the review screen for that company number. Company numbers are eight character zero padded strings, so preserve leading zeros everywhere, including in the spreadsheet row.
The review screen is one page for one company, built out of panels that load in parallel. The header panel comes from Get Company Profile and shows company name, company number, status, incorporation date, company type, jurisdiction and SIC codes with their descriptions, plus the registered office address from Get Registered Office Address. Call out overdue filings loudly: if accounts are overdue or the confirmation statement is overdue, show that as a warning chip in the header rather than buried in a date field, and show the next due dates either way.
An officers panel lists current officers from List Company Officers with name, role, appointed date, nationality, country of residence and month and year of birth, with resigned officers collapsed behind a toggle rather than mixed in. A people with significant control panel lists entries from List Persons with Significant Control with the nature of control, notified date, and whether the entry is an individual, a corporate entity or a legal person, pulling extra detail from Get Individual PSC when the reviewer expands an individual. Show PSC statements from List PSC Statements in the same panel, because a statement such as the company having no identified PSC is itself a finding the reviewer needs to see. If the register returns an identity verification status for a director or PSC, surface it as a column, since that field matters under the new UK identity verification rules and its absence is worth noticing.
A charges panel lists secured debts from List Company Charges with the charge status, created date, persons entitled and a short description, with satisfied charges de-emphasised. An insolvency panel uses Get Company Insolvency and treats a not found response as a clean result rather than an error, showing cases and their dates when there are any. A filings panel shows the last twelve transactions from List Filing History with date, category and description.
Screening: take every named officer and every named PSC on the screen and check each one against the disqualified directors register using Search Disqualified Officers, and Get Corporate Disqualified Officer for corporate entries. A hit is flagged inline next to that person's name, not in a separate report, and expanding the flag shows the disqualification reason and dates. Be honest in the wording that this is a name match and not proof of identity: label it as a possible match for the reviewer to confirm or dismiss, and let them record that dismissal so it goes into the saved packet. Compare date of birth where both sides have one to help them decide.
The reviewer section sits at the bottom of the same screen. First, a declared ownership table the reviewer fills in with what the client told us: name, entity type and percentage held. Render it side by side with the register's PSC entries and compute the differences, so a person the client declared who is absent from the register, a register entry the client did not declare, and a percentage band mismatch each show as an explicit discrepancy line. This comparison is the point of the screen, not a footnote: firms with anti money laundering obligations have to report a difference between the beneficial ownership information they hold and the PSC register, so make the discrepancy verdict a first class output that gets carried into everything the save writes. Then a risk rating of low, medium or high, and a free text reviewer note.
Before the reviewer starts, check history. Read the audit register with Get Values and, if this company number already has rows, show a prior review banner at the top of the screen with the previous rating, reviewer and date, and highlight what has changed since then in status, officers, PSC entries and charges. Drift between reviews is exactly what a re-review is for.
Saving the review does three things in order. In HubSpot, run Search Companies for an existing record matching the company name and the company number, and create one with Create Company if there is no match, storing the company number on the record so future reviews match cleanly. Then attach the due diligence summary with Create Note associated to that company, written as a readable packet: profile snapshot, overdue filing status, officers, PSCs and statements, charges, insolvency, recent filings, disqualification flags with their outcome, the declared versus register comparison and its verdict, the risk rating and the reviewer note.
Then append exactly one row to the Google Sheets audit register with Append Values, capturing review date and time, reviewer name, company name, company number, risk rating, the discrepancy verdict, a short list of what was checked, the count of disqualification flags and their outcome, and a link to the HubSpot record. One review is one row, appended and never overwritten, because the register is meant to be an immutable trail. If the sheet is empty, write the header row first.
Finally, if the rating is high, post to a compliance channel in Slack with Send a Message: company name and number, reviewer, the reasons behind the rating, any disqualification flags, whether ownership matched, and a link back to the HubSpot record. Let the channel be picked in settings using List Channels rather than hardcoded, and let an admin choose which ratings post, defaulting to high only.
A settings screen holds the audit register spreadsheet id and tab name, the Slack channel and the rating threshold that triggers a post. A history view lists past reviews read back from the audit register, filterable by rating and reviewer, so someone can answer an inspection question without opening the spreadsheet. Handle the failure cases gracefully: a company with no PSC entries, no charges or no insolvency record should render as an explicit clean result rather than an empty box, and the register enforces a rate limit, so batch the per person disqualification checks and show progress rather than firing everything at once. The reviewer name comes from whoever is signed in and should not be typed by hand.
What does this prompt do?
- Type a company name or number, pick the right match, and see the official register profile, current officers, people with significant control, charges, insolvency history and the last dozen filings on a single review screen.
- Every named officer and owner is checked against the UK disqualified directors register, with any possible match flagged inline next to the name.
- Type in the ownership the client declared to you and see it side by side with the public register, so a discrepancy you may be obliged to report is impossible to miss.
- Saving a review files the due diligence summary on the company record in your CRM, appends a dated row to your audit register spreadsheet, and posts high risk cases to a compliance channel.
What do I need to use this?
- A free Companies House developer account for access to the UK register
- A HubSpot login where your team keeps company records
- A Google account and a spreadsheet to use as the audit register
- A Slack workspace and a compliance channel, only needed if you want alerts on high risk reviews
How can I customize it?
- Change the risk rating labels, or add your own checklist items to the reviewer section of the screen
- Point the audit register at whichever spreadsheet and tab your compliance team already keeps, and add columns such as engagement partner or client reference
- Decide which ratings post to Slack, and which channel they go to. The default is high risk only
FAQs
Does this change anything on the public register?
Do we need a paid Companies House subscription?
What happens when we review a company we have looked at before?
If someone is flagged against the disqualified directors register, are they definitely disqualified?
Why does the app ask us to type in the ownership the client declared?
Can we use it without Slack?
Related templates
Stop buying stale lists. Reps run a saved search, work the results like an inbox, and only the accounts they approve ever reach your CRM.
Pick a date, a starting point and a radius, then build a sequenced day of customer visits that lands straight on your calendar.
See how your brand's news coverage and sentiment stack up against four competitors, then let an assistant write the weekly report for you.
One screen where reps filter for companies that fit, see who is actually reachable at each account, and save only the addresses that verify.
One screen showing every social post waiting on approval, sorted by deadline, so reviewers can approve or reject without leaving the page.
Every Monday, find the past champions and closed-won contacts who changed jobs, update Attio, and get the moves worth chasing in Slack.
Stop pasting register screenshots into a Word template.
Give your onboarding and compliance team one review screen, and an audit trail that shows who checked what and when.