Business Verification API: Registry, UBO, Officers & AML at $2
Verify a company end to end — registry lookup, beneficial-owner identification, officer screening, and entity-level AML — in one session, on the unified /v3/ API, for $2.00 per company.

Knowing your individual customers is only half the picture. The moment you onboard a business — a merchant, a marketplace seller, a corporate account, a counterparty VASP — you have to answer a harder set of questions. Is this a real, registered company? Who actually owns it? Who can act on its behalf? And is anyone behind it on a sanctions or watchlist? Know Your Business (KYB) is the discipline that answers all four, and historically it has meant pulling registry extracts by hand, chasing shareholder documents over email, and running names through a separate screening tool.
Didit's Business Verification API collapses that into a single session. You create one KYB session, and it returns verified registry data, identifies the ultimate beneficial owners (UBOs) and officers, and screens the entity against global watchlists — all on the unified /v3/ API, for $2.00 per company verification with no minimums.
This guide walks through what a KYB session contains, how it's priced, and how to integrate it.
Key takeaways
- One session, four checks. A single KYB session bundles
kyb_registry,kyb_company_aml,kyb_documents, andkyb_key_people— registry lookup, entity AML, document verification, and beneficial-owner identification. - $2.00 per company. The full verification — registry + UBO identification + officer screening + entity AML — is one flat price, billed per company, no minimums.
- Disaggregated SKUs. Need only part of it? Company AML screening is $0.20 per check, KYB documents are $0.20 per document, and Key People extraction (UBOs + officers) is free — you only pay User Verification rates when you run linked KYC on a UBO.
- Real registry data. Company name, registration number, country, status, type, incorporation date, registered address, and tax number, pulled from official registries.
- Closed-loop, unique to Didit. A KYB session can spawn a linked KYC session for each UBO on the same
/v3/API — onboard the company and verify the humans behind it in one flow. - Manageable. A full management API and
business.status.updated/business.data.updatedwebhooks keep your records in sync.
What business verification does
A KYB check confirms that a business exists, is in good standing, and is controlled by the people you think control it. Didit's session model breaks that into four features, each with its own status so you always know exactly where a verification stands:
kyb_registry— looks the company up in the official registry and returns its core record: legal name, registration number, country, status, entity type, incorporation date, registered address, and tax number.kyb_company_aml— screens the company itself against sanctions, watchlist, and adverse-media sources at the entity level.kyb_documents— collects and reads supporting documents (certificate of incorporation, articles, proof of address, financials) with OCR and a tamper check.kyb_key_people— extracts the people who matter: UBOs with ownership percentages, shareholders, directors, officers, and representatives — including nested corporate ownership layers.
Each feature carries one of these statuses: NOT_FINISHED, APPROVED, DECLINED, IN_REVIEW, RESUB_REQUESTED, or AWAITING_USER.
Why it matters
Regulated firms are obligated to verify the businesses they serve, identify beneficial owners above the ownership threshold, and screen entities and their controllers against sanctions lists. The EU's AML directives, the US Corporate Transparency Act, and equivalent regimes worldwide all turn KYB from a nice-to-have into a legal requirement — and the penalties for onboarding a shell company or a sanctioned entity are severe.
The operational problem is just as real. Most teams assemble KYB from a registry-data vendor, a manual document-collection process, and a separate screening tool, then stitch the UBO graph together in a spreadsheet. Didit collapses that stack into one session and one console — registry, ownership, documents, and screening in the same place, priced per company so cost scales with onboarding volume instead of seat licenses.
Technical details
A KYB verification is created the same way as any other Didit session: you POST to /v3/session/ with a workflow that has KYB features enabled.
curl -X POST https://verification.didit.me/v3/session/ \
-H "x-api-key: $DIDIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"workflow_id": "your_kyb_workflow_id",
"vendor_data": "merchant_8842",
"callback": "https://yourapp.com/kyb/callback"
}'
The session resolves into a structured result with the registry record, key people, and feature statuses:
{
"session_id": "kyb_5f2a90c1",
"status": "APPROVED",
"vendor_data": "merchant_8842",
"kyb_registry": {
"status": "APPROVED",
"company_name": "Acme Logistics S.L.",
"registration_number": "B12345678",
"country": "ES",
"company_status": "ACTIVE",
"company_type": "LIMITED_LIABILITY",
"incorporation_date": "2019-03-14",
"registered_address": "Calle Mayor 1, 28013 Madrid, ES",
"tax_number": "ESB12345678"
},
"kyb_company_aml": { "status": "APPROVED" },
"kyb_documents": { "status": "APPROVED" },
"kyb_key_people": {
"status": "APPROVED",
"ubos": [
{ "name": "María García", "ownership_percentage": 55.0 },
{ "name": "Holdco Ventures B.V.", "ownership_percentage": 45.0, "is_corporate": true }
]
}
}
Session statuses. The overall session moves through NOT_STARTED, IN_PROGRESS, APPROVED, DECLINED, IN_REVIEW, RESUBMITTED, ABANDONED, and EXPIRED.
Webhooks. Subscribe to status.updated and data.updated (with session_kind of "business") to keep your ledger in sync as the verification progresses and as data is enriched.
Price. $2.00 per company verification for the full bundle. Disaggregated: Company AML $0.20 per check, KYB documents $0.20 per document, Key People extraction free, and linked KYC on a UBO billed at standard User Verification rates.
What's in the verification
Registry lookup (kyb_registry). The authoritative record — legal name, registration number, country, current status, entity type, incorporation date, registered address, and tax number — pulled from the official source rather than self-attested by the applicant.
Key People (kyb_key_people). The full control picture: UBOs with their ownership percentages, shareholders, directors, officers, and representatives. Where ownership runs through other companies, Didit resolves the nested corporate layers so you see who ultimately controls the entity.
Company AML (kyb_company_aml). Entity-level screening against sanctions, watchlist, and adverse-media sources — so a company that is itself sanctioned or adversely reported never slips through because only its officers were checked.
Documents (kyb_documents). Supporting documents are collected, read with OCR, and run through a tamper check, so a certificate of incorporation or proof of address is verified, not just filed.
Use cases
- Marketplaces onboarding business sellers verify the seller is a real, in-good-standing company and identify the people behind it before payouts begin.
- Fintech and banking platforms opening corporate accounts run registry, UBO, and entity AML in one session to satisfy KYB obligations.
- Lending providers underwriting business borrowers confirm incorporation, ownership, and standing before extending credit.
- Crypto B2B platforms onboarding counterparty VASPs and corporate clients verify the entity and screen it against sanctions in a single call.
How to integrate with Didit
- Build the workflow. In the Business Console, create a workflow with the KYB features you need — registry, company AML, documents, key people — and switch on linked KYC for UBOs if you want to verify the humans too.
- Create the session.
POST /v3/session/with your KYBworkflow_idand avendor_datareference that ties the verification to your internal business record. - Handle webhooks. Listen for
status.updatedanddata.updated(session_kind: business) to react as the verification completes and data is enriched. - Manage the entity. Use the management API —
POST /v3/businesses/create/,GET /v3/businesses/,GET /v3/businesses/{vendor_data}/, andPATCH .../update-status/— to track and update each business asACTIVE,FLAGGED, orBLOCKED.
Because it's all on the unified /v3/ API, a KYB session can spawn the KYC sessions for its UBOs, those people flow into ongoing monitoring, and a flagged transaction can spawn a remediation check — one identity-and-fraud platform, end to end.
Frequently asked questions
How much does business verification cost?
$2.00 per company for the full verification — registry lookup, UBO identification, officer screening, and entity AML. You can also buy the parts: company AML at $0.20 per check, KYB documents at $0.20 per document, and Key People extraction free, with linked UBO KYC billed at standard User Verification rates.
What registry data do I get back?
Company name, registration number, country, company status, entity type, incorporation date, registered address, and tax number — pulled from the official registry.
Can it identify ultimate beneficial owners?
Yes. The kyb_key_people feature extracts UBOs with ownership percentages, plus shareholders, directors, officers, and representatives, resolving nested corporate ownership layers along the way.
Does it screen the company against sanctions?
Yes. kyb_company_aml screens the entity itself against sanctions, watchlist, and adverse-media sources at the company level.
Can I verify the people who own the company too?
Yes. On the unified /v3/ API a KYB session can spawn a linked KYC session for each UBO — closed-loop verification of the entity and the humans behind it in one flow.
Ready to get started?
Read the Business Verification overview in the docs, see how it fits the rest of the platform on the Business Verification product page, and check transparent per-call pricing on the pricing page. When you're ready, start free — 500 free KYC checks every month, and business verification at $2.00 per company.