Document Verification

As part of the regulatory compliance procedures, the user is required to upload its documents for automated verification. The list of required documents depends on the user type and in the case of corporate users the it's establishment format.

Required documents

Personal users

For personal users it is required that the user uploads the following documents:

  • A personaly identifying document with photo, which may be either a brazilian individual registration (RG) or a brazilian driver's license (CNH). The user must provide a photo of each side of the document (front/back) or a photo containing both sides of the document.
  • A proof of life, which is a recent selfie of the user.

Corporate users

Based on its establishment format the corporate user will be required to upload one of the following documents:

EstablishmentFormatDocument
MEIccmei
EIei_registration_requirement
EIRELIeireli_incorporation_statement
MEei_registration_requirement
LTDAarticles_of_association
SAcompany_bylaws
SSarticles_of_association`
EPParticles_of_association
EMGParticles_of_association

Corporate users will be required to upload documents for all of their partners as well, with personal parterns uploading the same documents as a personal user and corporate partners uploading the same documents as a corporate user (including the documents of the partners bellow them and so on and so forth).

Uploading Documents

Personal users

In order to upload a document, first a document associated with the user must be created. for such it is necessary to provide the userId as well as the type of the document being created. For personally identifiable documents it is also required to inform the document's number.

Personal Document Types:

  • brl_individual_reg (front / back / both_sides)
  • brl_drivers_license (front / back / both_sides)
  • proof_of_life (selfie)
curl --location --request POST 'https://<instance_url>.btcore.app/consumers/<user_id>/documents' \
--header 'Content-Type: application/json' \
--data-raw '{
    "type": "<document_type>",
    "number": "<document_number>"
}'
import fs from 'fs';
import util from 'util';

const open = util.promisify(fs.open);

// Gather information for upload
const type = DocumentType.BRL_INDIVIDUAL_REG;
const userId = '9a07b821-c143-4e7f-bfda-9adf48c836ee';

// Open image file using FS
const file = await open('photo.png', 'r');

// Upload document
const document = await bitcapital
	.consumers()
	.documents()
	.uploadPicture(userId, type, file);

Following the creation of the document, files may be uploaded for each required side of the document (either front + back or both_sides for personally identifiable documents of selfie for proof_of_life).

curl --location --request POST 'https://<instance_url>.btcore.app/consumers/<user_id>/documents/<document_type>/<document_side>'\
--header 'Content-Type: multipart/form-data' \
--form 'file=<file_blob>'

Corporate users

For corporate users the process is similar to that of a personal user, the difference being that the partner's documents must also be uploaded. Let's start with uploading the corporate user's documents. First we need to create the document.

Personal Document Types:

  • articles_of_association (front)
curl --location --request POST 'https://<instance_url>.btcore.app/consumers/<user_id>/documents' \
--header 'Content-Type: application/json' \
--data-raw '{
    "type": "article_of_association",
}'

❗️

Important

Even though different types of documents are requested from the corporate user depending on their establishment format, they are all mapped to the API with the same document type articles_of_association.

Once the document has been created we can upload files to it:

curl --location --request POST 'https://<instance_url>.btcore.app/consumers/<user_id>/documents/articles_of_association/front'\
--header 'Content-Type: multipart/form-data' \
--form 'file=<file_blob>'

We can then proceed to upload the users's partners documents. In order to do so we must repeat the process of first creating a document and then uploading files to it, the way we signal to the API that the document belongs to a partner and not to the corporate user is by also passing the partner's taxId in the request. Let's first create a document for a partner:

curl --location --request POST 'https://<instance_url>.btcore.app/consumers/<user_id>/documents' \
--header 'Content-Type: application/json' \
--data-raw '{
    "type": "<document_type>",
    "number": "<document_number>",
    "taxId": "<partner_tax_id>"
}'

After the document is created we can then upload files to this document:

curl --location --request POST 'https://<instance_url>.btcore.app/consumers/<user_id>/documents/<document_type>/<document_side>?taxId=<partner_tax_id>'\
--header 'Content-Type: multipart/form-data' \
--form 'file=<file_blob>'

👍

Document upload order

The order in which the documents are uploaded does not matter, as well as it does not matter if the partner's documents are sent before the corporate user's or not.

Updating existing documents

To override previously sent documents, just upload new sides to a document with the same type. We keep track of document updates, but only the latest submitted version will be considered for any verification purpose.