To enable the User to operate financially in a fully regulated environment, it’s necessary to validate its personal identification. We use strategic partnerships which enable us to check the input information against a huge set of official databases such as the Receita Federal, Policia Federal, OFAC and other sanctions listings.
Personal Accounts
For signing up individual personal accounts, you'll need:
- A valid and unique e-mail address
- A valid and active CPF, matching the user data provided in the sign up (name, birthdate, etc.)
- No financial or criminal sanctions nationally or internationally
- No political exposure or relationships (PEP)
- A valid physical address matching the user data (may require additional validation)
- A valid and unique phone, verified by SMS (Check the Phone Verification guide)
- A valid identification document for upload (Check the Document Verification guide).
- A selfie with the user holding the document, for face matching and possession verification (may require additional validation)
In some special cases you might also need:
- A picture of the user handwritten signature
- A picture of a valid address statement (public services bill, phone bills, etc)
These checks are needed in the account signup, but some of them are rechecked frequently. If any account does not meet the standards after its creation, it may get blocked. In that case, you'll need to contact the Compliance team at the Help Desk.
Important!
The field
motherName
is required by default in our KYC. In some cases, the user does not have any mother registered in his document. In that case you should fill the value asDESCONHECIDO
.
Checkout the sample codes below
curl --location --request POST 'https://instance-url.btcore.app/consumers' \
--header 'Authorization: Bearer 0000000000000000000000000000000000000000'\
--header 'Content-Type: application/json' \
--data-raw '{
"firstName": "John",
"lastName": "Doe",
"email": "[email protected]",
"password": "example",
"role": "consumer",
"domain": "b9c75e90-386f-4c8b-bd8e-c8f886b3b5d3",
"consumer": {
"type": "personal",
"taxId": "",
"motherName": "Jane Doe",
"birthday": "1974-12-10 12:00:00",
"phones": [{
"code": "11",
"number": "987654321",
"type": "mobile"
}],
"addresses": [{
"country": "BR",
"state": "SP",
"city": "São Paulo",
"code": "04044000",
"street": "Av Paulista",
"number": "123",
"neighborhood": "Jardim Paulista",
"reference": "",
"status": "own"
}]
}
}'
// Registers a new subaccount for a consumer user
// This is create a "pending" account, after its creation
// the phone number and the user documents must be verified
const user = await bitcapital.consumers().create({
firstName: "John",
lastName: "Doe",
email: "[email protected]",
password: "example",
role: "consumer",
consumer: {
type: "personal",
// The Tax ID (CPF or CNPJ) will be checked against public and private verification bureaus
taxId: "01234567890",
motherName: "Jane Doe",
birthday: "1975-02-15 12:00:00",
phones: [{
// This number will be used in SMS phone verification
code: "11",
number: "987654321",
type: "mobile"
}],
// Address may subject of additional verification in case
// of misidentified or incomplete identity details
addresses: [{
country: "BR",
state: "SP",
city: "São Paulo",
code: "04074020",
street: "Av Paulista",
number: "307",
neighborhood: "Bela Vista",
complement: "Ap. 30",
reference: "",
type: 'home',
}]
}
});
For the complete properties description, checkout:
Company Accounts
For signing up company accounts, you'll need:
- A valid and unique e-mail address
- A valid CNPJ, matching the company data provided in the sign up (trading name, foundation date, etc.)
- A valid physical address matching the user data (may require additional validation)
- A valid and unique phone, verified by SMS (Check the Phone Verification guide)
- The legal nature of this company (see the official reference)
- The establishment format of this company: MEI, EI, EIRELI, LTDA, SS, SA, ME, EPP or EMGP.
- The annual revenue of the company, in BRL.
Additionally, all company related individuals (such as direct and indirect shareholders) must pass the Personal Verification described in the previous section, including uploading their documents. These checks are needed in the account signup, but some of them are rechecked frequently. If any account does not meet the standards after its creation, it might get blocked without any previous notice.
// Registers a new subaccount for a consumer user
// This is create a "pending" account, after its creation
// the phone number and the user documents must be verified
const user = await bitcapital.consumers().create({
firstName: 'BIT CAPITAL',
lastName: 'LTDA',
email: '[email protected]',
password: "example",
role: 'consumer',
consumer: {
taxId: '29079725000107',
type: 'corporate',
birthday: new Date('2017-11-16'),
phones: [{
code: '11',
number: '42002480',
}],
addresses: [{
street: 'Av Nove de Julho',
number: '4939',
neighborhood: 'Jardim Paulista',
code: '01407100',
city: 'São Paulo',
state: 'SP',
country: 'BR',
status: 'own',
type: 'work',
}],
companyData: {
taxId: '29079725000107',
stateRegistration:'164677191686',
tradeName: 'Bit Capital Ltda',
legalName: 'Bit Capital Ltda',
openingDate: new Date('2017-11-16'),
establishmentFormat: 'LTDA',
revenue: "1000000.00",
partnerChanged: false,
legalNature: '2062',
legalStatus: 'active',
activities: [{
isMain: true,
code: '62.04-0-00',
description: 'Consultoria em tecnologia da informação',
}],
partners: [{
name: 'RICARDO ROESSLE GUIMARAES FILHO',
gender: 'M',
type: 'personal',
birthDate: new Date('1995-08-02'),
birthCountry: 'Brasil',
taxId: '1234567890',
motherName: 'ELISABETH GUIMARAES',
isPep: false,
profile: 'owner',
email: '[email protected]',
phones: [{
code: '11',
number: '42002480',
}],
addresses: [{
street: 'Av Nove de Julho',
number: '4939',
neighborhood: 'Jardim Paulista',
code: '01407100',
city: 'São Paulo',
state: 'SP',
country: 'BR',
status: 'own',
type: 'home',
}],
}],
},
},
});
curl --location --request POST 'https://instance-url.btcore.app/consumers' \
--header 'Authorization: Bearer 0000000000000000000000000000000000000000'\
--header 'Content-Type: application/json' \
--data-raw '{
"firstName":"BIT CAPITAL",
"lastName":"LTDA",
"email":"[email protected]",
"password": "example",
"role":"consumer",
"consumer":{
"taxId":"29079725000107",
"type":"corporate",
"birthday": "1995-08-02T12:00:00.000Z",
"phones":[{"code":"11","number":"42002480"}],
"addresses":[
{
"street":"Av Nove de Julho",
"number":"4939",
"neighborhood":"Jardim Paulista",
"code":"01407100",
"city":"São Paulo",
"state":"SP",
"country":"BR",
"status":"own"
}
],
"companyData":{
"taxId":"29079725000107",
"stateRegistration": "164677191686",
"tradeName":"Bit Capital Ltda",
"legalName":"Bit Capital Ltda",
"openingDate": "1995-08-02T12:00:00.000Z",
"establishmentFormat":"LTDA",
"revenue": 1000,
"partnerChanged":false,
"legalNature":"2062",
"activities":[
{
"isMain":true,
"code":"62.04-0-00",
"description":"Consultoria em tecnologia da informação"
}
],
"partners":[
{
"name":"RICARDO GUIMARAES FILHO",
"gender":"M",
"birthDate":{},
"birthCountry":"Brasil",
"taxId":"01234567890",
"motherName":"ELISABETH GUIMARAES",
"isPep":false,
"profile":"owner",
"email":"[email protected]",
"phones":[{"code":"11","number":"42002480"}],
"addresses":[
{
"street":"Av Paulista",
"number":"123",
"neighborhood":"Jardim Paulista",
"code":"04004000",
"city":"São Paulo",
"state":"SP",
"country":"BR",
"status":"own"
}
]
}
]
}
}
}'
For the complete properties description, checkout:
STR Extra Fields
When using BT Core with the STR Provider, usually when the BRLP - Brazilian Real (Parati) is setup in the instance, you may need to send some extra fields.
Field | Type | Description |
---|---|---|
consumer.birthCity |
|
|
consumer.birthState |
|
|
consumer.civilStatus |
|
Available choices: |
consumer.financialEquity |
|
|
consumer.financialProfit |
|
|
SaaS Extra Fields
When using BT Core SaaS Platform, you can optionally add some other fields when creating a user related to this account:
Field | Description |
---|---|
extra.branch |
The branch number to assign this user to. |
extra.number |
Explicitly tell which account number this consumer's first wallet should have. If not specified the system will generate a number randomly. |
Handling failed verifications
Sometimes, an account creation may be rejected by our provider's KYC or fail a validation step, which will be reflected on the consumer's status as PROVIDER_REJECTED
or PROVIDER_FAILED
.
To retry the account creation with updated information, the consumer update endpoint has a optional query param retry
that moves back the consumer to the last non-failure status and retry it's creation.
- For updating the consumer basic information and retrying the account creation, you may use the
POST /consumers/:userId?retry=true
endpoint, sending all data to be updated as the body of the call. - For updating the consumer documents, addresses or phones, update the data using the respective endpoints and then call
POST /consumers/:userId?retry=true
with no body.
For more information, refer to the Handling failed verifications specific guides.
Updated 8 months ago
What's Next
Phone Verification |