KYB (Know Your Business)

The KYB flow verifies the legitimacy of business entities, including company details, registration documents, and associated representatives.

The KYB flow is designed to collect and verify company information, including details about the organization itself, its beneficiaries, and its representatives. It ensures that all relevant entities are identified and verified before completing the onboarding process.

The KYB flow consists of three main steps:

Each step is fully configurable and can include its own parameters.

Flags

flags is an object that contains optional configuration parameters for adjusting the KYB verification flow. Below is a summary of the most commonly used flags:

Flag name
Description
Default
Type

skip_face

Skips the liveness step if it already exists in the defined steps. Prevents duplication when using custom flows.

false

<boolean>

skip_document

Skips the identity-document step if it already exists in the defined steps. Prevents duplication when using custom flows.

false

<boolean>

return_url

URL to redirect the user to after the identification process is completed. If omitted, the session is assumed to be embedded in an iframe.

null

<string>

language

User interface language code. Supported values:

"en"

<string>

skip_desktop

Limits sessions to mobile devices only. If initiated on desktop, a QR code is shown to transfer the session to a mobile device.

false

<boolean>

switch_device_url

A custom URL to display in the QR code when the camera is unavailable or blocked. If omitted or empty, the QR code will not be displayed.

null

<string>

restrict_url_sharing

Prevents the session URL from being used on a different browser or device. If true, the QR code will not appear when camera access is denied—unless switch_device_url is also defined.

false

<boolean>

Steps

The steps array defines the sequence and structure of the KYB process. It is passed together with the company_key and flags parameters when creating a session.

Each step in the array can contain its own properties properties:

Property
Description

type

The type of the specific step (see list of supported step types below).

key

A unique identifier for the step. This key can be customized but must remain unique within the session.

flags

Step-specific configuration flags that control the behavior of this step.

title

A custom title provided by the client, displayed to the user during this step in the interface.

Supported step types

Below is a list of all step types currently supported in the system:


Language

The Language step allows the user to select their preferred interface language at the beginning of the identification process.

Language step configurations:

  • Title: Language

  • Type: language

  • Key: language

  • Array of languages

Flag
Description
Default
Type

languages

An array of language codes to display. If left empty, all supported languages will be shown.

All

Array<string>

Expand to view example

Company data

This step collects the core information about the company.

  • Title: Company data

  • Description: Follow the simple steps below

  • Type: company

  • Key: company

  • Fields:

    • Company name (always mandatory)

    • Registration number (always mandatory)

    • Registration country (always mandatory)

    • Type of entity

    • Legal adress

    • VAT / TaxID

    • Date of Incorporation

    • Contact number

    • Contact email address

Step example:

Step parameters:

Parameter
Description
Type

type

Step type. Must be company.

<string>

key

Unique identifier for the step.

<string>

title

Localized title text displayed as the block title to the user. The title can be an <object> containing different languages, allowing the title to be displayed in the selected language during the flow.

<object>

description

A description that appears below the title on the user's side. Similar to the title, the description can be an <object> containing different languages, so that it can be displayed in the selected language during the flow.

<object>

fields

List of fields to be collected during this step.

<array>

Fields:

Example:

Field
Description
Input type

companyEntityType

Mandatory field.

Type of legal entity. Options include:

  • Limited liability company

  • Publicly listed company

  • Sole proprietor

  • Partnership

  • Corporation

  • Trust

  • Private foundation

  • Charity

  • Nonprofit organization

  • Other

Dropdown

companyName

Mandatory field.

Official registered company name.

Text input

registrationNumber

Mandatory field.

Company registration number.

Text input

registrationCountry

Mandatory field. Country of incorporation. Options: all countries list.

Dropdown

legalAddress

Company’s registered legal address.

Text input

taxId

Tax identification number.

Text input

dateOfIncorporation

Company incorporation date.

Date picker

contactNumber

Company contact phone number.

Text input

email

Company contact email address.

Text input


Beneficiaries

The Beneficiaries step collects information about all individuals or companies with roles in the organization.

Each role can trigger either a KYC or KYB verification flow.

Supported roles:

  • Shareholder – can be either an individual or another company

  • UBOs (Ultimate Beneficial Owner) – always an individual with ownership/control

  • Director – individual member of the board

  • Representative – authorized individual acting on behalf of the company

  • Other – custom role (requires position name)

Step example:

Step parameters:

Parameter
Description
Type

type

Step type. Must be beneficiaries.

<string>

key

Unique identifier for the step.

<string>

title

Localized title text displayed as the block title to the user. The title can be an <object> containing different languages, allowing the title to be displayed in the selected language during the flow.

<object>

description

A description that appears below the title on the user's side. Similar to the title, the description can be an <object> containing different languages, so that it can be displayed in the selected language during the flow.

<object>

kycConfigId

ID of the KYC configuration applied to individuals.

<string>

kybConfigId

ID of the KYB configuration applied to companies.

<string>

roles

Defines roles (shareholder, ubo, director, representative, other).

<object>

Role: Shareholder

  • Can be either an individual or a company.

  • verification: true → triggers a verification flow

    • Individual → KYC (kycConfigId)

    • Company → KYB (kybConfigId)

Important: Pre-created KYC and KYB configurations are required for shareholder verification flows. These configurations define which verification steps (e.g., document upload, selfie, questionnaire) will be applied during the process. To learn how to create and manage KYC configurations, refer to the KYC developer's guide or KYC configuration guide.

Role example:

Shareholder fileds:

Field
Description
Input type
Applies to

ownershipPercentage

Percentage of ownership in the company.

Text input

Company / Individual

companyName

Mandatory field.

Official registered company name.

Text input

Company

registrationNumber

Mandatory field.

Shareholder company registration number.

Text input

Company

registrationCountry

Mandatory field. Country of incorporation. Options: all countries list.

Dropdown

Company

companyEntityType

Mandatory field.

Type of legal entity. Options include:

  • Limited liability company

  • Publicly listed company

  • Sole proprietor

  • Partnership

  • Corporation

  • Trust

  • Private foundation

  • Charity

  • Nonprofit organization

  • Other

Dropdown

Company

legalAddress

Registered legal address of shareholder company.

Text input

Company

taxId

Tax identification number.

Text input

Company

dateOfIncorporation

Company incorporation date.

Date picker

Company

website

Company website.

Input

Company

contactNumber

Contact phone number.

Text input

Company / Individual

email

Contact email address.

Text input

Company / Individual

firstName

Mandatory field. Individual's first name.

Text input

Individual

lastName

Mandatory field. Individual's last name.

Text input

Individual

dateOfBirth

Mandatory field. Individual's date of birth.

Date picker

Individual

Role: UBOs

  • Always an individual.

  • verification: true → triggers KYC flow (kycConfigId)

Important: Pre-created KYC configuration is required for UBOs verification flows. These configurations define which verification steps (e.g., document upload, selfie, questionnaire) will be applied during the process. To learn how to create and manage KYC configurations, refer to the KYC developer's guide or KYC configuration guide.

Role example:

UBOs fields:

Field
Description
Input type

firstName

Mandatory field. Individual's first name.

Text input

lastName

Mandatory field. Individual's last name.

Text input

dateOfBirth

Mandatory field. Individual's date of birth.

Date picker

ownershipPercentage

Percentage of ownership in the company.

Text input

contactNumber

Company contact phone number.

Text input

email

Company contact email address.

Text input

Role: Director

  • Always an individual.

  • verification: true → triggers KYC flow (kycConfigId)

Important: Pre-created KYC configuration is required for Director verification flows. These configurations define which verification steps (e.g., document upload, selfie, questionnaire) will be applied during the process. To learn how to create and manage KYC configurations, refer to the KYC developer's guide or KYC configuration guide.

Role example:

Director fields:

Field
Description
Input type

firstName

Mandatory field. Individual's first name.

Text input

lastName

Mandatory field. Individual's last name.

Text input

dateOfBirth

Mandatory field. Individual's date of birth.

Date picker

contactNumber

Company contact phone number.

Text input

email

Company contact email address.

Text input

Role: Representative

  • Always an individual.

  • verification: true → triggers KYC flow (kycConfigId)

Important: Pre-created KYC configuration is required for Representative verification flows. These configurations define which verification steps (e.g., document upload, selfie, questionnaire) will be applied during the process. To learn how to create and manage KYC configurations, refer to the KYC developer's guide or KYC configuration guide.

Role example:

Representative fields:

Field
Description
Input type

firstName

Mandatory field. Individual's first name.

Text input

lastName

Mandatory field. Individual's last name.

Text input

dateOfBirth

Mandatory field. Individual's date of birth.

Date picker

contactNumber

Company contact phone number.

Text input

email

Company contact email address.

Text input

Role: Other

  • Always an individual.

  • verification: true → triggers KYC flow (kycConfigId)

Important: Pre-created KYC configuration is required for Other role verification flows. These configurations define which verification steps (e.g., document upload, selfie, questionnaire) will be applied during the process. To learn how to create and manage KYC configurations, refer to the KYC developer's guide or KYC configuration guide.

Role example:

Fields:

Field
Description
Input type

positionName

Mandatory field. Position title (e.g., advisor)

Text input

firstName

Mandatory field. Individual's first name.

Text input

lastName

Mandatory field. Individual's last name.

Text input

dateOfBirth

Mandatory field. Individual's date of birth.

Date picker

contactNumber

Company contact phone number.

Text input

email

Company contact email address.

Text input


Review

The Review step presents a summary of all collected company and beneficiary data before submission. Applicants can review and edit information if needed.

Example:

This step allows the applicant to edit the data before submission.

KYB cURL example:

Expand to view example

User questionnaire

The user questionnaire step allows you to collect custom user input as part of the verification flow. It supports various question types and provides multilingual support for titles and descriptions. All responses are saved to the verification session. This step has a slightly different structure compared to other steps.

User questionnaire step configurations:

  • type Must be set to "user-questionnaire" to define this step as a user questionnaire block.

  • key A client-defined unique key for this questionnaire step. It must remain unique within a single session to avoid conflicts.

  • title The main title of the questionnaire displayed on the user interface. Must always be provided as an <object> with language codes as keys (e.g., "en"), even if only one language is used. This ensures consistency and supports future localization.

  • description Text displayed beneath the title in the user interface, providing context or instructions. Must always be an <object> of language codes. Same format and rules as title.

  • questions An <array> of question objects to be presented to the user. Supported question types include:

    • string: Text Input – The user enters a short text answer.

    • multiple-choice: : Checkboxes – Allows the user to select one or more options.

    • options: Radio – The user selects a single option from a list.

    • dropdown : Dropdown List – The user selects one or more options from a dropdown menu.

    • file: File Upload – Allows the user to upload a file as a response.

    • attachment: Attachment - Allows attaching files either dynamically (via API/configuration) or per session. Depending on configuration, files may be pre-attached for the user or uploaded by the operator during the session.

  • successButtonTitle Defines the label of the confirmation button displayed at the end of the questionnaire. Must also be an <object> of language codes, even if only one language is used. If any question is marked as "mandatory": true, the button will remain disabled until all required questions are answered.

Questions

Each question in the questions array supports a set of parameters that define how it behaves and appears to the user. Here's a breakdown of all supported properties:

  • type Defines the question type. Supported values:

    • string – Short text input

    • multiple-choice – Checkbox (multiple selection)

    • options– Radio buttons (single selection)

    • dropdown– Dropdown menu (single or multi-select)

    • file– File upload

    • attachment - Attach files and share with the end-user

  • title A multilingual <object> representing the question label. Example:

  • key A unique identifier for the question within the same questionnaire. This is client-defined and used for referencing and data mapping.

  • mandatory Indicates whether the question must be answered before the user can proceed.

    • Value: true or false

  • answer Allows you to preset an answer for the user.

    • string: A plain text string (e.g., "John Doe").

    • options: A single option key (e.g., "opt_a").

    • multiple-choice: An array of option keys (e.g., ["opt_a", "opt_c"]).

    • dropdown: Not applicable.

    • file: Not applicable.

    • attachment: An array of file IDs

    Note: End-users can modify pre-filled answers unless readOnly is enabled.

  • readOnly Displays the question in a non-editable state. Users can view the question and answer but cannot change it.

    • Value: true or false

  • showConditions Defines a conditional display rule for the question, based on the answer to a previous question.

    • questionKey Key of the controlling question.

    • answer Key of the answer (for radio/checkbox) or specific text (for string)

  • multiple Specific to dropdown type.

    • If true, the user can select multiple values from the dropdown.

    • Value: true or false

Options

Options are used exclusively in multiple-choice , options and dropdown type questions. They define the selectable choices that the user can pick from.

Each question that supports options must include the following parameter:

  • options An <array> of option objects for the question. Each object must include the following:

  • title The text label for the option, shown to the user during the verification flow. Must always be provided as an <object> with language codes as keys, even if only one language is used. This ensures consistency across multilingual flows. Example:

  • key A unique identifier for the option within the questionnaire. This value is used for referencing in preset answers, conditions, and session data. It must be unique within the same questionnaire to avoid conflicts.

List of parameters with examples:

Parameter
Description
Default
Type
Example

key

Keys are chosen by the client and must remain unique within a single session.

Recommended to use key describing the questionnaire shortly.

-

<string>

title

The title of the user questionnaire, displayed as the block title on the user's side. The title can be an <object> containing different languages, allowing the title to be displayed in the selected language during the verification flow.

-

<object>

description

A description that appears below the title on the user's side. Similar to the title, the description can be an <object> containing different languages, so that it can be displayed in the selected language during the verification flow.

-

<object>

questions

An <array> of questions with the following types: string, multiple-choice , options, dropdown.

-

<array>

mandatory

Specifies whether the question is required to be answered.

Possible values:

true, false

false

<boolean>

answer

Allows to preset an answer for a question.

-

<string> or <array>

readOnly

Displays the question but restricts interaction.

false

<boolean>

showConditions

This parameter may be used to set conditions for whether a question should be displayed.

-

<object>

successButtonTitle

The title of the action button in the questionnaire. If the questions are mandatory, the button is deactivated until the user completes the questionnaire.

Confirm

<object>

cURL example:

Expand to view user-questionnaire example

Question type: Text input

Available parameters:

Parameter
Description
Default
Type
Example

type

string

-

<string>

key

Keys are chosen by the client and must remain unique within a single session.

Recommended to use key describing the question shortly.

-

<string>

title

The title is an <object> of languages so that if the user changes the language during the verification flow, the question can be displayed in different languages. There are no length or symbol restrictions.

-

<object>

mandatory

Specifies whether the question is required to be answered.

Possible values:

true, false

false

<boolean>

answer

Allows to preset an answer for a question. The answer is an <object> of languages so that if the user changes the language during the verification flow, the prefilled answer can be displayed in different languages.

-

<object>

readOnly

Displays the question but restricts interaction.

false

<boolean>

showConditions

This parameter may be used to set conditions for whether a question should be displayed.

-

<object>

Expand to view TEXT INPUT question example

Question type: Checkbox

Available parameters:

Parameter
Description
Default
Type
Example

type

multiple-choice

-

<string>

key

Keys are chosen by the client and must remain unique within a single session.

Recommended to use key describing the question shortly.

-

<string>

title

The title is an <object> of languages so that if the user changes the language during the verification flow, the question can be displayed in different languages. There are no length or symbol restrictions.

-

<object>

options

An <array> of options for the question. Each option may have:

  • "title" : The title of an option. The title is an <object> containing different languages, allowing the option to be displayed in the selected language during the verification flow.

  • "key": The key for the option, chosen by the client. It must remain unique within a single questionnaire.

-

<array>

mandatory

Specifies whether the question is required to be answered.

Possible values:

true, false

false

<boolean>

answer

Allows to preset an answer for a question. The answer is an <array> of option keys assigned to this question.

-

<array>

readOnly

Displays the question but restricts interaction.

false

<boolean>

showConditions

This parameter may be used to set conditions for whether a question should be displayed.

-

<object>

Expand to view CHECKBOX question example

Question type: Radio

Available parameters:

Parameter
Description
Default
Type
Example

type

options

-

<string>

key

Keys are chosen by the client and must remain unique within a single session.

Recommended to use key describing the question shortly.

-

<string>

title

The title is an <object> of languages so that if the user changes the language during the verification flow, the question can be displayed in different languages. There are no length or symbol restrictions.

-

<object>

options

An <array> of options for the question. Each option may have:

  • "title" : The title of an option. The title is an <object> containing different languages, allowing the option to be displayed in the selected language during the verification flow.

  • "key": The key for the option, chosen by the client. It must remain unique within a single questionnaire.

-

<array>

mandatory

Specifies whether the question is required to be answered.

Possible values:

true, false

false

<boolean>

answer

Allows to preset an answer for a question. The answer is an <string> of an option key assigned to this question.

-

<string>

readOnly

Displays the question but restricts interaction.

false

<boolean>

showConditions

This parameter may be used to set conditions for whether a question should be displayed.

-

<object>

Expand to view RADIO question example

Question type: Dropdown

Available parameters:

Parameter
Description
Default
Type
Example

type

dropdown

-

<string>

key

Keys are chosen by the client and must remain unique within a single session.

Recommended to use key describing the question shortly.

-

<string>

title

The title is an <object> of languages so that if the user changes the language during the verification flow, the question can be displayed in different languages. There are no length or symbol restrictions.

-

<object>

options

An <array> of options for the question. Each option may have:

  • "title" : The title of an option. The title is an <object> containing different languages, allowing the option to be displayed in the selected language during the verification flow.

  • "key": The key for the option, chosen by the client. It must remain unique within a single questionnaire.

-

<array>

mandatory

Specifies whether the question is required to be answered.

Possible values:

true, false

false

<boolean>

multiple

Specifies whether the question is single or multiple choice.

Possible values:

true, false

false

<boolean>

showConditions

This parameter may be used to set conditions for whether a question should be displayed.

-

<object>

Expand to view DROPDOWN question example

Question type: File upload

Available parameters:

Parameter
Description
Default
Type
Example

type

file

-

<string>

key

Keys are chosen by the client and must remain unique within a single session.

Recommended to use key describing the question shortly.

-

<string>

title

The title is an <object> of languages so that if the user changes the language during the verification flow, the question can be displayed in different languages. There are no length or symbol restrictions.

-

<object>

description

A description that appears below the title. Similar to the title, the description can be an <object> containing different languages, so that it can be displayed in the selected language during the verification flow.

-

<object>

mandatory

Specifies whether the question is required to be answered.

Possible values:

true, false

false

<boolean>

fileTypes

Specifies the types of files the user is allowed to upload. Possible values: pdf, image.

[ "pdf", "image" ]

<array>

filesMaxCount

Specifies the maximum number of files the user is allowed to upload. Possible values: A number from 1 to 10.

10

<number>

showConditions

This parameter may be used to set conditions for whether a question should be displayed.

-

<object>

Expand to view FILE UPLOAD question example

Question type: Attachment

The Attachment question type allows attaching files to a questionnaire. It supports two main use cases:

  1. Operator-added attachments per session The operator uploads files during or before the verification session and shares them with the end-user.

  2. Predefined attachments from Configuration or API Files are uploaded in the Configuration interface or dynamically provided via API. These files are automatically included in future sessions.

Behavior

  • Attachments are visible to both the operator and the end-user.

  • When files are provided via API (answer) or Configuration, they will appear when the questionnaire is opened.

  • Depending on settings, the operator may be allowed or restricted from modifying attachments after the user has confirmed the questionnaire.

Available parameters:

Parameter
Description
Default
Type
Example

type

attachment

-

<string>

key

Keys are chosen by the client and must remain unique within a single session.

Recommended to use key describing the question shortly.

-

<string>

title

The title is an <object> of languages so that if the user changes the language during the verification flow, the question can be displayed in different languages. There are no length or symbol restrictions.

-

<object>

description

A description that appears below the title. Similar to the title, the description can be an <object> containing different languages, so that it can be displayed in the selected language during the verification flow.

-

<object>

fileTypes

Specifies the types of files the user is allowed to upload. Possible values: pdf, image.

[ "pdf", "image" ]

<array>

filesMaxCount

Specifies the maximum number of files the user is allowed to upload. Possible values: A number from 1 to 10.

10

<number>

showConditions

This parameter may be used to set conditions for whether a question should be displayed.

-

<object>

allowOperatorUpload

Controls how files are added: • true – operator uploads files per session. • false – files are provided via Configuration or API only.

true

<boolean>

allowOperatorOverride

If false, the operator cannot edit attachments after the user confirms the questionnaire. If true, the operator may still upload or remove files.

true

<boolean>

Expand to view ATTACHMENT question example

Last updated

Was this helpful?