Skip to main content

KYB Verification (Know Your Business)

KYB verification enables you to verify business identities as part of your compliance onboarding flow. A KYB application collects business information, beneficial owners (UBOs), directors, and supporting documents, then runs registry checks and screening before a compliance officer makes a final decision.

KYB Application Lifecycle

  ┌───────┐     ┌───────────┐     ┌───────────┐     ┌──────────┐
│ DRAFT │────▶│ SUBMITTED │────▶│ IN_REVIEW │────▶│ APPROVED │
└───────┘ └───────────┘ └─────┬─────┘ └──────────┘


┌──────────┐
│ REJECTED │
└──────────┘

Statuses:

StatusDescription
draftApplication created, still being populated
submittedSubmitted for review (registry verified, UBOs collected)
in_reviewUnder compliance officer review or screening
approvedVerification passed
rejectedVerification failed
expiredApplication expired before completion
requires_infoAdditional information requested

Create a KYB Application

Start a new KYB verification by providing core business details.

curl -X POST https://api.korastratum.com/api/v1/kyb/verifications \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "X-Tenant-ID: YOUR_TENANT_ID" \
-H "Content-Type: application/json" \
-d '{
"legal_name": "Acme Holdings Ltd",
"trading_name": "Acme",
"registration_number": "RC-123456",
"country": "NG",
"business_type": "limited_liability",
"industry_sector": "Financial Services",
"tax_id": "TIN-9876543",
"incorporation_date": "2018-03-15T00:00:00Z"
}'

Request body fields:

FieldTypeRequiredDescription
legal_namestringYesRegistered legal name of the business
trading_namestringNoTrade name / DBA
registration_numberstringYesCompany registration number
countrystringYesISO 3166-1 alpha-2 country code
business_typestringYesOne of: sole_proprietorship, partnership, limited_liability, corporation, cooperative, ngo, trust, other
industry_sectorstringYesIndustry or sector classification
tax_idstringNoTax identification number
incorporation_datestringYesIncorporation date in RFC 3339 format

Response:

{
"id": "kyb_abc123",
"status": "draft",
"business_entity": {
"legal_name": "Acme Holdings Ltd",
"trading_name": "Acme",
"registration_number": "RC-123456",
"country": "NG",
"business_type": "limited_liability",
"industry_sector": "Financial Services",
"tax_id": "TIN-9876543",
"incorporation_date": "2018-03-15T00:00:00Z"
},
"ubos": [],
"directors": [],
"documents": [],
"created_at": "2025-06-01T12:00:00Z",
"updated_at": "2025-06-01T12:00:00Z"
}

Update Business Information

Update or add additional details such as addresses after creating the application.

curl -X PATCH https://api.korastratum.com/api/v1/kyb/verifications/kyb_abc123 \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "X-Tenant-ID: YOUR_TENANT_ID" \
-H "Content-Type: application/json" \
-d '{
"trading_name": "Acme International",
"registered_address": {
"street1": "42 Marina Road",
"city": "Lagos",
"state": "Lagos",
"postal_code": "101001",
"country": "NG"
},
"operating_address": {
"street1": "10 Broad Street",
"city": "Lagos",
"state": "Lagos",
"postal_code": "101002",
"country": "NG"
}
}'

Address fields:

FieldTypeRequiredDescription
street1stringYesPrimary street address
street2stringNoSecondary address line
citystringYesCity
statestringYesState or province
postal_codestringYesPostal / ZIP code
countrystringYesISO 3166-1 alpha-2 country code

Registry Verification

Verify the business against the official corporate registry in its country of incorporation. This checks that the registration number, legal name, and incorporation details match public records.

curl -X POST https://api.korastratum.com/api/v1/kyb/verifications/kyb_abc123/verify-registry \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "X-Tenant-ID: YOUR_TENANT_ID"

Response includes:

{
"registry_verification": {
"verified": true,
"company_name": "Acme Holdings Ltd",
"status": "active",
"incorporation_date": "2018-03-15",
"registered_address": "42 Marina Road, Lagos, Nigeria"
}
}
tip

Run registry verification early in the process. If the business cannot be found in the registry, it may indicate incorrect details or a fraudulent application.


Manage UBOs (Ultimate Beneficial Owners)

UBOs are individuals who ultimately own or control the business. Regulations typically require identifying anyone with 25% or more ownership, or who exercises significant control.

Add a UBO

curl -X POST https://api.korastratum.com/api/v1/kyb/verifications/kyb_abc123/ubos \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "X-Tenant-ID: YOUR_TENANT_ID" \
-H "Content-Type: application/json" \
-d '{
"first_name": "John",
"last_name": "Doe",
"email": "john.doe@acme.com",
"phone": "+2341234567890",
"dob": "1985-06-15T00:00:00Z",
"nationality": "NG",
"ownership_percentage": 40,
"role": "owner"
}'

UBO fields:

FieldTypeRequiredDescription
first_namestringYesFirst name
last_namestringYesLast name
emailstringYesEmail address (used for identity verification links)
phonestringNoPhone number
dobstringYesDate of birth in RFC 3339 format
nationalitystringYesISO 3166-1 alpha-2 country code
ownership_percentagenumberYesPercentage of ownership (0-100)
rolestringYesOne of: owner, controlling_person

Edit a UBO

curl -X PATCH https://api.korastratum.com/api/v1/kyb/verifications/kyb_abc123/ubos/ubo_456 \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "X-Tenant-ID: YOUR_TENANT_ID" \
-H "Content-Type: application/json" \
-d '{
"ownership_percentage": 35
}'

Delete a UBO

curl -X DELETE https://api.korastratum.com/api/v1/kyb/verifications/kyb_abc123/ubos/ubo_456 \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "X-Tenant-ID: YOUR_TENANT_ID"

UBO Identity Verification

Each UBO must complete individual identity verification (KYC). Generate a verification link for a UBO and send it to them:

# Get a verification URL for the UBO
curl https://api.korastratum.com/api/v1/kyb/verifications/kyb_abc123/ubos/ubo_456/verification-url \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "X-Tenant-ID: YOUR_TENANT_ID"

Response:

{
"verification_url": "https://verify.korastratum.com/v/abc123def456"
}
info

The verification URL is single-use and expires after 7 days. Generate a new one if it expires before the UBO completes verification.


Manage Directors

Directors are officers of the company who may or may not also be UBOs.

Add a Director

curl -X POST https://api.korastratum.com/api/v1/kyb/verifications/kyb_abc123/directors \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "X-Tenant-ID: YOUR_TENANT_ID" \
-H "Content-Type: application/json" \
-d '{
"first_name": "Jane",
"last_name": "Smith",
"dob": "1980-01-20T00:00:00Z",
"nationality": "NG",
"role": "director",
"is_also_ubo": false
}'

Director fields:

FieldTypeRequiredDescription
first_namestringYesFirst name
last_namestringYesLast name
dobstringYesDate of birth in RFC 3339 format
nationalitystringYesISO 3166-1 alpha-2 country code
rolestringYesOne of: director, ceo, cfo, secretary
is_also_ubobooleanYesWhether this director is also a UBO

Delete a Director

curl -X DELETE https://api.korastratum.com/api/v1/kyb/verifications/kyb_abc123/directors/dir_789 \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "X-Tenant-ID: YOUR_TENANT_ID"

Upload Documents

Upload supporting documents for the KYB application. Documents are sent as multipart form data.

curl -X POST https://api.korastratum.com/api/v1/kyb/verifications/kyb_abc123/documents \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "X-Tenant-ID: YOUR_TENANT_ID" \
-F "type=certificate_of_incorporation" \
-F "document_type=certificate_of_incorporation" \
-F "file=@/path/to/certificate.pdf" \
-F "file_name=certificate.pdf"

Supported document types:

TypeDescription
certificate_of_incorporationCertificate of incorporation
memorandum_of_associationMemorandum of association
articles_of_associationArticles of association
board_resolutionBoard resolution
shareholder_registerShareholder register
proof_of_addressProof of business address
tax_clearanceTax clearance certificate
business_licenseBusiness license
financial_statementFinancial statement
regulatory_licenseRegulatory license
otherOther supporting document

Delete a Document

curl -X DELETE https://api.korastratum.com/api/v1/kyb/verifications/kyb_abc123/documents/doc_101 \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "X-Tenant-ID: YOUR_TENANT_ID"

Submit for Review

Once all business information, UBOs, directors, and documents have been added, submit the application for compliance review.

curl -X POST https://api.korastratum.com/api/v1/kyb/verifications/kyb_abc123/submit \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "X-Tenant-ID: YOUR_TENANT_ID" \
-H "Content-Type: application/json" \
-d '{
"attestations": {
"information_accurate": true,
"authorized_representative": true
}
}'
caution

Submission is irreversible. Ensure all information is complete and accurate before submitting. The application status will change from draft to submitted.


Review a KYB Application (Admin)

Compliance officers can approve or reject a submitted KYB application.

curl -X POST https://api.korastratum.com/api/v1/kyb/verifications/kyb_abc123/review \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "X-Tenant-ID: YOUR_TENANT_ID" \
-H "Content-Type: application/json" \
-d '{
"decision": "approved",
"notes": "All documents verified. Registry match confirmed. UBO KYC complete."
}'

Review decision fields:

FieldTypeRequiredDescription
decisionstringYesOne of: approved, rejected, requires_info
notesstringNoReviewer notes explaining the decision

List KYB Verifications

Retrieve a paginated list of KYB applications, optionally filtered by status.

# List all applications
curl "https://api.korastratum.com/api/v1/kyb/verifications?limit=20" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "X-Tenant-ID: YOUR_TENANT_ID"

# Filter by status
curl "https://api.korastratum.com/api/v1/kyb/verifications?status=in_review&limit=10" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "X-Tenant-ID: YOUR_TENANT_ID"

Query parameters:

ParameterTypeDescription
statusstringFilter by status: draft, submitted, in_review, approved, rejected
pageintegerPage number (1-based)
limitintegerItems per page (default 20, max 100)

Get a KYB Verification

Retrieve full details of a single KYB application, including all UBOs, directors, documents, and screening results.

curl https://api.korastratum.com/api/v1/kyb/verifications/kyb_abc123 \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "X-Tenant-ID: YOUR_TENANT_ID"

Webhook Events

KYB lifecycle events are delivered via webhook:

EventTrigger
kyb.createdNew KYB application created
kyb.submittedApplication submitted for review
kyb.approvedApplication approved
kyb.rejectedApplication rejected
kyb.requires_infoAdditional information requested
kyb.ubo.verification_completedUBO identity verification completed
kyb.registry.verifiedRegistry verification completed
note

Configure webhooks in the Webhooks guide to receive real-time notifications for KYB events.