Skip to main content

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:

  1. Submit the corporate particular (entity info).
  2. CRP collector — submit directors, shareholders, UBOs.
  3. Required documents (main entity + each CRP).
  4. Non-required documents.
  5. Required forms (main + CRPs).
  6. Screen check (automatic).
  7. Decision.

Node routing

nodeTypeAPIPurpose
flow_action_corporate_particularworkflow.kyb.particular.dataSubmit corporate entity info
flow_action_corporate_crp_collectorworkflow.kyb.crp.*Submit directors, shareholders, UBOs
flow_action_corporate_required_documentworkflow.kyb.corp.required.docUpload documents
flow_action_corporate_required_formsworkflow.kyb.corp.required.formSubmit 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:

KeyFilled by
mainFormMain corporate entity
crpIndividualFormEach individual CRP
crpCorporateFormEach corporate CRP
crpBothFormEach shareholder CRP