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:
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:
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:
LanguageType:
languageKey:
languageArray of
languages
languages
An array of language codes to display. If left empty, all supported languages will be shown.
All
Array<string>
Company data
This step collects the core information about the company.
Title:
Company dataDescription:
Follow the simple steps belowType:
companyKey:
companyFields:
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:
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:
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:
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 flowIndividual → 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:
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:
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:
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:
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:
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:
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:
typeMust be set to"user-questionnaire"to define this step as a user questionnaire block.keyA client-defined unique key for this questionnaire step. It must remain unique within a single session to avoid conflicts.titleThe 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.descriptionText displayed beneath the title in the user interface, providing context or instructions. Must always be an <object> of language codes. Same format and rules astitle.questionsAn <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.
successButtonTitleDefines 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:
typeDefines the question type. Supported values:string– Short text inputmultiple-choice– Checkbox (multiple selection)options– Radio buttons (single selection)dropdown– Dropdown menu (single or multi-select)file– File uploadattachment- Attach files and share with the end-user
titleA multilingual <object> representing the question label. Example:
keyA unique identifier for the question within the same questionnaire. This is client-defined and used for referencing and data mapping.mandatoryIndicates whether the question must be answered before the user can proceed.Value:
trueorfalse
answerAllows 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
readOnlyis enabled.readOnlyDisplays the question in a non-editable state. Users can view the question and answer but cannot change it.Value:
trueorfalse
showConditionsDefines a conditional display rule for the question, based on the answer to a previous question.questionKeyKey of the controlling question.answerKey of the answer (for radio/checkbox) or specific text (for string)
multipleSpecific todropdowntype.If
true, the user can select multiple values from the dropdown.Value:
trueorfalse
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:
optionsAn <array> of option objects for the question. Each object must include the following:titleThe 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:
keyA 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:
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:
Question type: Text input
Available parameters:
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>
Question type: Checkbox
Available parameters:
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>
Question type: Radio
Available parameters:
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>
Question type: Dropdown
Available parameters:
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>
Question type: File upload
Available parameters:
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>
Question type: Attachment
The Attachment question type allows attaching files to a questionnaire. It supports two main use cases:
Operator-added attachments per session The operator uploads files during or before the verification session and shares them with the end-user.
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:
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>
Last updated
Was this helpful?