To ensure the account holder is the one requesting the sign up, we require you to upload its documents for automated verification. The list of required documents depends on your business model, but usually just an identification document with photo is enough.
To upload a document you need to know the User ID and its Document Type enum.
- brl_individual_reg (front / back / both_sides / selfie)
- brl_drivers_license (front / back / both_sides / selfie)
- brl_address_statement (front / selfie)
- passport (front / selfie)
import fs from 'fs'; import util from 'util'; const open = uitl.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);
You may also send a base64 encoded image string, if needed. This is not desirable as it may increase the payload size.
// Gather information for upload const type = DocumentType.BRL_INDIVIDUAL_REG; const userId = '9a07b821-c143-4e7f-bfda-9adf48c836ee'; // The number associated with this document, depending on ins type // Usually an unique code printed in the front, such as RG number or CPF const number = '1234567890'; // Get image from Base64 string const imageStr = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=' // Upload document const document = await bitcapital .consumers() .documents() .uploadPictureFromBase64(userId, type, number, imageStr);
After all required documents are sent, the consumer will be sent to a queue with the state "processing_documents". All state changes will be notified with Domain postbacks.
After all checks, if the user is approved it will be sent to the "processing_wallets" states, for automated account creation in the network. After all automated processing is done, it will be the "ready" state, fully operational.
If anything fails, it may be sent to:
- rejected, if the consumer was checked and the result was denied for compliance reasons,
- invalid_documents, when documents are not valid for checking in this instance,
- manual_verification, when additional documents or further checking is required in this instance,
- provider_failed, when something went wrong in an external provider after the internal checks passed
To override previously sent documents, just upload a new one with the same type. Only the latest submitted version will be considered for any verification purpose.
Some users cannot be verified in a fully automated algorithm, so in some cases your signup might go to the manual_verification state. This usually happens with blurred documents, or some mistyped information by the users.
Some other cases might be more complex and require a full compliance analysis, on which we might request you some additional documents:
- A valid and official address statement to verify the card delivery destination
- A valid tax revenue report or equivalent Receita Federal / IRS document.
You can check the reason and the actions available in the Consumer States. We encourage opening a ticket in the Help Desk for further support, whenever needed.