Manual BaaS - Conta Digital
Antes de iniciar o processo de abertura de conta, é de responsabilidade do parceiro realizar as análises de KYC e Prevenção a Fraude.
Os webhooks da QI Tech não devem ser mapeadas de forma restrita. Campos adicionais podem ser incluídos aos payloads dos webhooks retornados em nossas APIs.
Você pode consultar e reenviar webhooks seguindo as instruções detalhadas na documentação: Reenvio de Webhooks.
Para isso, deve ser utilizado o endpoint de análise descrito em /onboarding.
1 - Criando uma Conta
1.1. Upload de documentos
Antes da abertura da conta deve ser realizado o upload dos documentos da empresa. Seguem listas de documentos exigidos para cada tipo de empresa:
Para S.A.'s:
-
Estatuto Social.
-
Ata de Eleição dos Representantes Legais da empresa.
-
Procuração (caso aplicável).
-
Documento com foto de cada representante legal ou procurador.
Para os demais casos:
-
Contrato social.
-
Procuração (caso aplicável).
-
Documento com foto de cada representante legal ou procurador.Os documentos devem ser compactados em um arquivo “.zip” e enviados através do endpoint de upload de documentos ().
Response
Response Body
{
"document_key": "cd639c4a-2279-468a-a047-59865b8159ed",
"document_md5": "8f5bef84cb07dc047017c0d304dbb6b8",
"url": "https://storage.googleapis.com/sandbox-doc-api/documents/cd639c4a-2279-468a-a047-59865b8159ed/identificacao_teste.pdf"
}
Guarde essa “document_key”, pois ela será necessária na etapa da criação da conta.
1.2. Criação da conta PJ
Request
Request Body
{
"account_owner": {
"annual_revenue_amount": 180000,
"address": {
"city": "Limeira",
"complement": "complemento",
"neighborhood": "Vila Cidade Jardim",
"number": "662",
"postal_code": "13480290",
"state": "SP",
"street": "Avenida Campinas"
},
"cnae_code": "4721-1/02",
"company_statute": "8b0d8c33-01c9-4cf5-a0fa-1d2a96f4b34d",
"company_document_number": "09080702000105",
"company_type": "ltda",
"email": "padaria@vovolucia.com.br",
"foundation_date": "1950-08-21",
"annual_revenue_amount": "1000000.00",
"name": "VOVO LUCIA CONVENIENCIA LTDA",
"person_type": "legal",
"phone": {
"area_code": "19",
"country_code": "55",
"number": "988888888"
},
"trading_name": "Empadaria Vovo Lucia",
"company_representatives": [{
"address": {
"city": "Recife",
"complement": null,
"neighborhood": "Fundão",
"number": "137",
"postal_code": "52221110",
"state": "PE",
"street": "Rua Camapuã"
},
"birth_date": "1972-02-02",
"document_identification_number": "339122924",
"document_identification": "8b0d8c33-01c9-4cf5-a0fa-1d2a96f4b34d",
"email": "marcos.alves@yopmail.com",
"individual_document_number": "08531309069",
"is_pep": false,
"final_beneficiary": true,
"marital_status": "single",
"mother_name": "Sueli Isadora Alves",
"name": "Marcos Felipe Henrique Alves",
"nationality": "Brasileira",
"person_type": "natural",
"phone": {
"area_code": "88",
"country_code": "55",
"number": "995924634"
}
},
{
"person_type": "natural",
"name": "Juliana Tereza Bernardes",
"mother_name": "Maria Mariane",
"birth_date": "1990-05-06",
"profession": "Deputada",
"nationality": "Brasileira",
"marital_status": "single",
"is_pep": false,
"final_beneficiary": true,
"individual_document_number": "97564480084",
"document_identification_number": "232479719",
"document_identification": "8b0d8c33-01c9-4cf5-a0fa-1d2a96f4b34d",
"email": "juliana.tereza@yopmail.com",
"phone": {
"country_code": "55",
"area_code": "11",
"number": "912821359"
},
"address": {
"street": "Passagem Mariana",
"state": "PA",
"city": "Ananindeua",
"neighborhood": "Águas Lindas",
"number": "660",
"postal_code": "67118003",
"complement": "complemento"
}
}
]
},
"allowed_user": {
"email": "juliana.tereza@yopmail.com",
"individual_document_number": "97564480084",
"name": "Juliana Tereza Bernardes",
"person_type": "natural",
"phone": {
"country_code": "55",
"area_code": "11",
"number": "912828135"
}
},
"signed_contract": {
"document_key": "4d7f4e29-4b58-4905-9a69-b1f9215263f5",
"signatures": [
{
"authenticity": {
"timestamp": "1970-01-01T00:00:01.080100Z",
"facial_recognition_key": "79003de0-2590-455d-9b73-426b8ca284eb",
"lang": "-35.8916627",
"lat": "-7.2226067",
"ip_address": "177.51.1.000",
"session_id": "jdifj329842"
},
"signer": {
"name": "IVANILDO DE SENA LIMA",
"email": "teste@gmail.com",
"phone": {
"country_code": "055",
"area_code": "11",
"number": "999999999"
},
"document_number": "99999999999"
},
"authentication_type": "opt-in"
}
]
}
}
“account_owner”: Os dados da empresa devem ser enviados neste objeto.
“account_owner.company_statute”: A “document_key” retornada no endpoint de upload de documentos, no momento do upload do “.zip” dos documentos societários da empresa, deve ser enviada neste campo.
“account_owner.company_representatives”: A lista com os dados dos representantes legais da empresa deve ser enviada neste objeto. Deve ser enviado, no mínimo, os representantes legais, suficientes para representar legalmente a empresa conforme seu respectivo estatuto/contrato social. A validação dos poderes de cada representante legal enviado fica a cargo do parceiro.
“account_owner.company_representatives.document_identification”: A “document_key” retornada no endpoint de upload de documentos, no momento do upload do “.zip” do documento com foto do representante, deve ser enviada neste campo.
“allowed_user”: Neste campo devem ser enviados os dados de um dos representantes legais da empresa enviado no objeto “account_owner.company_representatives”. Este usuário será o usuário administrador da conta e possuirá poderes de movimentação sobre a conta e também poderes para adicionar novos usuários administradores. O SMS/e-mail de confirmação tanto para movimentação quanto adição de novos usuários será enviado para essa pessoa.
O usuário com permissão de administrador possui plenos poderes sobre a conta (mediante autenticação de 2 fatores, via SMS ou e-mail). Sendo assim, este usuário deve possuir permissão legal para movimentá-la segundo o contrato/estatuto social da empresa. A validação dos poderes de um usuário administrador fica a cargo do parceiro.
1.2.1 Assinatura do Termo de Abertura de Conta
No payload de abertura de conta deverá ser enviado o campo signature_contract que deverá conter as informações de device scan do momento em que o usuário (Titular da conta ou usuário master) realiza o aceite do termo de abertura de cont
Objeto signed_contract
| Campo | Tipo | Descrição | Caracteres |
|---|---|---|---|
| document_key * | uuidv4 | Chave única de identificação do documento do Termo de Abertura de Conta ou Contrato de Conta Escrow. (A DOCUMENT_KEY é retornada na resposta do endpoint de Upload de documentos) | 36 |
| signatures * | list | Dados de assinatura do documento enviado. Cada item da lista, corresponde a um assinante do documento. | Objeto signatures |
Objeto signatures
| Campo | Tipo | Descrição | Caracteres |
|---|---|---|---|
| authenticity * | object | Conjunto de dados que evidenciam a assinatura eletrônica realizada pelo assinante. | Objeto authenticity |
| signer * | object | Objeto contendo os dados de um dos assinantes do documento. | Objeto signer |
| authentication_type * | enumerator | Tipo de assinatura. Sempre será "opt-in" | "opt-in" |
Objeto authenticity
| Campo | Tipo | Descrição | Caracteres |
|---|---|---|---|
| timestamp * | string | Data e hora do momento da assinatura do documento. | 27 |
| facial_recognition_key | uuidv4 | Chave única de identificação da foto da selfie do titular da conta. (A DOCUMENT_KEY é retornada na resposta do endpoint de Upload de documentos) | 36 |
| lang | string | Coordenada de longitude da geolocalização do assinante capturada no momento da assinatura. | - |
| lat | string | Coordenada de latitude da geolocalização do assinante capturada no momento da assinatura. | - |
| ip_address | string | Endereço IP do dispositivo do assinante. | - |
| session_id | string | ID da seção do assinante no momento da assinatura. | - |
Objeto signer
| Campo | Tipo | Descrição | Caracteres |
|---|---|---|---|
| name * | string | Nome do assinante. | - |
| email * | string | Email do assinante. | - |
| phone * | object | Objeto com dados do telefone do assinante | Objeto phone |
| document_number * | string | CPF do assinante. | 11 |
Objeto phone
| Campo | Descrição | Exemplo | Máx. Caracteres |
|---|---|---|---|
country_code * | string | Código DDI do telefone (https://ddi.guiamais.com.br/) | 3 |
area_code * | string | Código DDD do telefone (https://ddd.guiamais.com.br/) | 2 |
number * | string | Número de telefone (apenas números) | 10 |
Response
- MÉTODOPOST
- ENDPOINT/account
Response Body
{
"data": {
"account_info": {
"account_branch": "0001",
"account_digit": "2",
"account_number": "2359934",
"financial_institution_code": "329"
},
"account_owner": {
"document_number": "09080702000105",
"name": "VOVO LUCIA CONVENIENCIA LTDA"
},
"allowed_user": {
"document_number": "97564480084",
"name": "Juliana Tereza Bernardes"
}
},
"event_datetime": "2022-09-02 22:39:10",
"key": "\<UUID PROPOSAL-KEY\>",
"status": "pending_kyc_analysis",
"webhook_type": "account"
}
IMPORTANTE: a “key” retornada nesta resposta é a PROPOSAL-KEY do pedido de abertura da conta. Ela deve ser armazenada para leitura do webhook de abertura da conta.
A resposta da solicitação de abertura de conta sempre retornará o status “pending_kyc_analysis”.
Um número de conta será reservado para esse cliente, porém a conta ainda estará pendente de análise de KYC por parte da QI Tech. Neste momento, a conta não estará aberta e não poderá receber ou enviar recursos.
1.3. Criação da conta PF
Request
- ENDPOINT/account
- MÉTODOPOST
Request Body
{
"account_owner": {
"address": {
"street": "Avenida Sargento Geraldo Sant'Ana",
"number": "1100",
"neighborhood": "Jardim Taquaral",
"city": "São Paulo",
"state": "SP",
"postal_code": "04674225"
},
"phone": {
"country_code": "55",
"number": "912828135",
"area_code": "11"
},
"email": "juliana.tereza@yopmail.com",
"name": "Juliana Tereza Bernardes",
"person_type": "natural",
"nationality": "Brasil",
"birth_date": "1993-08-02",
"mother_name": "Patricia Monica Diaz Bascur Tieppo",
"is_pep": false,
"individual_document_number": "97564480084",
"document_identification": "8b0d8c33-01c9-4cf5-a0fa-1d2a96f4b34d",
"document_identification_type": "cnh",
"revenue_amount": 1000,
"profession": "autonomo"
},
"signed_contract": {
"document_key": "4d7f4e29-4b58-4905-9a69-b1f9215263f5",
"signatures": [
{
"authenticity": {
"timestamp": "1970-01-01T00:00:01.080100Z",
"facial_recognition_key": "79003de0-2590-455d-9b73-426b8ca284eb",
"lang": "-35.8916627",
"lat": "-7.2226067",
"ip_address": "177.51.1.000",
"session_id": "jdifj329842"
},
"signer": {
"name": "IVANILDO DE SENA LIMA",
"email": "teste@gmail.com",
"phone": {
"country_code": "055",
"area_code": "11",
"number": "999999999"
},
"document_number": "99999999999"
},
"authentication_type": "opt-in"
}
]
}
}
“account_owner”: Os dados da pessoa física titular da conta devem ser enviados neste objeto.
“account_owner.document_identification”: A “document_key” retornada no endpoint de upload de documentos.
1.3.1. Forma de envio do documento de identificação
Na abertura da conta PF, podem ser enviados dois tipos de documento (document_identification_type): cnh ou rg.
O documento de identificação pode ser enviado nos formatos “.pdf”, “.png” e “.jpeg”.
1.3.1.1. Envio de documento de identificação do tipo CNH
Caso o documento seja enviado em 2 arquivos, sendo que, a frente do documento consta em um arquivo e o verso em outro, os seguintes campos devem ser infomado no objeto account_owner do endpoint /account (1.2.2.):
Request Body
"document_identification": "\<DOCUMENT-KEY DA FRENTE DO DOCUMENTO\>",
"document_identification_back": "\<DOCUMENT-KEY DA VERSO DO DOCUMENTO\>",
"document_identification_type": "cnh",
Caso o documento seja enviado em 1 arquivo, contendo a frente e verso do documento no mesmo arquivo (foto do documento ou cnh digital), os seguintes campos devem ser infomado no objeto account_owner do endpoint /account (1.2.2.):
Request Body
"document_identification": "\<DOCUMENT-KEY DA FRENTE DO DOCUMENTO\>",
"document_identification_type": "cnh",
1.3.1.2. Envio de documento de identificação do tipo RG
Para o tipo de documento RG, sempre devem ser enviados 2 arquivos, um contendo a frente do documento e outro com o verso do documento. Para este caso os seguintes campos devem ser infomados no objeto account_owner do endpoint /account (1.2.2.):
Request Body
"document_identification": "\<DOCUMENT-KEY DA FRENTE DO DOCUMENTO\>",
"document_identification_back": "\<DOCUMENT-KEY DA VERSO DO DOCUMENTO\>",
"document_identification_type": "rg",
Response
- MÉTODOPOST
- ENDPOINT/account
Response Body
{
"data": {
"account_info": {
"account_branch": "0001",
"account_digit": "2",
"account_number": "2359934",
"financial_institution_code": "329"
},
"account_owner": {
"document_number": "97564480084",
"name": "Juliana Tereza Bernardes"
}
},
"event_datetime": "2022-09-02 22:39:10",
"key": "\<UUID PROPOSAL-KEY\>",
"status": "pending_kyc_analysis",
"webhook_type": "account"
}
IMPORTANTE: a “key” retornada nesta resposta é a PROPOSAL-KEY do pedido de abertura da conta. Ela deve ser armazenada para leitura do webhook de abertura da conta.
A resposta da solicitação de abertura de conta sempre retornará o status “pending_kyc_analysis”. Um número de conta será reservado para esse cliente, porém a conta ainda estará pendente de análise de KYC por parte da QI Tech. Neste momento, a conta não estará aberta e não poderá receber ou enviar recursos.
Para simular situações de aprovação, reprovação e analise manual pode ser utilizado o primeiro digito do CPF/CNPJ do owner da conta:
-
0 à 7 -> Análise Manual
-
8 -> Reprovação Automática
-
9 -> Aprovação Automática
Após a conclusão da análise de KYC/PLD pela QI Tech, será enviado um webhook de abertura da conta, conforme abaixo:
Webhook
- WEBHOOK_TYPEaccount
- STATUSAccount Opened
Response Body
{
"data": {
"account_info": {
"account_key": "6d30a0b1-cb90-4ceb-b1ea-5bd600cdf3c8",
"account_digit": "2",
"account_branch": "0001",
"account_number": "2359934",
"financial_institution_code": "329"
},
"allowed_user": {
"name": "Juliana Tereza Bernardes",
"document_number": "97564480084"
},
"account_owner": {
"name": "VOVO LUCIA CONVENIENCIA LTDA",
"document_number": "09080702000105"
}
},
"event_datetime": "2022-09-02 22:39:39",
"key": "\<UUID PROPOSAL-KEY\>",
"status": "account_opened",
"webhook_type": "account"
}
Neste momento será retornada “account_key” da conta e ela estará pronta para utilização.
Caso a conta não passe no processo de KYC/PLD, será enviado um webhook de conta rejeitada:
Webhook
- WEBHOOK_TYPEaccount
- STATUSAccount Rejected
Response Body
{
"data": {
"account_info": {
"account_digit": "2",
"account_branch": "0001",
"account_number": "2359934",
"financial_institution_code": "329"
},
"allowed_user": {
"name": "Juliana Tereza Bernardes",
"document_number": "97564480084"
},
"account_owner": {
"name": "VOVO LUCIA CONVENIENCIA LTDA",
"document_number": "09080702000105"
}
},
"event_datetime": "2022-09-02 22:39:39",
"key": "\<UUID PROPOSAL-KEY\>",
"status": "account_rejected",
"webhook_type": "account"
}
A propriedade allowed_user retornada apenas nos webhooks de abertura de conta de PJ, em caso de PF temos apenas a propriedade de account_info e account_owner sendo retornadas dentro do objeto de data.
1.3.2 Assinatura do Termo de Abertura de Conta
No payload de abertura de conta deverá ser enviado o campo signature_contract que deverá conter as informações de device scan do momento em que o usuário (Titular da conta ou usuário master) realiza o aceite do termo de abertura de cont
Objeto signed_contract
| Campo | Tipo | Descrição | Caracteres |
|---|---|---|---|
| document_key * | uuidv4 | Chave única de identificação do documento do Termo de Abertura de Conta ou Contrato de Conta Escrow. (A DOCUMENT_KEY é retornada na resposta do endpoint de Upload de documentos) | 36 |
| signatures * | list | Dados de assinatura do documento enviado. Cada item da lista, corresponde a um assinante do documento. | Objeto signatures |
Objeto signatures
| Campo | Tipo | Descrição | Caracteres |
|---|---|---|---|
| authenticity * | object | Conjunto de dados que evidenciam a assinatura eletrônica realizada pelo assinante. | Objeto authenticity |
| signer * | object | Objeto contendo os dados de um dos assinantes do documento. | Objeto signer |
| authentication_type * | enumerator | Tipo de assinatura. Sempre será "opt-in" | "opt-in" |
Objeto authenticity
| Campo | Tipo | Descrição | Caracteres |
|---|---|---|---|
| timestamp * | string | Data e hora do momento da assinatura do documento. | 27 |
| facial_recognition_key | uuidv4 | Chave única de identificação da foto da selfie do titular da conta. (A DOCUMENT_KEY é retornada na resposta do endpoint de Upload de documentos) | 36 |
| lang | string | Coordenada de longitude da geolocalização do assinante capturada no momento da assinatura. | - |
| lat | string | Coordenada de latitude da geolocalização do assinante capturada no momento da assinatura. | - |
| ip_address | string | Endereço IP do dispositivo do assinante. | - |
| session_id | string | ID da seção do assinante no momento da assinatura. | - |
Objeto signer
| Campo | Tipo | Descrição | Caracteres |
|---|---|---|---|
| name * | string | Nome do assinante. | - |
| email * | string | Email do assinante. | - |
| phone * | object | Objeto com dados do telefone do assinante | Objeto phone |
| document_number * | string | CPF do assinante. | 11 |
Objeto phone
| Campo | Descrição | Exemplo | Máx. Caracteres |
|---|---|---|---|
country_code * | string | Código DDI do telefone (https://ddi.guiamais.com.br/) | 3 |
area_code * | string | Código DDD do telefone (https://ddd.guiamais.com.br/) | 2 |
number * | string | Número de telefone (apenas números) | 10 |
1.4. Recuperando dados da conta
Request
- ENDPOINT/account
- MÉTODOGET
- PARAMETERSaccount_type[checking], owner_name, account_number, owner_document_number, account_status[opened, closed, blocked], page, page_size
Response:
Response Body
{
"data": [
{
"account_block_reason": null,
"account_branch": "0001",
"account_credentials": [{
"account_id": 3395,
"created_at": "2022-09-02T22:39:39",
"credential_type": {
"created_at": "2019-06-18T13:19:30",
"enumerator": "observer",
"id": 3,
"translation_path": "account.CredentialType.observer"
},
"credential_type_id": 3,
"id": 3244,
"is_active": true,
"person_key": "bffded45-5fcf-4d13-9d2a-566a0af338cc",
"updated_at": null
},
{
"account_id": 3395,
"created_at": "2022-09-02T22:39:39",
"credential_type": {
"created_at": "2019-06-18T13:19:30",
"enumerator": "requester",
"id": 2,
"translation_path": "account.CredentialType.requester"
},
"credential_type_id": 2,
"id": 3245,
"is_active": true,
"person_key": "ef48fbe4-267b-45c1-9049-75345c075486",
"updated_at": null
}
],
"account_digit": "2",
"account_documents": [],
"account_events": [{
"account_id": 3395,
"created_at": "2022-09-02T22:39:39",
"id": 5132,
"new_account_status": {
"created_at": "2019-10-11T18:58:31",
"enumerator": "opened",
"id": 1,
"translation_path": "account.AccountStatus.opened"
},
"new_account_status_id": 1,
"old_account_status": null,
"old_account_status_id": null
}],
"account_key": "6d30a0b1-cb90-4ceb-b1ea-5bd600cdf3c8",
"account_name": "Default",
"account_number": "2359934",
"account_status": {
"created_at": "2019-10-11T18:58:31",
"enumerator": "opened",
"translation_path": "account.AccountStatus.opened"
},
"account_type": {
"created_at": "2019-03-15T13:09:15",
"enumerator": "checking",
"translation_path": "account.AccountType.checking"
},
"automatic_transfer_management_status": {
"created_at": "2022-10-27T13:48:18",
"enumerator": "master"
},
"automatic_transfers": [],
"balance": 0,
"blocked_balance": 0,
"blocked_balance_events": [],
"created_at": "2022-09-02T22:39:39",
"destinations": [],
"fee": 0,
"internal_webhooks": [],
"investment_available_amount": 0,
"investment_configuration": null,
"is_system_account": false,
"owner_document_number": "09080702000105",
"owner_name": "VOVO LUCIA CONVENIENCIA LTDA",
"owner_person_key": "bffded45-5fcf-4d13-9d2a-566a0af338cc",
"permitted_person_keys": [
"bffded45-5fcf-4d13-9d2a-566a0af338cc",
"bffded45-5fcf-4d13-9d2a-566a0af338cc",
"ef48fbe4-267b-45c1-9049-75345c075486"
],
"requester_key": "ef48fbe4-267b-45c1-9049-75345c075486",
"requester_name": "Requester Name Sandbox",
"setup_fee": null,
"transactional_limit": null,
"webhook_enabled": true
}, ...
],
"pagination": {
"current_page": 1,
"next_page": null,
"rows_per_page": 100,
"total_pages": 1,
"total_rows": 8
}
}
Os campos mais pertinentes da resposta da consulta dos dados da conta são: account_branch, account_digit, account_key, account_number, balance, owner_document_number, owner_name, owner_person_key.
2 - Transferência PIX
2.1. Realizar Transferência PIX
Para realizar um PIX é necessário realizar três chamadas:
-
Criação do pedido de transferência: /baas/pix_transfer
-
Solicitação de token de validação de transferência: /baas/token_request
-
Aprovação da transferência: /baas/movement_validation
Uma transferência PIX pode ser realizada utilizando dois payloads distintos: chave PIX ou dados bancários.
2.1.1. Criação do pedido de transferência
Transferência utilizando uma chave PIX (CPF, CNPJ, E-mail, Celular ou chave aleatória)
- ENDPOINT/baas/pix_transfer
- MÉTODOPOST
Request Body
{
"pix_transfer_type": "key",
"source_account": {
"account_branch": "0001",
"account_digit": "2",
"account_number": "2359934",
"owner_document_number": "09080702000105"
},
"pix_key": "65322181032",
"transaction_amount": 45,
"requester_document_identification": "09080702000105"
}
A “pix_key” pode ser um CPF, CNPJ, E-mail, Celular ou uma Chave Aleatória (UUID), seguindo as seguintes formatações:
CPF: Número inteiro com 11 dígitos.
CNPJ: Número inteiro com 14 dígitos.
E-mail: Texto contendo ao menos um “@”.
Celular: Texto contendo os seguintes valores: “+55” + “DDD do celular“ + “Número Inteiro do Celular com no mínimo 8 e no máximo 9 dígitos”. Ex: “+5511987654321“.
Chave Aleatória: UUID.
Transferência utilizando dados da Conta Bancária (PIX Manual)
- ENDPOINT/baas/pix_transfer
- MÉTODOPOST
Request Body
{
"pix_transfer_type": "manual",
"source_account": {
"account_branch": "0001",
"account_digit": "2",
"account_number": "2359934",
"owner_document_number": "09080702000105"
},
"target_account": {
"account_branch": "0001",
"account_digit": "3",
"account_number": "12345678",
"owner_document_number": "32402502000135",
"owner_name": "Qi Tech",
"account_type": "checking_account",
"ispb": "32402502"
},
"transaction_amount": 45
}
Utilizando o PIX Manual é necessário informar o ISPB da instituição destino. Este dado é utilizado, pois existem instituições de pagamento que recebem PIX, porém não possuem código de banco. O ISPB é a base do CNPJ da instituição. Para ter acesso à lista completa de ISPB’s de cada instituição participante do PIX, basta utilizar o endpoint de consulta em nossa documentação: https://docs.qitech.com.br/reference/161-consulta-de-institui%C3%A7%C3%B5es-financeiras
Response Body
{
"data": {
"end_to_end_id": "E3240250220221120012039U3OKZZMW8",
"fee_amount": 1,
"pix_message": null,
"pix_transfer_key": "cea836b5-b02e-4f94-b1e2-4d575671c33d",
"source_account": {
"account_brach": "0001",
"account_digit": "2",
"account_number": "2359934",
"account_type": "checking",
"owner_document_number": "09080702000105",
"owner_name": "VOVO LUCIA CONVENIENCIA LTDA"
},
"target_account": {
"document_number": "***.221.81*-**",
"financial_institution": "BANCO ORIGINAL S.A."
},
"transaction_amount": 45,
"transfer_purpose": "transfer"
},
"event_datetime": "2022-09-02 22:20:47",
"operation_key": "86d80cf4-430b-4e16-910a-41798810ddcf",
"status": "pending_approval"
}
pending_approval: transferência pendente de aprovação pelo usuário administrador da conta (“allowed_user”)
sent: transferência enviada
O campo end_to_end_id retornado deve ser amarzenado e enviado no momento da aprovação da transação. É ELE QUEM GARANTE
Após realizar a primeira chamada de “/baas/pix_transfer”, é necessário solicitar o token para aprovar a transação. Para aprovar a transferência PIX, é necessário utilizar a “pix_transfer_key” retornada na solicitação de transferência e solicitar a geração de um token que será enviado ao usuário administrador da conta para aprovação (“allowed_user”).
2.1.2. Solicitação de token de validação de transferência:
- ENDPOINT/baas/token_request
- MÉTODOPOST
Request Body
{
"contact_type": "sms",
"agent_document_number": "97564480084",
"movement_payload": {
"pix_transfer_key": "cea836b5-b02e-4f94-b1e2-4d575671c33d",
"approver_document_number": "97564480084"
}
}
contact_type: é o método de autenticação de dois fatores que será utilizado no momento da aprovação da transferência, podendo ser via E-mail (“email”) ou SMS (“sms”).
approver_document_number: Deve ser informado o CPF do usuário administrador que realizará a aprovação da transferência PIX.
agent_document_number: neste campo pode ser informado o CPF do usuário master que receberá o token para aprovação de 2 fatores da transação.
A última chamada para concluir a transferência será a do “/baas/movement_validation” e o Token enviado deve ser informado no momento da aprovação da transferência PIX. A validade do Token é de 2 minutos.
O usuário administrador deve inserir na aplicação do parceiro o token recebido via E-mail ou SMS.
2.1.3. Aprovação da transferência:
- ENDPOINT/baas/movement_validation
- MÉTODOPOST
Request Body
{
"token": "248358",
"movement_payload": {
"pix_transfer_key": "cea836b5-b02e-4f94-b1e2-4d575671c33d",
"approver_document_number": "97564480084"
}
}
Reponse Body
{
"authentication_code": "287c4478a1adcd6e820e654ac1b1edf2",
"event_datetime": "2022-09-02 23:00:07",
"operation_key": "05283f8e-b9c0-47ff-a06f-9626be710f69",
"pix_transaction": {
"end_to_end_id": "E3240250220221120012039U3OKZZMW8",
"fee_amount": 1,
"pix_message": null,
"pix_transfer_key": "cea836b5-b02e-4f94-b1e2-4d575671c33d",
"pix_transfer_status": "sent",
"pix_transfer_type": "key",
"source_account": {
"account_branch": "0001",
"account_digit": "2",
"account_number": "2359934"
},
"target_account": {
"document_number": "***.221.81*-**",
"financial_institution": "BANCO ORIGINAL S.A."
},
"transaction_key": "d2ba3817-26d7-4957-ab82-24f78d910a8a",
"transfer_amount": 45
},
"status": "sent"
}
Response Body
{
"data": "{\"title\": \"Pending Transfer\", \"description\": \"The transaction (<END TO END ID DO PIX>) could not be completed and is pending confirmation.\", \"translation\": \"Não foi possível concluir a transação (<END TO END ID DO PIX>) e ela está pendente de confirmação\", \"code\": \"PXT000072\"}"
}
Caso seja retornado http error 422, a solicitação de Pix não deve ser retentada. É preciso checar o status da solicitação de transferência Pix através de um GET na rota /baas/pix/pix_transfer.
2.2. Webhook de Efetivação de um PIX
Webhook
- WEBHOOK_TYPEaccount_transaction
- SOURCE_SUB_TYPEpix_withdrawal
Response Body
{
"key": "508ebbba-0b1d-41f6-b9a2-975a4c2e925e",
"data": {
"amount": -45,
"origin": {
"name": "PIX",
"branch": "0001",
"document": "32402502000135",
"account_key": "3d0e7d50-e898-49f3-b23b-05353c8a3c72",
"account_digit": "3",
"account_number": "00003"
},
"timestamp": "2023-01-05T18:16:03.395863",
"description": "237 0001 1017372-2 ***.221.81*-** BANCO BRADESCO S.A.",
"destination": {
"name": "Default",
"branch": "0001",
"document": "23426525852",
"account_key": "508ebbba-0b1d-41f6-b9a2-975a4c2e925e",
"account_digit": "0",
"account_number": "7058818"
},
"reference_key": "aafbf4bc-58eb-45fd-899c-af44f68dfd60",
"reference_type": "pix_outgoing",
"account_balance": 99359.15,
"source_sub_type": "pix_withdrawal",
"transaction_key": "3e37a0a9-d6d2-4474-8bff-5448e446c225",
"source_sub_type_str": "Transferência de PIX"
},
"datetime": "2023-01-05T18:16:03.395863",
"webhook_type": "account_transaction"
}
2.3. Webhook de Cobrança de fee de PIX
Webhook
- WEBHOOK_TYPEaccount_transaction
- SOURCE_SUB_TYPEpix_fee
Response Body
{
"key": "508ebbba-0b1d-41f6-b9a2-975a4c2e925e",
"data": {
"amount": -0.85,
"origin": {
"name": "Fee Account",
"branch": "0001",
"document": "32402502000135",
"account_key": "3679ffd0-d52e-4492-b11c-b11c655047d3",
"account_digit": "8",
"account_number": "00005"
},
"timestamp": "2023-01-05T18:16:03.554624",
"description": "237 0001 1017372-2 ***.221.81*-** BANCO BRADESCO S.A.",
"destination": {
"name": "Default",
"branch": "0001",
"document": "23426525852",
"account_key": "508ebbba-0b1d-41f6-b9a2-975a4c2e925e",
"account_digit": "0",
"account_number": "7058818"
},
"reference_key": "aafbf4bc-58eb-45fd-899c-af44f68dfd60",
"reference_type": "pix_outgoing",
"account_balance": 99358.3,
"source_sub_type": "pix_fee",
"transaction_key": "53c7421b-1340-4625-b383-b94d350ff9b2",
"source_sub_type_str": "Tarifa de PIX"
},
"datetime": "2023-01-05T18:16:03.554624",
"webhook_type": "account_transaction"
}
2.4. Chargeback Pix
Um Chargeback Pix (Estorno) é realizado em 3 etapas:
- 1 - Iniciação do Chargeback Pix: /baas/pix_transfer
- 2 - Solicitação do token de autorização do Chargeback Pix: /baas/token_request
- 3 - Aprovação do Chargeback Pix: /baas/movement_validation
2.4.1. Iniciando Chargeback Pix
Request
Request Body
{
"is_chargeback": true,
"pix_transfer_key": "a180f2fb-0c7e-4708-b6a0-8d231770132e",
"chargeback_amount": 100.46,
"chargeback_message": "Mensagem de devolução"
}
A pix_transfer_key é a chave do Pix que creditou a conta na QI, retornada via Webhook de account_transaction.
O chargeback_amount deve ser menor ou igual ao valor do Pix que creditou a conta na QI.
Response
Response Body
{
"data": {
"pix_transfer_key": "7a71e1f7-d8d1-4cf0-9243-c0b3837a3d26",
"pix_transfer_status": "pending_approval",
"pix_transfer_type": "chargeback",
"target_account": {
"document_number": "***45762***",
"financial_institution": "ITAÚ UNIBANCO S.A."
},
"transfer_amount": 100.46
},
"event_datetime": "2023-04-28 18:19:30",
"operation_key": "ab895342-988d-4d20-ba71-f82a7b9aad1b",
"status": "pending_approval"
}
A pix_transfer_key retornada na chamada é a chave de referência do Chargeback Pix que deverá ser aprovado.