openapi: 3.2.0 info: title: iDenfy IVS Core KYB Forms API version: 0.0.0 description: iDenfy Identity Verification Service's Core API documentation. contact: name: API Support url: https://idenfy-ivs.atlassian.net/servicedesk/customer/portal/1/group/-1 x-logo: url: /static/idenfy_logo.svg altText: iDenfy logo servers: - url: https://ivs.idenfy.com tags: - name: KYB Forms description: Endpoints for KYB form actions. paths: /kyb/forms/: get: operationId: kybFormsList description: List KYB forms associated with KYB token. There can be *one* or *zero* items in the list, indicating that the KYB form *was* or *was not* created. summary: List KYB forms tags: - KYB Forms security: - kybTokenAuth: [] responses: '200': content: application/json: schema: type: array items: $ref: '#/components/schemas/KybFormList' description: '' post: operationId: kybFormsCreate summary: Create new KYB form tags: - KYB Forms requestBody: content: application/json: schema: $ref: '#/components/schemas/KybFormCreateRequest' required: true security: - kybTokenAuth: [] responses: '201': content: application/json: schema: $ref: '#/components/schemas/KybFormCreate' description: '' /kyb/forms/{id}/: get: operationId: kybFormsRetrieve summary: Retrieve KYB form info parameters: - in: path name: id schema: type: string description: A unique value identifying this company. required: true tags: - KYB Forms security: - kybTokenAuth: [] - apiKeyPair: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/KybForm' description: '' put: operationId: kybFormsUpdate summary: Update KYB form info parameters: - in: path name: id schema: type: string description: A unique value identifying this company. required: true tags: - KYB Forms requestBody: content: application/json: schema: $ref: '#/components/schemas/KybFormUpdateRequest' required: true security: - kybTokenAuth: [] - apiKeyPair: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/KybFormUpdate' description: '' patch: operationId: kybFormsPartialUpdate summary: Partially update KYB form info parameters: - in: path name: id schema: type: string description: A unique value identifying this company. required: true tags: - KYB Forms requestBody: content: application/json: schema: $ref: '#/components/schemas/PatchedKybFormUpdateRequest' security: - kybTokenAuth: [] - apiKeyPair: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/KybFormUpdate' description: '' /kyb/forms/{id}/submit/: post: operationId: kybFormsSubmitCreate description: 'Submit a filled KYB form for review. The form will be submitted and you will not be able to edit this KYB form any further unless additional information will be requested during a manual review. After submission, automatic blacklist and automation processes are executed. Then this KYB form will be reviewed by humans. After manual review, you may receive a webhook callback.' summary: Submit KYB form parameters: - in: path name: id schema: type: string description: A unique value identifying this company. required: true tags: - KYB Forms security: - kybTokenAuth: [] responses: '200': description: No response body components: schemas: CountryEnum: enum: - AF - AX - AL - DZ - AS - AD - AO - AI - AQ - AG - AR - AM - AW - AU - AT - AZ - BS - BH - BD - BB - BY - BE - BZ - BJ - BM - BT - BO - BQ - BA - BW - BV - BR - IO - BN - BG - BF - BI - CV - KH - CM - CA - KY - CF - TD - CL - CN - CX - CC - CO - KM - CG - CK - CR - CI - HR - CU - CW - CY - CZ - CD - DK - DJ - DM - DO - EC - EG - SV - GQ - ER - EE - SZ - ET - FK - FO - FJ - FI - FR - GF - PF - TF - GA - GM - GE - DE - GH - GI - GR - GL - GD - GP - GU - GT - GG - GN - GW - GY - HT - HM - HN - HK - HU - IS - IN - ID - IR - IQ - IE - IM - IL - IT - JM - JP - JE - JO - KZ - KE - KI - XK - KW - KG - LA - LV - LB - LS - LR - LY - LI - LT - LU - MO - MG - MW - MY - MV - ML - MT - MH - MQ - MR - MU - YT - MX - FM - MD - MC - MN - ME - MS - MA - MZ - MM - NA - NR - NP - NL - NC - NZ - NI - NE - NG - NU - NF - KP - MK - MP - 'NO' - OM - PK - PW - PS - PA - PG - PY - PE - PH - PN - PL - PT - PR - QA - RE - RO - RU - RW - BL - SH - KN - LC - MF - PM - VC - WS - SM - ST - SA - SN - RS - SC - SL - SG - SX - SK - SI - SB - SO - ZA - GS - KR - SS - ES - LK - SD - SR - SJ - SE - CH - SY - TW - TJ - TZ - TH - TL - TG - TK - TO - TT - TN - TR - TM - TC - TV - UG - UA - AE - GB - UM - US - UY - UZ - VU - VA - VE - VN - VG - VI - WF - EH - YE - ZM - ZW type: string KybFormDocumentCreate: type: object properties: id: type: string readOnly: true type: $ref: '#/components/schemas/KybDocumentTypeEnum' filename: type: string nullable: true maxLength: 100 file: type: string format: uri description: 'Base64 encoded document file. Can be: `jpeg`, `jpg`, `png`, `gif`, `webp`, `heic`, `heif`, `pdf` files.' required: - file - id - type BeneficiaryTypeEnum: enum: - CEO - REPRESENTATIVE - SHAREHOLDER - UBO - ABO type: string DateFieldValue: type: object properties: title: type: string type: $ref: '#/components/schemas/CustomFieldTypeEnum' value: type: string format: date nullable: true required: - title - type PatchedKybFormUpdateRequest: type: object properties: company: $ref: '#/components/schemas/CompanyInfoRequest' clientSystem: $ref: '#/components/schemas/ClientSystemRequest' AdditionalFieldValueRequest: type: object properties: value: nullable: true required: - value ClientSystem: type: object properties: ipAddress: type: string nullable: true description: '[ipv4](https://wikipedia.org/wiki/IPv4#Addressing) or [ipv6](https://wikipedia.org/wiki/IPv6_address) address.' timeZone: type: string nullable: true description: Time zone from [TZ database list](https://wikipedia.org/wiki/List_of_tz_database_time_zones#List). CustomFieldTypeEnum: enum: - CHECKBOX - COUNTRY - COUNTRY_MULTI - DATE - INTEGER - SELECT - SELECT_MULTI - TEXT type: string KybFormMeta: type: object properties: status: $ref: '#/components/schemas/KybStatusEnum' approvalStatus: allOf: - $ref: '#/components/schemas/ApprovalStatusEnum' nullable: true description: Review approval status. submissionTime: type: string format: date-time nullable: true description: Date and time when KYB form submit endpoint was called. soleProprietor: type: boolean KybForm: type: object properties: id: type: string readOnly: true company: $ref: '#/components/schemas/CompanyInfo' documents: type: array items: $ref: '#/components/schemas/KybFormDocument' beneficiaries: type: array items: $ref: '#/components/schemas/Beneficiary' clientSystem: $ref: '#/components/schemas/ClientSystem' meta: allOf: - $ref: '#/components/schemas/KybFormMeta' readOnly: true required: - company - id - meta KybFormUpdate: type: object properties: company: $ref: '#/components/schemas/CompanyInfo' clientSystem: $ref: '#/components/schemas/ClientSystem' required: - company CheckboxFieldValue: type: object properties: title: type: string type: $ref: '#/components/schemas/CustomFieldTypeEnum' value: type: boolean nullable: true required: - title - type BeneficiaryRequest: type: object properties: beneficiaryType: $ref: '#/components/schemas/BeneficiaryTypeEnum' beneficiaryTypes: type: array items: $ref: '#/components/schemas/BeneficiaryTypeEnum' minItems: 1 info: $ref: '#/components/schemas/ApplicantRequest' positions: type: array items: type: string minLength: 1 pattern: ^[^,]+$ maxLength: 50 default: [] description: Positions of the beneficiary. Can be `shareholder`, `director`, or any other position. maxItems: 3 formFiller: type: boolean description: Indicates whether this beneficiary is the filler of the KYB form. ownershipPercentage: type: number format: double maximum: 100.0 minimum: 0.0 nullable: true required: - info AdditionalFieldValue: type: object properties: title: type: string readOnly: true type: allOf: - $ref: '#/components/schemas/CustomFieldTypeEnum' readOnly: true value: nullable: true required: - title - type - value KybStatusEnum: enum: - PENDING - PROCESSING - NEED_TO_PROCESS - NEED_TO_REVIEW - COMPLETED type: string KybDocumentTypeEnum: enum: - INCORPORATION_CERT - DIRECTOR_CERT - SHAREHOLDER_CERT - UBO_CERT - INCORPORATION_ARTICLES - SHAREHOLDER_REGISTRY - DIRECTORS_REGISTRY - STATE_REGISTRY - UBO_REGISTRY - OWNERSHIP_STRUCTURE - INCUMBENCY_CERT - TRUST_AGREEMENT - INFORMATION_STATEMENT - GOOD_STANDING_CERT - PROOF_OF_DOMAIN - PROOF_OF_ADDRESS - SOURCE_OF_FUNDS - BANK_STATEMENT - INVOICE - ONLINE_PRESENCE - DIRECTOR_ONLINE_PRESENCE - SHAREHOLDER_ONLINE_PRESENCE - WEBSITE_OVERVIEW - E_SIGNATURE_CERT - ANNUAL_REPORT - NAME_CHANGE_PROOF - TRADING_STATUS_PROOF - ORG_CHART - COMPANY_ADVERSE_MEDIA - INDIVIDUAL_ADVERSE_MEDIA - EMAIL_CHECK - SOURCE_OF_WEALTH - OTHER type: string IndividualApplicantRequest: type: object properties: infoType: $ref: '#/components/schemas/ApplicantTypeEnum' name: type: string minLength: 1 maxLength: 100 surname: type: string minLength: 1 maxLength: 100 email: type: string format: email nullable: true description: Email address. maxLength: 254 phone: type: string nullable: true description: Phone number in [E.164](https://wikipedia.org/wiki/E.164) format. maxLength: 128 dateOfBirth: type: string format: date nullable: true country: allOf: - $ref: '#/components/schemas/CountryEnum' nullable: true description: ID issuing country. nationality: allOf: - $ref: '#/components/schemas/CountryEnum' nullable: true documentNumber: type: string nullable: true pattern: ^[\u0000-\u007F]+$ maxLength: 50 personalNumber: type: string nullable: true pattern: ^[\u0000-\u007F]+$ maxLength: 50 citizenship: allOf: - $ref: '#/components/schemas/CountryEnum' nullable: true countryOfBirth: allOf: - $ref: '#/components/schemas/CountryEnum' nullable: true residentialAddress: type: string nullable: true maxLength: 255 countryOfResidence: allOf: - $ref: '#/components/schemas/CountryEnum' nullable: true postcode: type: string nullable: true maxLength: 20 address: type: string nullable: true maxLength: 255 street: type: string nullable: true maxLength: 100 city: type: string nullable: true maxLength: 100 tin: type: string nullable: true maxLength: 20 taxResidence: allOf: - $ref: '#/components/schemas/CountryEnum' nullable: true selfDeclaredPep: type: boolean nullable: true additionalInfo: type: object additionalProperties: $ref: '#/components/schemas/AdditionalFieldValueRequest' required: - infoType - name - surname Beneficiary: type: object properties: id: type: string readOnly: true beneficiaryType: $ref: '#/components/schemas/BeneficiaryTypeEnum' beneficiaryTypes: type: array items: $ref: '#/components/schemas/BeneficiaryTypeEnum' minItems: 1 info: $ref: '#/components/schemas/Applicant' positions: type: array items: type: string pattern: ^[^,]+$ maxLength: 50 default: [] description: Positions of the beneficiary. Can be `shareholder`, `director`, or any other position. maxItems: 3 formFiller: type: boolean description: Indicates whether this beneficiary is the filler of the KYB form. ownershipPercentage: type: number format: double maximum: 100.0 minimum: 0.0 nullable: true parent: type: string readOnly: true nullable: true required: - id - info - parent SelectMultiFieldValue: type: object properties: title: type: string type: $ref: '#/components/schemas/CustomFieldTypeEnum' value: type: array items: type: string pattern: ^[\w_*-]+$ maxLength: 32 nullable: true required: - title - type KybFormDocument: type: object properties: id: type: string readOnly: true type: $ref: '#/components/schemas/KybDocumentTypeEnum' filename: type: string nullable: true maxLength: 100 file: type: string format: uri readOnly: true description: 'Base64 encoded document file. Can be: `jpeg`, `jpg`, `png`, `gif`, `webp`, `heic`, `heif`, `pdf` files.' required: - file - id - type IntegerFieldValue: type: object properties: title: type: string type: $ref: '#/components/schemas/CustomFieldTypeEnum' value: type: integer nullable: true required: - title - type CompanyApplicant: type: object properties: infoType: $ref: '#/components/schemas/ApplicantTypeEnum' companyName: type: string maxLength: 200 registrationNumber: type: string nullable: true maxLength: 100 country: $ref: '#/components/schemas/CountryEnum' region: type: string nullable: true maxLength: 2 type: type: string nullable: true maxLength: 100 phone: type: string nullable: true description: Phone number in [E.164](https://wikipedia.org/wiki/E.164) format. maxLength: 128 website: type: string format: uri nullable: true maxLength: 200 email: type: string format: email nullable: true description: Email address. maxLength: 254 brandNames: type: array items: type: string maxLength: 100 default: [] maxItems: 10 activityCode: type: string nullable: true maxLength: 8 tin: type: string nullable: true description: Taxpayer identification number. maxLength: 32 operatingAddress: type: string nullable: true maxLength: 255 postalAddress: type: string nullable: true description: Registration address. maxLength: 255 postcode: type: string nullable: true maxLength: 20 street: type: string nullable: true maxLength: 100 city: type: string nullable: true maxLength: 100 additionalInfo: type: object additionalProperties: $ref: '#/components/schemas/CustomFieldValue' required: - companyName - country - infoType SelectFieldValue: type: object properties: title: type: string type: $ref: '#/components/schemas/CustomFieldTypeEnum' value: type: string nullable: true pattern: ^[\w_*-]+$ maxLength: 32 required: - title - type Applicant: oneOf: - $ref: '#/components/schemas/IndividualApplicant' - $ref: '#/components/schemas/CompanyApplicant' discriminator: propertyName: infoType mapping: INDIVIDUAL: '#/components/schemas/IndividualApplicant' COMPANY: '#/components/schemas/CompanyApplicant' CountryMultiFieldValue: type: object properties: title: type: string type: $ref: '#/components/schemas/CustomFieldTypeEnum' value: type: array items: $ref: '#/components/schemas/CountryEnum' nullable: true required: - title - type CountryFieldValue: type: object properties: title: type: string type: $ref: '#/components/schemas/CustomFieldTypeEnum' value: allOf: - $ref: '#/components/schemas/CountryEnum' nullable: true required: - title - type ApplicantRequest: oneOf: - $ref: '#/components/schemas/IndividualApplicantRequest' - $ref: '#/components/schemas/CompanyApplicantRequest' discriminator: propertyName: infoType mapping: INDIVIDUAL: '#/components/schemas/IndividualApplicantRequest' COMPANY: '#/components/schemas/CompanyApplicantRequest' KybFormCreate: type: object properties: id: type: string readOnly: true company: $ref: '#/components/schemas/CompanyInfo' documents: type: array items: $ref: '#/components/schemas/KybFormDocumentCreate' beneficiaries: type: array items: $ref: '#/components/schemas/Beneficiary' clientSystem: $ref: '#/components/schemas/ClientSystem' meta: allOf: - $ref: '#/components/schemas/KybFormMeta' readOnly: true required: - company - id - meta CompanyInfoRequest: type: object properties: companyName: type: string minLength: 1 maxLength: 200 registrationNumber: type: string nullable: true maxLength: 100 country: $ref: '#/components/schemas/CountryEnum' region: type: string nullable: true maxLength: 2 type: type: string nullable: true maxLength: 100 phone: type: string nullable: true description: Phone number in [E.164](https://wikipedia.org/wiki/E.164) format. maxLength: 128 website: type: string format: uri nullable: true maxLength: 200 email: type: string format: email nullable: true description: Email address. maxLength: 254 brandNames: type: array items: type: string minLength: 1 maxLength: 100 default: [] maxItems: 10 activityCode: type: string nullable: true maxLength: 8 tin: type: string nullable: true description: Taxpayer identification number. maxLength: 32 operatingAddress: type: string nullable: true maxLength: 255 postalAddress: type: string nullable: true description: Registration address. maxLength: 255 postcode: type: string nullable: true maxLength: 20 street: type: string nullable: true maxLength: 100 city: type: string nullable: true maxLength: 100 additionalInfo: type: object additionalProperties: $ref: '#/components/schemas/AdditionalFieldValueRequest' required: - companyName - country IndividualApplicant: type: object properties: infoType: $ref: '#/components/schemas/ApplicantTypeEnum' name: type: string maxLength: 100 surname: type: string maxLength: 100 email: type: string format: email nullable: true description: Email address. maxLength: 254 phone: type: string nullable: true description: Phone number in [E.164](https://wikipedia.org/wiki/E.164) format. maxLength: 128 dateOfBirth: type: string format: date nullable: true country: allOf: - $ref: '#/components/schemas/CountryEnum' nullable: true description: ID issuing country. nationality: allOf: - $ref: '#/components/schemas/CountryEnum' nullable: true documentNumber: type: string nullable: true pattern: ^[\u0000-\u007F]+$ maxLength: 50 personalNumber: type: string nullable: true pattern: ^[\u0000-\u007F]+$ maxLength: 50 citizenship: allOf: - $ref: '#/components/schemas/CountryEnum' nullable: true countryOfBirth: allOf: - $ref: '#/components/schemas/CountryEnum' nullable: true residentialAddress: type: string nullable: true maxLength: 255 countryOfResidence: allOf: - $ref: '#/components/schemas/CountryEnum' nullable: true postcode: type: string nullable: true maxLength: 20 address: type: string nullable: true maxLength: 255 street: type: string nullable: true maxLength: 100 city: type: string nullable: true maxLength: 100 tin: type: string nullable: true maxLength: 20 taxResidence: allOf: - $ref: '#/components/schemas/CountryEnum' nullable: true selfDeclaredPep: type: boolean nullable: true additionalInfo: type: object additionalProperties: $ref: '#/components/schemas/CustomFieldValue' required: - infoType - name - surname CompanyInfo: type: object properties: companyName: type: string maxLength: 200 registrationNumber: type: string nullable: true maxLength: 100 country: $ref: '#/components/schemas/CountryEnum' region: type: string nullable: true maxLength: 2 type: type: string nullable: true maxLength: 100 phone: type: string nullable: true description: Phone number in [E.164](https://wikipedia.org/wiki/E.164) format. maxLength: 128 website: type: string format: uri nullable: true maxLength: 200 email: type: string format: email nullable: true description: Email address. maxLength: 254 brandNames: type: array items: type: string maxLength: 100 default: [] maxItems: 10 activityCode: type: string nullable: true maxLength: 8 tin: type: string nullable: true description: Taxpayer identification number. maxLength: 32 operatingAddress: type: string nullable: true maxLength: 255 postalAddress: type: string nullable: true description: Registration address. maxLength: 255 postcode: type: string nullable: true maxLength: 20 street: type: string nullable: true maxLength: 100 city: type: string nullable: true maxLength: 100 additionalInfo: type: object additionalProperties: $ref: '#/components/schemas/AdditionalFieldValue' required: - companyName - country KybFormDocumentCreateRequest: type: object properties: type: $ref: '#/components/schemas/KybDocumentTypeEnum' filename: type: string nullable: true maxLength: 100 file: type: string format: byte description: 'Base64 encoded document file. Can be: `jpeg`, `jpg`, `png`, `gif`, `webp`, `heic`, `heif`, `pdf` files.' required: - file - type KybFormUpdateRequest: type: object properties: company: $ref: '#/components/schemas/CompanyInfoRequest' clientSystem: $ref: '#/components/schemas/ClientSystemRequest' required: - company CompanyApplicantRequest: type: object properties: infoType: $ref: '#/components/schemas/ApplicantTypeEnum' companyName: type: string minLength: 1 maxLength: 200 registrationNumber: type: string nullable: true maxLength: 100 country: $ref: '#/components/schemas/CountryEnum' region: type: string nullable: true maxLength: 2 type: type: string nullable: true maxLength: 100 phone: type: string nullable: true description: Phone number in [E.164](https://wikipedia.org/wiki/E.164) format. maxLength: 128 website: type: string format: uri nullable: true maxLength: 200 email: type: string format: email nullable: true description: Email address. maxLength: 254 brandNames: type: array items: type: string minLength: 1 maxLength: 100 default: [] maxItems: 10 activityCode: type: string nullable: true maxLength: 8 tin: type: string nullable: true description: Taxpayer identification number. maxLength: 32 operatingAddress: type: string nullable: true maxLength: 255 postalAddress: type: string nullable: true description: Registration address. maxLength: 255 postcode: type: string nullable: true maxLength: 20 street: type: string nullable: true maxLength: 100 city: type: string nullable: true maxLength: 100 additionalInfo: type: object additionalProperties: $ref: '#/components/schemas/AdditionalFieldValueRequest' required: - companyName - country - infoType KybFormCreateRequest: type: object properties: company: $ref: '#/components/schemas/CompanyInfoRequest' documents: type: array items: $ref: '#/components/schemas/KybFormDocumentCreateRequest' beneficiaries: type: array items: $ref: '#/components/schemas/BeneficiaryRequest' clientSystem: $ref: '#/components/schemas/ClientSystemRequest' required: - company ApprovalStatusEnum: enum: - APPROVED - DENIED type: string KybFormList: type: object properties: id: type: string readOnly: true company: $ref: '#/components/schemas/CompanyInfo' meta: allOf: - $ref: '#/components/schemas/KybFormMeta' readOnly: true required: - company - id - meta CustomFieldValue: oneOf: - $ref: '#/components/schemas/CheckboxFieldValue' - $ref: '#/components/schemas/CountryFieldValue' - $ref: '#/components/schemas/CountryMultiFieldValue' - $ref: '#/components/schemas/DateFieldValue' - $ref: '#/components/schemas/IntegerFieldValue' - $ref: '#/components/schemas/SelectFieldValue' - $ref: '#/components/schemas/SelectMultiFieldValue' - $ref: '#/components/schemas/TextFieldValue' discriminator: propertyName: type mapping: CHECKBOX: '#/components/schemas/CheckboxFieldValue' COUNTRY: '#/components/schemas/CountryFieldValue' COUNTRY_MULTI: '#/components/schemas/CountryMultiFieldValue' DATE: '#/components/schemas/DateFieldValue' INTEGER: '#/components/schemas/IntegerFieldValue' SELECT: '#/components/schemas/SelectFieldValue' SELECT_MULTI: '#/components/schemas/SelectMultiFieldValue' TEXT: '#/components/schemas/TextFieldValue' ApplicantTypeEnum: enum: - INDIVIDUAL - COMPANY type: string TextFieldValue: type: object properties: title: type: string type: $ref: '#/components/schemas/CustomFieldTypeEnum' value: type: string nullable: true maxLength: 100 required: - title - type ClientSystemRequest: type: object properties: ipAddress: type: string nullable: true minLength: 1 description: '[ipv4](https://wikipedia.org/wiki/IPv4#Addressing) or [ipv6](https://wikipedia.org/wiki/IPv6_address) address.' timeZone: type: string nullable: true minLength: 1 description: Time zone from [TZ database list](https://wikipedia.org/wiki/List_of_tz_database_time_zones#List). securitySchemes: apiKeyPair: type: http scheme: basic description: 'The request must contain basic auth headers where username is *API key* and password is *API secret*.
In order for you to start using our API you will need an **API key** and **API secret**.
Both can be retrieved by contacting *iDenfy''s support* or *iDenfy''s sales team*.' kybTokenAuth: type: http scheme: bearer description: 'Authentication for actions with all operations associated with KYB form.
Token obtained from *KYB form token generation* endpoint as ``tokenString`` value.
' externalDocs: description: For other/more docs on iDenfy services visit our main documentation page. url: https://documentation.idenfy.com x-tagGroups: - name: General tags: - Webhooks - name: KYB tags: - KYB Token - KYB Forms - KYB Documents - Beneficiaries - KYB Questionnaires - Companies - name: KYB GOV Checks tags: - Credit Bureau - GOV Registers - GOV Orders - SOS Reports - Registry Center Checks