KYB · Business verification
Asynchronous workflow for corporate onboarding: corporate particular, connected related parties (CRPs), required documents and forms, and the final submit step.
Flow overview
Standard KYB workflow:
- Submit the corporate particular (entity info).
- CRP collector — submit directors, shareholders, UBOs.
- Required documents (main entity + each CRP).
- Non-required documents.
- Required forms (main + CRPs).
- Screen check (automatic).
- Decision.
Node routing
nodeType | API | Purpose |
|---|---|---|
flow_action_corporate_particular | workflow.kyb.particular.data | Submit corporate entity info |
flow_action_corporate_crp_collector | workflow.kyb.crp.* | Submit directors, shareholders, UBOs |
flow_action_corporate_required_document | workflow.kyb.corp.required.doc | Upload documents |
flow_action_corporate_required_forms | workflow.kyb.corp.required.form | Submit forms |
Corporate particular
Endpoint: workflow.kyb.particular.data.
{
"executionId": "exec-abc123def456",
"callbackKey": "kyb:corporate_particular:exec-abc123def456:...",
"referenceId": "onboarding-uuid-001",
"corporateData": "{\"name\":\"Acme Corp Pte Ltd\",\"industry\":\"INFORMATION TECHNOLOGY\",\"entityType\":\"PRIVATE LIMITED COMPANY\",\"countryOfIncorporation\":\"SG\",\"countryOfOperations\":\"SG\",\"email\":\"corp@acme.com\"}"
}
CRP collector
Connected Related Parties (CRPs) are directors, shareholders, UBOs. The collector node provides required roles in its metadata:
{
"totalRequiredRoles": 2,
"requiredRoles": [
{ "roleId": "DIRECTOR", "allowIndividual": true, "allowCorporate": false },
{ "roleId": "SHAREHOLDER", "allowIndividual": true, "allowCorporate": true }
]
}
Submit individual CRP
Endpoint: workflow.kyb.crp.ind.particular.
{
"executionId": "exec-abc123def456",
"callbackKey": "kyb:crp_collector:exec-abc123def456:...",
"referenceId": "onboarding-uuid-001",
"personData": "{\"name\":\"Jane Director\",\"nationality\":\"SG\",\"date_of_birth\":\"1985-03-20\",\"sex\":\"FEMALE\",\"roles\":[{\"roleId\":\"DIRECTOR\",\"roleName\":\"Director\"}]}"
}
Individual CRP liveness
Endpoint: workflow.kyb.crp.ind.liveness. Required for directors and UBOs.
{
"provider": "SELF",
"status": "PASS",
"scores": "{...}",
"images": "{...}",
"executionId": "exec-abc123def456",
"callbackKey": "kyb:crp_collector:exec-abc123def456:...",
"referenceId": "onboarding-uuid-001",
"crpPid": "acc45a86-f2e9-48c2-8fcd-2bf6563357a1"
}
Submit corporate CRP
Endpoint: workflow.kyb.crp.corp.particular.
{
"executionId": "exec-abc123def456",
"callbackKey": "kyb:crp_collector:exec-abc123def456:...",
"referenceId": "onboarding-uuid-001",
"corporateData": "{...}"
}
Finalize CRP submission
Endpoint: workflow.kyb.crp.submit.
You must call
crp.submit to advance the workflow. Submitting individual CRPs alone does not trigger the transition.KYB required documents
Endpoint: workflow.kyb.corp.required.doc. crpPid is empty for the main entity and set to the CRP's identifier for per-person documents.
{
"doc": "{\"front\":{\"url\":\"s3://workflow-kyc/.../cert.png\",\"filename\":\"cert.png\",\"content_type\":\"image/png\",\"size\":85618}}",
"isRequired": true,
"docType": "CERTIFICATE_OF_INCORPORATION",
"extraData": "{\"issueDate\":\"2001-05-10\",\"expiryDate\":\"2030-10-10\"}",
"crpPid": "",
"executionId": "exec-abc123def456",
"callbackKey": "kyb:corporate_document:exec-abc123def456:...",
"referenceId": "onboarding-uuid-001"
}
KYB required forms
Forms are routed by metadata key:
| Key | Filled by |
|---|---|
mainForm | Main corporate entity |
crpIndividualForm | Each individual CRP |
crpCorporateForm | Each corporate CRP |
crpBothForm | Each shareholder CRP |