UK KYB API
Automated Know Your Business verification for UK companies via the Reprompt KYB Agent API.
Know Your Business (KYB) is the process of verifying that a company is legitimate and safe to transact with. It is a standard requirement for onboarding in financial services, lending, partnerships, and regulated industries.
The Reprompt UK KYB API automates this end-to-end for companies registered in the United Kingdom.
How It Works
Inputs: A company name and address. Optionally, the name of the person requesting the report and a tax identification number.
Processing: The agent autonomously researches the business across UK government registries, global sanctions and PEP databases, address verification services, and the open web. Reports typically complete in under 3 minutes.
Output: A structured report covering:
- Identity verification — Company registration status, entity type, incorporation date, jurisdiction, and SIC codes
- Address verification — Registered address validation with precision level and red flags
- Officers and directors — Current and former directors, secretaries, and other officers
- Beneficial owners — Persons with Significant Control (PSCs) holding 25%+ ownership or voting rights
- Filing health — Whether statutory accounts and confirmation statements are current or overdue
- Charges — Outstanding loans, mortgages, and debentures registered against the company
- Sanctions and PEP screening — Each entity screened against global sanctions and PEP databases
- Web intelligence — Adverse media and relevant web coverage
Every report includes a risk score (0-100) with a clear recommendation (pass, review, enhanced due diligence, or fail), and an executive summary of 3 to 5 key findings.
API Reference
Base URL: https://api.reprompt.io
Authentication: Bearer token via Authorization header.
Start a Report
POST /kyb/report/start
| Parameter | Type | Required | Description |
|---|---|---|---|
business_name | string | Yes | Legal or trading name of the business |
business_address | string | Yes | Full address of the business |
person_submitting | string | No | Name of the person requesting the report |
tax_identification_number | string | No | Company tax ID |
curl -X POST "https://api.reprompt.io/kyb/report/start" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"business_name": "Revolut Ltd",
"business_address": "7 Westferry Circus, Canary Wharf, London, E14 4HD"
}'{
"status": "processing",
"report_id": "rpt_7f3a2b1c9d4e",
"poll_url": "/kyb/report/rpt_7f3a2b1c9d4e",
"stream_id": "rpt_7f3a2b1c9d4e",
"channel": "rpt_7f3a2b1c9d4e",
"event_name": "kyb:stream:event"
}Risk Assessment
Every report includes a server-computed risk score from 0 to 100.
Risk Tiers
| Classification | Score Range | Recommendation |
|---|---|---|
LOW_RISK | 0-20 | PASS — low risk, proceed |
MEDIUM_RISK | 21-45 | REVIEW — manual review recommended |
HIGH_RISK | 46-70 | EDD — Enhanced Due Diligence required |
VERY_HIGH_RISK | 71-100 | FAIL — do not proceed |
Risk Signals
| Signal | Points | Trigger Condition |
|---|---|---|
Company dissolved/liquidation | 40 | Company status is dissolved, liquidation, or administration |
Sanctions hit | 50 | Any entity matched on a sanctions list |
PEP hit | 20 | Any person matched as a Politically Exposed Person |
No active directors | 20 | Company has zero current directors |
Overdue accounts | 15 | Annual accounts are past due |
Address not verified | 15 | Address could not be independently verified |
No PSCs declared | 15 | No Persons with Significant Control on record |
Overdue confirmation statement | 10 | Confirmation statement is past due |
Low address precision | 10 | Address matched to street or city level only |
No web presence | 10 | Web searches found no meaningful results |
Company age < 1 year | 10 | Incorporated less than 12 months ago |
Active charges | 5 each (max 15) | Outstanding charges registered against company |
Single director | 5 | Company has exactly one director |
Example
{
"score": 55,
"classification": "HIGH_RISK",
"recommendation": "EDD",
"signal_breakdown": [
{ "signal": "Address not verified", "points": 15, "triggered": true },
{ "signal": "Sanctions hit", "points": 50, "triggered": true },
{ "signal": "Overdue accounts", "points": 15, "triggered": false }
]
}Executive Summary
The executive summary is the fastest way to understand a report. It contains 3 to 5 key findings, each with a severity indicator and plain-language explanation.
[
{
"icon": "critical",
"tone": "red",
"title": "Sanctions Match",
"description": "Director Nikolay Storonsky matched on Ukraine NSDC sanctions list"
},
{
"icon": "check",
"tone": "green",
"title": "Active & Compliant",
"description": "Company is active with filings up to date"
},
{
"icon": "warning",
"tone": "yellow",
"title": "Address Not Verified",
"description": "Registered address could not be independently verified"
}
]Report Sections
Identity Verification
| Field | Type | Description |
|---|---|---|
business_name | string | Registered company name |
company_number | string | 8-character UK company number |
company_status | string | Current status (e.g. active, dissolved) |
company_type | string | Entity type (e.g. ltd, plc, llp) |
incorporation_date | string | Date of incorporation (YYYY-MM-DD) |
jurisdiction | string | Registration jurisdiction |
sic_codes | string[] | SIC industry codes |
Officers
| Field | Type | Description |
|---|---|---|
name | string | Full name |
role | string | Officer role (e.g. director, secretary) |
appointed_on | string | Appointment date |
resigned_on | string | null | Resignation date or null |
is_current | boolean | true if still active |
Beneficial Owners (PSCs)
| Field | Type | Description |
|---|---|---|
name | string | Full name or entity name |
nature_of_control | string[] | How they control the company |
notified_on | string | Date of notification |
is_person | boolean | true for individuals |
Sanctions Screening
| Field | Type | Description |
|---|---|---|
entity_name | string | Name of the entity screened |
entity_type | string | Person, Company, or LegalEntity |
hit | boolean | true if significant match found |
sanctions_hit | boolean | true if matched against sanctions list |
pep_hit | boolean | true if matched as PEP |
risk_level | string | low, medium, high, or critical |