Bit Capital

The Bit Capital Developer Hub

Welcome to the Bit Capital developer hub. You'll find comprehensive guides and documentation to help you start working with Bit Capital as quickly as possible, as well as support if you get stuck. Let's jump right in!

Guides    API Reference

Document Verification

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.

Uploading Documents

To upload a document you need to know the User ID and its Document Type enum.

Document Types:

  • 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.

Failure States

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

Updating existing documents

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.

Manual Verification

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.

Document Verification


Suggested Edits are limited on API Reference Pages

You can only suggest edits to Markdown body content, but not to the API spec.