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,
"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,
"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
Object 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 |
Object 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" |
Object 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. | - |
Object 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 | Object phone |
| document_number * | string | CPF do assinante. | 11 |
Object 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
Object 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 |
Object 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" |
Object 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. | - |
Object 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 | Object phone |
| document_number * | string | CPF do assinante. | 11 |
Object 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.
2.4.2. Solicitação do token de autorização do Chargeback Pix
Request Body
{
"contact_type": "email",
"movement_payload": {
"pix_transfer_key": "7a71e1f7-d8d1-4cf0-9243-c0b3837a3d26",
"approver_document_number": "97564480084"
}
}
2.4.3. Aprovação do Chargeback Pix
Request Body
{
"contact_type": "email",
"movement_payload": {
"pix_transfer_key": "7a71e1f7-d8d1-4cf0-9243-c0b3837a3d26",
"approver_document_number": "97564480084"
}
}
3 - Transferência TED
As transferências TED só podem ser realizadas em dias úteis das 7:00 às 17:00.
3.1. Realizar Transferência TED
Para realizar uma transferência via TED é necessário realizar a seguinte chamada:
-
Solicitação de token de validação de transferência: /baas/token_request
-
Aprovação da transferência: /baas/movement_validation
Request
- ENDPOINT/baas/token_request
- MÉTODOPOST
Request Body
{
"contact_type": "sms",
"agent_document_number": "97564480084",
"movement_payload": {
"source_account": {
"account_branch": "0001",
"account_number": "9477323",
"account_digit": "0",
"owner_document_number": "38299588000107"
},
"target_account": {
"financial_institution_code": "341",
"account_branch": "0001",
"account_number": "4311337",
"account_digit": "1",
"owner_document_number": "21669721019",
"owner_name": "Nome do Titular da Conta Destino"
},
"transaction_amount": 8.86
}
}
O Token enviado deve ser informado no momento da aprovação da transferência TED, e o “movement_payload” deve ser o mesmo informado no momento da solicitação do Token.
Request
- ENDPOINT/baas/movement_validation
- MÉTODOPOST
Request Body
{
"token": "329329",
"agent_document_number": "99999999999",
"movement_payload": {
"source_account": {
"account_branch": "0001",
"account_number": "0000000",
"account_digit": "0",
"owner_document_number": "99999999000107"
},
"target_account": {
"financial_institution_code": "341",
"account_branch": "0001",
"account_number": "0000000",
"account_digit": "1",
"owner_document_number": "999999999",
"owner_name": "Nome do Titular da Conta Destino"
},
"transaction_amount": 8.86,
"approver_document_number": "999999999"
}
}
Response
- MÉTODOPOST
- ENDPOINT/baas/movement_validation
Response Body
{
"authentication_code": "e8f0fffaeb4ebad2df0417194fe6a9e5",
"origin_key": "d07f77f9-f157-4c35-a26b-567cba59e385",
"pdf_encoded_string": "\<BASE 64 DO COMPROVANTE\>",
"source_account": {
"account_branch": "0001",
"account_digit": "2",
"account_number": "2359934",
"financial_institution_compe_number": 329,
"financial_institution_name": "QI SOCIEDADE DE CRÉDITO DIRETO S.A.",
"owner_document_number": "09080702000105",
"owner_document_number_formatted": "09.080.702/0001-05",
"owner_name": "VOVO LUCIA CONVENIENCIA LTDA"
},
"source_subtype": "withdrawal",
"source_subtype_translation_ptbr": "Transferência",
"target_account": {
"account_branch": "0001",
"account_digit": "1",
"account_number": "81156",
"account_type": "checking_account",
"account_type_str": "Conta Corrente",
"financial_institution_compe_number": "001",
"financial_institution_name": "Banco do Brasil S.A.",
"owner_document_number": "10932327656",
"owner_document_number_formatted": "109.323.276-56",
"owner_name": "Lucas de Jesus Clarim"
},
"transacted_at": "2022-09-02 14:39:56",
"transacted_at_br": "2022-09-02 11:39:56",
"transacted_at_br_formatted": "21/11/2022, 11:39:56",
"transacted_at_formatted": "21/11/2022, 14:39:56",
"transaction_amount": 550,
"transaction_amount_formatted": "R$ 550,00",
"transaction_key": "32ac0781-f292-4172-b58f-3310102e6fb9"
}
O campo de “transacted_at“ estão em formato UTC.
A “transaction_key“ será utilizada posteriormente para solicitação do comprovante de transferência.
3.2. Efetivação de uma TED
Webhook
- WEBHOOK_TYPEaccount_transaction
- SOURCE_SUB_TYPEwithdrawal
Response Body
{
"key": "508ebbba-0b1d-41f6-b9a2-975a4c2e925e",
"data": {
"amount": -550,
"origin": {
"name": "TED",
"branch": "0001",
"document": "32402502000135",
"account_key": "23a4a2c8-9d82-4ebe-a90d-44fe8d839ec0",
"account_digit": "7",
"account_number": "00001"
},
"timestamp": "2023-01-05T07:35:37.127502",
"description": "001 0001 81156-1 32.402.502/0001-35 - QI Tech",
"destination": {
"name": "Default",
"branch": "0001",
"document": "23426525852",
"account_key": "508ebbba-0b1d-41f6-b9a2-975a4c2e925e",
"account_digit": "0",
"account_number": "7058818"
},
"reference_key": "58729e67-f490-4607-aafd-2fc7945d3d77",
"reference_type": "ted_outgoing",
"account_balance": 99404.15,
"source_sub_type": "withdrawal",
"transaction_key": "4ac9e80b-22d9-4097-8676-e19f84c89543",
"source_sub_type_str": "Transferência"
},
"datetime": "2023-01-05T07:35:37.127502",
"webhook_type": "account_transaction"
}
3.3. Estorno de uma TED
Webhook
- WEBHOOK_TYPEaccount_transaction
- SOURCE_SUB_TYPEwithdrawal_reversal
Response Body
{
"key": "508ebbba-0b1d-41f6-b9a2-975a4c2e925e",
"data": {
"amount": 550,
"origin": {
"name": "TED",
"branch": "0001",
"document": "32402502000135",
"account_key": "23a4a2c8-9d82-4ebe-a90d-44fe8d839ec0",
"account_digit": "7",
"account_number": "00001"
},
"timestamp": "2023-01-05T07:42:26.631137",
"description": "001 0001 81156-1 32.402.502/0001-35 - QI Tech",
"destination": {
"name": "Default",
"branch": "0001",
"document": "23426525852",
"account_key": "508ebbba-0b1d-41f6-b9a2-975a4c2e925e",
"account_digit": "0",
"account_number": "7058818"
},
"reference_key": "58729e67-f490-4607-aafd-2fc7945d3d77",
"reference_type": "ted_outgoing",
"account_balance": 99954.15,
"source_sub_type": "withdrawal_reversal",
"transaction_key": "53268774-6891-42a4-a658-42e21cef867c",
"source_sub_type_str": "Estorno de Transferência"
},
"datetime": "2023-01-05T07:42:26.631137",
"webhook_type": "account_transaction"
}
4 - Pagamento QR Code PIX
4.1. Pagando um QR Code PIX Estático
Para realizar o pagamento de um QR Code PIX Estático, é necessário realizar quatro chamadas:
-
Decodificar o QR Code PIX: /baas/pix/qrcode
-
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
A informação que deve ser utilizada para decodificação do QR Code PIX Estático é a URI do PIX Copia e Cola vinculada ao QR Code.
Exemplo de URI PIX Copia e Cola: 00020126580014br.gov.bcb.pix01360598e5d1-2cfc-4857-abf8-12d495aa0a6d52040000530398654040.225802BR5925VOVO LUCIA CONVENIENCIA L6009sao paulo610912345-78062070503***63043A5A
Request
- ENDPOINT/baas/pix/qrcode
- MÉTODOPOST
Reponse Body
{
"qr_code_payload": "\<URI DO PIX COPIA E COLA\>"
}
Response
- MÉTODOPOST
- ENDPOINT/baas/pix/qrcode
Response Body
{
"end_to_end_id": "E3240250220221120030008388062101",
"qr_code_data": {
"additional_data": null,
"amount": 30,
"ispb_number": "32402502",
"receiver_conciliation_id": "***",
"target_account_branch": "0001",
"target_account_digit": "5",
"target_account_number": "2",
"target_account_type": "checking",
"target_bank_code": 329,
"target_bank_name": "QI SOCIEDADE DE CRÉDITO DIRETO S.A.",
"target_document_number": "32402502000135",
"target_name": "QI SOCIEDADE DE CREDITO DIRETO S.A.",
"target_person_type": "legal",
"target_pix_key": "316bd44f-2202-4c33-9dc0-096192acd427"
},
"qr_code_key": "1608e022-e42d-49d8-bacf-da5844570635",
"qr_code_payload": "00020126580014br.gov.bcb.pix0136316bd44f-2202-4c33-9dc0-096192acd427520400005303986540530.005802BR5925QI SOCIEDADE DE CREDITO D6009sao paulo610912345-78062070503***63048698",
"qr_code_type": "static"
}
A requisição para pagar um PIX QR Code Estático é a mesma utilizada na transferência PIX com a as seguintes alterações: 1 - Adição de um novo campo “end_to_end_id”. Deve ser informado o mesmo valor retornado da decodificação do QR Code Estático;
2 - Informar no campo “transaction_amount“ o mesmo valor retornado no campo “qr_code_data.amount” da decodificação do QR Code Estático;
3 - Alterar o campo “pix_transfer_type” para “static“, para solicitação do pagamento via “/baas/pix_transfer”.
Request
- MÉTODOPOST
- ENDPOINT/baas/pix_transfer
Request Body
{
"pix_transfer_type": "static",
"source_account": {
"account_branch": "0001",
"account_digit": "2",
"account_number": "2359934",
"owner_document_number": "09080702000105"
},
"end_to_end_id": "E3240250220221118200949955075000",
"transaction_amount": 30,
"pix_key": "316bd44f-2202-4c33-9dc0-096192acd427",
"requester_document_identification": "09080702000105"
}
Response
- MÉTODOPOST
- ENDPOINT/baas/pix_transfer
Response Body
{
"data": {
"end_to_end_id": "E3240250220221118200949955075000",
"fee_amount": 1,
"pix_message": null,
"pix_transfer_key": "59a0da26-3223-4679-aa2c-020d46e923c1",
"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": "32402502000135",
"financial_institution": "QI SOCIEDADE DE CRÉDITO DIRETO S.A."
},
"transaction_amount": 30,
"transfer_purpose": "transfer"
},
"event_datetime": "2022-09-02 23:00:07",
"operation_key": "527f60a4-0118-4b90-adf8-d33f895c9f8f",
"status": "pending_approval"
}
Após realizar a segunda chamada no endpoint “/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”).
Request
- MÉTODOPOST
- ENDPOINT/baas/token_request
Request Body
{
"contact_type": "sms",
"agent_document_number": "97564480084",
"movement_payload": {
"pix_transfer_key": "59a0da26-3223-4679-aa2c-020d46e923c1",
"approver_document_number": "97564480084"
}
}
A última chamada para concluir o pagamento 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.
Request
- MÉTODOPOST
- ENDPOINT/baas/movement_validation
Request Body
{
"token": "957219",
"movement_payload": {
"pix_transfer_key": "59a0da26-3223-4679-aa2c-020d46e923c1",
"approver_document_number": "97564480084"
}
}
Response
- MÉTODOPOST
- ENDPOINT/baas/movement_validation
Response Body
{
"authentication_code": "4c579663bd3f369c4f5f5cd89d8e1a24",
"event_datetime": "2022-09-02 23:00:07",
"operation_key": "527f60a4-0118-4b90-adf8-d33f895c9f8f",
"pix_transaction": {
"end_to_end_id": "E3240250220221118200949955075000",
"fee_amount": 1,
"pix_message": null,
"pix_transfer_key": "59a0da26-3223-4679-aa2c-020d46e923c1",
"pix_transfer_status": "sent",
"pix_transfer_type": "static",
"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": "d5134c23-18d2-4279-bc99-459312b64bfc",
"transfer_amount": 30
},
"status": "sent"
}
A única diferença desta Response em relação a Response de Aprovação de Transferência PIX, é o valor do campo “pix_transfer_type“, que é retornado como sendo “static”.
4.2. Pagando um QR Code PIX Dinâmico
Para realizar o pagamento de um QR Code PIX Dinâmico, é necessário realizar quatro chamadas:
-
Decodificar o QR Code PIX: /baas/pix/qrcode
-
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. A informação que deve ser utilizada para decodificação do QR Code PIX Dinâmico é a URI do PIX Copia e Cola vinculada
A única alteração no “/baas/pix/qrcode“ entre é QR Code PIX Estático e o QR Code PIX Dinâmico, é a resposta do endpoint.
Response
- MÉTODOPOST
- ENDPOINT/baas/pix/qrcode
Response Body
{
"end_to_end_id": "E3240250220221120162904592385040",
"qr_code_data": {
"account_type": "checking",
"additional_data": [],
"address": "Avenida Brigadeiro Faria Lima",
"amount": 35,
"category_code": "0000",
"city": "Sao Paulo",
"created_at": "2022-09-01T20:20:11",
"days_after_due_accepted": 180,
"discount_amount": null,
"due_date": "2022-11-30",
"fee_amount": null,
"fine_amount": null,
"ispb_number": "32402502",
"original_amount": null,
"payer_document_number": "10932327656",
"payer_name": "Payer Name",
"payer_person_type": "natural",
"postal_code": "01452000",
"presented_at": "2022-09-01T16:29:04",
"question_to_payer": "QR Code Payment",
"receiver_conciliation_id": "a6c3f35b342047e58ac105a0ae0c0c6f",
"receiver_url": null,
"reduction_amount": null,
"reusable_qrcode": "yes",
"revision": 1,
"state": "SP",
"status": "active",
"target_account_branch": "0001",
"target_account_digit": "5",
"target_account_number": "2",
"target_bank_code": 329,
"target_bank_name": "QI SOCIEDADE DE CRÉDITO DIRETO S.A.",
"target_document_number": "32402502000135",
"target_name": "QI SOCIEDADE DE CREDITO DIRETO S.A.",
"target_person_type": "legal",
"target_pix_key": "316bd44f-2202-4c33-9dc0-096192acd427",
"target_trading_name": null
},
"qr_code_key": "a1bcf9be-918d-431e-ae79-a75f78337423",
"qr_code_payload": "00020126970014br.gov.bcb.pix2575qrcode-h.sandbox.qitech.app/bacen/cobv/a6c3f35b-3420-47e5-8ac1-05a0ae0c0c6f5204000053039865802BR5902QI6009Sao Paulo61080145200062070503***6304AFEE",
"qr_code_type": "dynamic_term"
}
A requisição para pagar um PIX QR Code Dinâmico é a mesma utilizada na transferência PIX com a as seguintes alterações:
1 - Adição de um novo campo “end_to_end_id”. Deve ser informado o mesmo valor retornado da decodificação do QR Code Dinâmico. 2 - Informar no campo “transaction_amount“ o mesmo valor retornado no campo “qr_code_data.amount” da decodificação do QR Code Dinâmico; 3 - Alterar o campo “pix_transfer_type” para “dynamic_term“, para solicitação do pagamento via “/baas/pix_trasnfer”. 4 - Adição de um novo campo “receiver_conciliation_id”. Deve ser informado o mesmo valor retornado da decodificaç ão do QR Code Dinâmico.
Request
- MÉTODOPOST
- ENDPOINT/baas/pix_transfer
Response Body
{
"pix_transfer_type": "dynamic_term",
"source_account": {
"account_branch": "0001",
"account_digit": "2",
"account_number": "2359934",
"owner_document_number": "09080702000105"
},
"end_to_end_id": "E3240250220221120162904592385040",
"receiver_conciliation_id": "a6c3f35b342047e58ac105a0ae0c0c6f",
"transaction_amount": 35,
"requester_document_identification": "09080702000105"
}
Response
- MÉTODOPOST
- ENDPOINT/baas/pix_transfer
Response Body
{
"data": {
"end_to_end_id": "E3240250220221120162904592385040",
"fee_amount": 0,
"pix_message": null,
"pix_transfer_key": "8ddd3bce-5130-4b5b-b7f1-40f17547a413",
"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": "32402502000135",
"financial_institution": "QI SOCIEDADE DE CRÉDITO DIRETO S.A."
},
"transaction_amount": 35,
"transfer_purpose": "transfer"
},
"event_datetime": "2022-09-02 13:45:44",
"operation_key": "c697d8d8-4520-4285-b5ec-d573fb6c1eb3",
"status": "pending_approval"
}
Após realizar a segunda chamada no endpoint “/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”).
Request
- MÉTODOPOST
- ENDPOINT/baas/token_request
Response Body
{
"contact_type": "sms",
"agent_document_number": "97564480084",
"movement_payload": {
"pix_transfer_key": "8ddd3bce-5130-4b5b-b7f1-40f17547a413",
"approver_document_number": "97564480084"
}
}
A última chamada para concluir o pagamento 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.
Request
- MÉTODOPOST
- ENDPOINT/baas/movement_validation
Response Body
{
"token": "231564",
"movement_payload": {
"pix_transfer_key": "8ddd3bce-5130-4b5b-b7f1-40f17547a413",
"approver_document_number": "97564480084"
}
}
Response
- MÉTODOPOST
- ENDPOINT/baas/movement_validation
Response Body
{
"authentication_code": "936c01a20ebf73c6d474a14bc32553b0",
"event_datetime": "2022-09-02 23:00:07",
"operation_key": "c697d8d8-4520-4285-b5ec-d573fb6c1eb3",
"pix_transaction": {
"end_to_end_id": "E3240250220221120162904592385040",
"fee_amount": 1,
"pix_message": null,
"pix_transfer_key": "8ddd3bce-5130-4b5b-b7f1-40f17547a413",
"pix_transfer_status": "sent",
"pix_transfer_type": "dynamic_term",
"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": "96e063f4-b1fb-4f93-ae30-906029764a0a",
"transfer_amount": 35
},
"status": "sent"
}
A única diferença desta Response em relação a Response de Aprovação de Transferência PIX, é o valor do campo “pix_transfer_type“, que é retornado como sendo “dynamic_term”.
5 - Gerenciar Chaves PIX
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.
5.1. Criar Chave PIX CPF, CNPJ ou Aleatória
Para criar uma chave PIX CNPJ ou Chave Aleatória, basta acionar o endpoint “/baas/pix/keys“, alterando apenas o “pix_key_type“ para “cnpj”, “cpf” ou “random_key”.
Request
- MÉTODOPOST
- ENDPOINT/baas/pix/keys
Request Body
{
"account_key": "6d30a0b1-cb90-4ceb-b1ea-5bd600cdf3c8",
"pix_key_type": "random_key"
}
ou
Request Body
{
"account_key": "6d30a0b1-cb90-4ceb-b1ea-5bd600cdf3c8",
"pix_key_type": "cnpj",
"pix_key": "09080702000105"
}
ou
payload.json
{
"account_key": "6d30a0b1-cb90-4ceb-b1ea-5bd600cdf3c8",
"pix_key_type": "cpf",
"pix_key": "03882617038"
}
Response
- MÉTODOPOST
- ENDPOINT/baas/pix/keys
Response Body
{
"account_key": "6d30a0b1-cb90-4ceb-b1ea-5bd600cdf3c8",
"created_at": "2022-09-02T18:20:52",
"pix_key": {
"account_key": "6d30a0b1-cb90-4ceb-b1ea-5bd600cdf3c8",
"created_at": "2022-09-02T18:20:51",
"pix_key": "09080702000105",
"pix_key_status": "pending_confirmation",
"pix_key_type": "cnpj",
"updated_at": "2022-09-02T18:20:51"
},
"pix_key_request_key": "d60abf67-ad9c-42ee-9089-d26c8fc855b9",
"request_data": {
"account_created_at": "2022-09-02T22:44:36",
"account_digit": "2",
"account_number": "2359934",
"account_type": "checking",
"branch_number": "0001",
"key": "09080702000105",
"owner_document_number": "09080702000105",
"owner_name": "VOVO LUCIA CONVENIENCIA LTDA",
"owner_person_type": "legal",
"trading_name": "VOVO LUCIA"
},
"request_failure_reason": null,
"request_status": "pending",
"request_type": "inclusion",
"requester_key": "ef48fbe4-267b-45c1-9049-75345c075486",
"updated_at": "2022-09-02T18:20:52"
}
No caso da Response de criação de uma Chave PIX Aleatória, o campo “pix_key“ retornará um valor nulo, já que se trata de um processo assíncrono onde a chave é gerada pelo Banco Central. Para recuperar o valor da chave aleatória gerada, é necessária realizar uma consulta à lista de chaves cadastradas em uma conta, conforme descrito no item “Consultar Chaves PIX cadastradas em uma conta, ou aguardar o webhook de inclusão.“.
Como se trata de um processo assíncrono para verificar se as chave PIX CNPJ ou CPF estão ativas, é necessário realizar uma consulta à lista de chaves cadastradas em um conta, conforme descrito no item “Consultar Chaves PIX cadastradas em uma conta", ou aguardar o webhook de inclusão.
Webhook
- WEBHOOK_TYPEkey_inclusion
Response Body
{
"pix_key": "c232142c-ddbf-41d6-a54f-3b90c28b97dc",
"account_key": "94945886-7a6f-43e6-a307-e36c959e4903",
"webhook_type": "key_inclusion",
"pix_key_status": "active",
"pix_key_request_key": "e274eb13-40b3-4902-978e-8e5fa267af53",
"pix_key_request_type": "inclusion",
"pix_key_request_status": "approved"
}
5.2. Criar Chave PIX E-mail e Celular
Para criar uma chave PIX E-mail ou Celular deve-se acionar dois endpoints:
1 - Para criação da chave: POST no endpoint “/baas/pix/keys“, alterando o campo “pix_key_type“ para “email” ou “phone_number”. Neste momento, será enviado um Token para o E-mail ou Celular informado no campo “pix_key“.
2 - Para aprovação da chave: PATCH no endpoint “/baas/pix/keys/<pix_key_request_key>“, informando o Token recebido na etapa anterior.
Request
- MÉTODOPOST
- ENDPOINT/baas/pix/keys
Request Body
{
"account_key": "6d30a0b1-cb90-4ceb-b1ea-5bd600cdf3c8",
"pix_key_type": "email",
"pix_key": "vovo.lucia@gmail.com.br"
}
ou
Request Body
{
"account_key": "6d30a0b1-cb90-4ceb-b1ea-5bd600cdf3c8",
"pix_key_type": "phone_number",
"pix_key": "+5511987654321"
}
Response
- MÉTODOPOST
- ENDPOINT/baas/pix/keys
Response Body
{
"account_key": "6d30a0b1-cb90-4ceb-b1ea-5bd600cdf3c8",
"created_at": "2022-09-02T17:41:55",
"pix_key": {
"account_key": "6d30a0b1-cb90-4ceb-b1ea-5bd600cdf3c8",
"created_at": "2022-09-02T17:41:54",
"pix_key": "pedro.pinho@qitech.com.br",
"pix_key_status": "pending_confirmation",
"pix_key_type": "email",
"updated_at": "2022-09-02T17:41:54"
},
"pix_key_request_key": "f6209b7e-82da-44a8-9cfa-6ad0a689adb2",
"request_data": {
"account_created_at": "2022-09-02T22:44:36",
"account_digit": "2",
"account_number": "2359934",
"account_type": "checking",
"branch_number": "0001",
"key": "pedro.pinho@qitech.com.br",
"owner_document_number": "09080702000105",
"owner_name": "VOVO LUCIA CONVENIENCIA LTDA",
"owner_person_type": "legal",
"trading_name": "VOVO LUCIA"
},
"request_failure_reason": null,
"request_status": "pending",
"request_type": "inclusion",
"requester_key": "ef48fbe4-267b-45c1-9049-75345c075486",
"updated_at": "2022-09-02T17:41:55"
}
IMPORTANTE: O valor retornado no campo “pix_key_request_key“ deve ser utilizado na URL da requisição para aprovação da criação da Chave PIX.
5.3. Aprovação da Chave PIX E-mail ou Celular solicitada
Request
- MÉTODOPATCH
- ENDPOINT/baas/pix/keys/PIX_KEY_REQUEST_KEY/twofa_validation
Request Body
{
"verification_code": "756816"
}
5.4. Reenviar o código de verificação
Request
- MÉTODOPATCH
- ENDPOINT/baas/pix/keys/PIX_KEY_REQUEST_KEY/resend_twofa
payload.json
{}
5.5. Consultar Chaves PIX cadastradas em uma conta
Request
- MÉTODOGET
- ENDPOINT/baas/pix/keys
- PARAMETERSaccount_key
Response
Response Body
{
"data": [
{
"account_key": "6d30a0b1-cb90-4ceb-b1ea-5bd600cdf3c8",
"created_at": "2022-09-02T17:17:31",
"pix_key": "0598e5d1-2cfc-4857-abf8-12d495aa0a6d",
"pix_key_status": "active",
"pix_key_type": "random_key",
"updated_at": "2022-09-02T17:17:31"
},
{
"account_key": "6d30a0b1-cb90-4ceb-b1ea-5bd600cdf3c8",
"created_at": "2022-09-02T18:20:51",
"pix_key": "09080702000105",
"pix_key_status": "active",
"pix_key_type": "cnpj",
"updated_at": "2022-09-02T18:20:51"
}
]
}
5.6. Exclusão de Chaves PIX
Request
- MÉTODODELETE
- ENDPOINT/baas/pix/keys/PIX-KEY
Payload:
Response
Response Body
{
"account_key": "6d30a0b1-cb90-4ceb-b1ea-5bd600cdf3c8",
"created_at": "2022-09-02T20:00:36",
"pix_key": {
"account_key": "6d30a0b1-cb90-4ceb-b1ea-5bd600cdf3c8",
"created_at": "2022-09-02T18:20:51",
"pix_key": "09080702000105",
"pix_key_status": "inactivated",
"pix_key_type": "cnpj",
"updated_at": "2022-09-02T20:00:36"
},
"pix_key_request_key": "dced4317-c1e7-4da4-a75a-42f855c7598e",
"request_data": {},
"request_failure_reason": null,
"request_status": "approved",
"request_type": "deletion",
"requester_key": "ef48fbe4-267b-45c1-9049-75345c075486",
"updated_at": "2022-09-02T20:00:36"
}
6 - Gerar QR Code PIX
6.1. Gerando QR Code PIX Estático
O QR Code é criado a partir de uma Chave PIX ativa cadastrada em uma conta. Após a geração do QR Code, serão retornados tanto a URI do PIX Copia e Cola vinculada ao QR Code, como também o base64 da imagem do QR Code (caso solicitado).
A imagem do QR Code pode ser gerada pelo próprio parceiro a partir da URI do PIX Copia e Cola.
Para gerar um QR Code PIX Estático será usada apenas uma requisição:
Request
- MÉTODOPOST
- ENDPOINT/baas/qrcode/static
Request Body
{
"pix_key": "0598e5d1-2cfc-4857-abf8-12d495aa0a6d",
"amount": 35.00,
"receiver_name": "Tywin Lannister",
"qr_code_format": "both"
}
No campo qr_code_format poderá ser informado os valores “image”, “payload“ e “both”.
- “image”: será retornado o campo com o base64 da imagem do QR Code PIX.
- “payload”: será retornado o campo com o base64 da URI do PIX Copia e Cola do QR Code PIX.
- “both”: serão retornados os dois campos.
Response
- MÉTODOPOST
- ENDPOINT/baas/qrcode/static
Response Body
{
"external_reference_key": null,
"image": "\<BASE 64 DO QR CODE PIX\>",
"payload": "MDAwMjAxMjY0NzAwMTRici5nb3YuYmNiLnBpeDAxMjVwZWRyby5waW5ob0BxaXRlY2guY29tLmJyNTIwNDAwMDA1MzAzOTg2NTQwNTM1LjAwNTgwMkJSNTkxNVR5d2luIExhbm5pc3RlcjYwMDlzYW8gcGF1bG82MTA5MTIzNDUtNzgwNjIwNzA1MDMqKio2MzA0M0QzMA",
"revision": null
}
6.2. Gerando QR Code PIX Dinâmico
Existem dois tipos de QR Code Dinâmico. O QR Code Dinâmico com Pagamento Instantâneo e o QR Code Dinâmico com Vencimento.
6.2.1. Gerando QR Code PIX Dinâmico com Vencimento
É um tipo de QR Code PIX que funciona de forma muito semelhante a um boleto bancário, podendo possuir informação de vencimento, multa, juros por atraso e desconto por pagamento antecipado. Para gerar ester tipo de QR Code PIX é necessário apenas uma requisição no Endpoint “/baas/qrcode/dynamic“.
Request
- MÉTODOPOST
- ENDPOINT/baas/qrcode/dynamic
Request Body
{
"amount": 100,
"qr_code_type": "dynamic_term",
"occurrence_type": "registration",
"max_payment_days": 180,
"expiration_date": "2025-09-24",
"pix_key": "0598e5d1-2cfc-4857-abf8-12d495aa0a6d",
"payer_name": "QI Tech",
"payer_document_number": "98765432100",
"payer_person_type": "natural",
"payer_request": "O que voce achou da experiencia",
"rebate_amount": 0,
"interest_amount": 1,
"fine_amount": 2,
"discounts": [{
"limit_date": "2023-02-24",
"amount": 20,
"discount_type": "absolute"
}],
"additional_data": [{
"\<tag_name\>": "\<tag_value\>"
}]
}
occurrence_type: neste campo é informada a ação pretendida. Podem ser: registration, edit, write_off
- registration: Para criar um novo QR Code
- edit: Para editar um QR Code já existente (Conforme descrito no item abaixo).
- write_off: para baixar um QR Code ativo.
interest_amount: valor em reais (R$) de juros cobrados por dia de atraso.
fine_amount: valor da multa por atraso, em reais (R$).
discounts: informação do desconto por pagamento antecipado. Caso não seja aplicável, enviar uma lista vazia ([]).
additional_data: são metatags customizáveis que podem ser apresentadas para o pagador no momento do pagamento. Seguem o seguinte padrão: ”<tag_name\>”: “<**tag_value **\>“.
tag_name possui uma limitação de 100 caracteres e tag_value possui uma limitação de 320 caracteres.
Response
- MÉTODOPOST
- ENDPOINT/baas/qrcode/dynamic
Response Body
{
"qr_code_type": "dynamic_term",
"amount": 100,
"expiration_seconds": null,
"max_payment_days": 180,
"receiver_conciliation_id": "3bd19ada234141bf9f1fc5ce0b216723",
"payer_name": "QI Tech",
"payer_document_number": "98765432100",
"payer_person_type": "natural",
"payer_request": "O que voce achou da experiencia",
"pix_message": null,
"modality_alteration": false,
"expiration_date": "2025-09-24",
"rebate_amount": 10,
"interest_amount": 10,
"fine_amount": 10,
"paid_amount": null,
"discounts": [{
"discount_type": "absolute",
"limit_date": "2023-02-24",
"amount": 20
}],
"additional_data": [{
"\<tag_name\>": "\<tag_value\>"
}],
"origin": "system",
"origin_key": null,
"pix_key": "0598e5d1-2cfc-4857-abf8-12d495aa0a6d",
"qr_code_key": "3bd19ada-2341-41bf-9f1f-c5ce0b216723",
"occurrence_type": "registration",
"end_to_end_id": null,
"base_64": "MDAwMjAxMjY5NzAwMTRici5nb3YuYmNiLnBpeDI1NzVxcmNvZGUtaC5zYW5kYm94LnFpdGVjaC5hcHAvYmFjZW4vY29idi8zYmQxOWFkYS0yMzQxLTQxYmYtOWYxZi1jNWNlMGIyMTY3MjM1MjA0MDAwMDUzMDM5ODY1ODAyQlI1OTI1Vk9WTyBMVUNJQSBDT05WRU5JRU5DSUEgTDYwMDdMaW1laXJhNjEwODEzNDgwMjkwNjIwNzA1MDMqKio2MzA0QzNGNg",
"image": "\<BASE 64 DO QR CODE PIX\>",
"source_account_branch": null,
"source_account_financial_institution": null,
"source_account_ispb": null,
"source_account_number": null,
"source_account_digit": null,
"qr_code_occurrence_key": "b6777e78-e00c-4e9f-9b44-aa7b551c11e4"
}
O campo “base_64“ é a URI do PIX Copia e Cola vinculado a este QR Code PIX Dinâmico.
6.2.2. Gerando QR Code PIX Dinâmico com Pagamento Instantâneo
É um tipo de QR Code PIX semelhante ao Estático, porém facilita a conciliação por parte do recebedor do pagamento e pode ter vencimento intradia (podendo durar apenas 5 minutos, por exemplo). Para gerar este tipo de QR Code PIX é necessário apenas uma requisição no Endpoint “/baas/qrcode/dynamic”.
Request
- MÉTODOPOST
- ENDPOINT/baas/qrcode/dynamic
Request Body
{
"amount": 100,
"occurrence_type": "registration",
"qr_code_type": "dynamic_instant",
"pix_key": "0598e5d1-2cfc-4857-abf8-12d495aa0a6d",
"expiration_seconds": 360,
"payer_name": "QI Tech",
"payer_document_number": "98765432100",
"payer_person_type": "natural",
"payer_request": "Valor referente a compra 1234",
"additional_data": [{
"\<tag_name\>": "\<tag_value\>"
}]
}
Response
- MÉTODOPOST
- ENDPOINT/baas/qrcode/dynamic
Response Body
{
"qr_code_type": "dynamic_instant",
"amount": 100,
"expiration_seconds": 360,
"max_payment_days": null,
"receiver_conciliation_id": "8e5af204fa5844eca9707c4facc5e5f5",
"payer_name": "QI Tech",
"payer_document_number": "98765432100",
"payer_person_type": "natural",
"payer_request": "Valor referente a compra 1234",
"pix_message": null,
"modality_alteration": false,
"expiration_date": null,
"rebate_amount": null,
"interest_amount": null,
"fine_amount": null,
"paid_amount": null,
"discounts": [],
"additional_data": [{
"\<tag_name\>": "\<tag_value\>"
}],
"origin": "system",
"origin_key": null,
"pix_key": "0598e5d1-2cfc-4857-abf8-12d495aa0a6d",
"qr_code_key": "8e5af204-fa58-44ec-a970-7c4facc5e5f5",
"occurrence_type": "registration",
"end_to_end_id": null,
"base_64": "MDAwMjAxMjY4ODAwMTRici5nb3YuYmNiLnBpeDI1NjZxcmNvZGUtaC5zYW5kYm94LnFpdGVjaC5hcHAvYmFjZW4vOGU1YWYyMDRmYTU4NDRlY2E5NzA3YzRmYWNjNWU1ZjU1MjA0MDAwMDUzMDM5ODY1ODAyQlI1OTI1Vk9WTyBMVUNJQSBDT05WRU5JRU5DSUEgTDYwMDdMaW1laXJhNjEwODEzNDgwMjkwNjIwNzA1MDMqKio2MzA0M0RBRA",
"image": "\<BASE 64 DO QR CODE PIX\>",
"source_account_branch": null,
"source_account_financial_institution": null,
"source_account_ispb": null,
"source_account_number": null,
"source_account_digit": null,
"qr_code_occurrence_key": "838e4bd3-36c9-4aa8-9be8-04079bbe8d1a"
}
6.2.3. Editar dados de QR Code PIX Dinâmico
Para editar os dados de um QR Code PIX Dinâmico, é necessário informar a “qr_code_key“ do QR Code PIX e “occurrence_type” igual a “edit”. Nesse caso, é preciso reenviar todos os dados novamente.
Request
- MÉTODOPOST
- ENDPOINT/baas/qrcode/dynamic
Request Body
{
"qr_code_key": "3bd19ada-2341-41bf-9f1f-c5ce0b216723",
"amount": 200,
"qr_code_type": "dynamic_term",
"occurrence_type": "edit",
"max_payment_days": 180,
"expiration_date": "2025-09-24",
"pix_key": "0598e5d1-2cfc-4857-abf8-12d495aa0a6d",
"payer_name": "QI Tech",
"payer_document_number": "98765432100",
"payer_person_type": "natural",
"payer_request": "O que voce achou da experiencia",
"rebate_amount": 0,
"interest_amount": 1,
"fine_amount": 2,
"discounts": [{
"limit_date": "2023-02-24",
"amount": 20,
"discount_type": "absolute"
}],
"additional_data": [{
"\<tag_name\>": "\<tag_value\>"
}]
}
Request
- MÉTODOPOST
- ENDPOINT/baas/qrcode/dynamic
Response Body
{
"qr_code_type": "dynamic_term",
"amount": 200,
"expiration_seconds": null,
"max_payment_days": 180,
"receiver_conciliation_id": "3bd19ada234141bf9f1fc5ce0b216723",
"payer_name": "QI Tech",
"payer_document_number": "98765432100",
"payer_person_type": "natural",
"payer_request": "O que voce achou da experiencia",
"pix_message": null,
"modality_alteration": false,
"expiration_date": "2025-09-24",
"rebate_amount": 10,
"interest_amount": 10,
"fine_amount": 10,
"paid_amount": null,
"discounts": [{
"discount_type": "absolute",
"limit_date": "2023-02-24",
"amount": 20
}],
"additional_data": [{
"\<tag_name\>": "\<tag_value\>"
}],
"origin": "system",
"origin_key": null,
"pix_key": "0598e5d1-2cfc-4857-abf8-12d495aa0a6d",
"qr_code_key": "3bd19ada-2341-41bf-9f1f-c5ce0b216723",
"occurrence_type": "edit",
"end_to_end_id": null,
"base_64": "MDAwMjAxMjY5NzAwMTRici5nb3YuYmNiLnBpeDI1NzVxcmNvZGUtaC5zYW5kYm94LnFpdGVjaC5hcHAvYmFjZW4vY29idi8zYmQxOWFkYS0yMzQxLTQxYmYtOWYxZi1jNWNlMGIyMTY3MjM1MjA0MDAwMDUzMDM5ODY1ODAyQlI1OTI1Vk9WTyBMVUNJQSBDT05WRU5JRU5DSUEgTDYwMDdMaW1laXJhNjEwODEzNDgwMjkwNjIwNzA1MDMqKio2MzA0QzNGNg",
"image": "\<BASE 64 DO QR CODE PIX\>",
"source_account_branch": null,
"source_account_financial_institution": null,
"source_account_ispb": null,
"source_account_number": null,
"source_account_digit": null,
"qr_code_occurrence_key": "d9c01f70-26bc-429d-afd1-038bd3c235b2"
}
6.3. Baixar QR Code PIX Dinâmico
Para baixar um QR Code PIX Dinâmico, é necessário informar a “qr_code_key“ do QR Code PIX e “occurrence_type” igual a “write_off”.
Request
- MÉTODOPOST
- ENDPOINT/baas/qrcode/dynamic
Request Body
{
"qr_code_key": "3bd19ada-2341-41bf-9f1f-c5ce0b216723",
"occurrence_type": "write_off"
}
Response
- MÉTODOPOST
- ENDPOINT/baas/qrcode/dynamic
Response Body
{
"qr_code_type": "dynamic_term",
"amount": null,
"expiration_seconds": 86400,
"max_payment_days": null,
"receiver_conciliation_id": "3bd19ada234141bf9f1fc5ce0b216723",
"payer_name": null,
"payer_document_number": null,
"payer_person_type": "natural",
"payer_request": null,
"pix_message": null,
"modality_alteration": false,
"expiration_date": null,
"rebate_amount": null,
"interest_amount": null,
"fine_amount": null,
"paid_amount": null,
"discounts": [],
"additional_data": [],
"origin": "system",
"origin_key": null,
"pix_key": "0598e5d1-2cfc-4857-abf8-12d495aa0a6d",
"qr_code_key": "3bd19ada-2341-41bf-9f1f-c5ce0b216723",
"occurrence_type": "write_off",
"end_to_end_id": null,
"base_64": null,
"image": null,
"source_account_branch": null,
"source_account_financial_institution": null,
"source_account_ispb": null,
"source_account_number": null,
"source_account_digit": null,
"qr_code_occurrence_key": "46001adf-ffe2-4534-b60e-f6c16b9af56e"
}
7 - Registrar, Alterar e Pagar boletos bancários
7.1. Consulta de Carteiras de Cobrança
Para registrar, alterar e pagar boletos, é preciso, primeiramente, possuir o Código da Carteira de Cobrança (Requester Profile Code) vinculada a uma conta. Toda conta já nasce com uma Carteira de Cobrança vinculada.
O Código da Carteira de Cobrança segue o seguinte padrão:
”No. do banco” + “código da carteira” + “No. agência da conta” + “No. da Conta com 7 caracteres e sem dígito“. Por padrão, na QI Tech, os números do banco, do código da carteira e agência sempre serão “329”, “09” e “0001”, respectivamente. ex: “329-09-0001-2359934”.
Caso seja necessário recuperar a lista de Códigos de Carteira de Cobrança de cada conta, deve ser utilizado o seguinte endpoint:
Request
- MÉTODOGET
- ENDPOINT/bank_slip/requester_profiles
Response
Response Body
{
"requester_profile_codes": [
"329-09-0001-1467576",
"329-09-0001-5747500",
"329-09-0001-2730579",
"329-09-0001-2359934"
]
}
O registro, alteração e baixa de boletos, funciona através da dinâmica de ocorrências. Cada ocorrência é enviada para a QI Tech e encaminhada para a base centralizadora de boletos. As ocorrências podem ser aceitas ou rejeitadas pelo base centralizadora de boletos. A resposta a respeito da aceitação ou rejeição das ocorrências é enviada via webhook ao parceiro
7.2. Registrar Boleto
Para realizar o registro de um boleto, é necessário enviar uma ocorrência de registro, conforme descrito no endpoint abaixo:
Request
- MÉTODOPOST
- ENDPOINT/multibank_instruction?use_multi_process=true
Request Body
{
"occurrences": [
{
"amount": 800,
"our_number": 1,
"automatic_bankruptcy_protest": false,
"bank_teller_instructions": "Não aceitar após vencimento",
"days_to_bankruptcy_protest": 0,
"document_number": "123456/01",
"expiration": "2022-12-01",
"fine_percentage": "2",
"interest_daily_value": "0.34",
"occurrence_type": "registration",
"payer_address": "Rua Carlos Sampaio, 123",
"payer_document": "41184562067",
"payer_name": "João Ninguem",
"payer_person_type": "natural",
"payer_postal_code_root": "15800",
"payer_postal_code_suffix": "020",
"registration_institution_enumerator": "qi_scd",
"requester_profile": 9,
"requester_profile_code": "329-09-0001-2359934"
}
]
}
O nosso número bancário (“our_number”) é o ID do boleto dentro da carteira de cobrança. Ele deve ser um ID incremental. O nosso número bancário (“***our_number”) deve ser gerado pelo parceiro e informado no momento do registro do boleto.
IMPORTANTE: O boleto deve ser localizado através da chave: nosso número bancário (“our_number”) + Código da Carteira de Cobrança (“requester_profile_code“).
Response
- MÉTODOPOST
- ENDPOINT/multibank_instruction?use_multi_process=true
Response Body
{
"file_info": {
"beneficiary_code": null,
"beneficiary_name": null,
"file_sequence_id": null,
"file_type_identifier": null,
"file_type_literal": null,
"service_code": null,
"service_literal": null,
"wrote_at": null
},
"occurrence_stats": {
"bank_slip_edit": 0,
"bankruptcy_protest_request": 0,
"cancel_rebate": 0,
"extension": 0,
"notary_office_entry": 0,
"notary_office_exit": 0,
"notary_office_payment": 0,
"notification": 0,
"payment": 0,
"payment_notice": 0,
"payment_write_off": 0,
"protest_cancel_and_write_off_request": 0,
"protest_cancel_request": 0,
"protest_remove_request": 0,
"protest_request": 0,
"rebate": 0,
"registration": 1,
"write_off": 0
},
"semantic_errors": []
}
A resposta sobre a aceitação ou rejeição do registro do boleto será informada através do seguinte webhook.
Webhook
- WEBHOOK_TYPEbank_slip.status_change
- STATUSregistered
Response Body
{
"key": "41927fa9-f9ed-4797-b48a-6ac68e58dc17",
"data": {
"expiration": "2022-12-01",
"our_number": 1,
"bank_slip_key": "41927fa9-f9ed-4797-b48a-6ac68e58dc17",
"rebate_amount": 0,
"occurrence_type": "registration",
"occurrence_feedback": "confirmed",
"occurrence_sequence": 0,
"requester_profile_code": "329-09-0001-2359934",
"glados_occurrence_reasons": null,
"cnab_file_occurrence_order": 1,
"registration_institution_occurrence_date": "2022-11-21"
},
"status": "registered",
"webhook_type": "bank_slip.status_change",
"event_datetime": "2022-11-22 00:41:32"
}
Para vincular o webhook enviado a um boleto, deve-se utilizar o nosso número bancário (“our_number”) e o Código da Carteira de Cobrança (“requester_profile_code“).
Assim que o registro do boleto é aceito pela base centralizadora, é retornado no webhook a chave UUID do boleto (“bank_slip_key“). Guarde essa chave pois através dela será possível recuperar as informações do boleto.
7.2. Alterar Dados do Boleto
Para alterar os dados de um boleto, é necessário enviar uma ocorrência. Cada possível alteração possui sua ocorrência correspondente. A lista de ocorrências para alteração dos dados de um boleto pode ser verificada em nossa documentação Enviar instrução de Boleto[LINK]).
7.3. Solicitação de 2ª via de boleto
Após o registro do boleto, pode ser solicitada a geração de um arquivo “.pdf” do boleto, contendo os dados para pagamento.
Request
- MÉTODOPOST
- ENDPOINT/bank_slip/2-way/BANKSLIP-KEY
Payload:
Response
Response Body
{
...
"bank_slip_file": [{
"barcode": "32991918600000800000001090000000000123599340",
"created_at": "2022-11-21T23:29:45",
"digitable_line": "32990001039000000000101235993407191860000080000",
"url": "https://storage.googleapis.com/sandbox-bank-slip-api/bank-slip-pdf/41927fa9-f9ed-4797-b48a-6ac68e58dc17_1.pdf"
}],
...
}
Serão retornados todos os dados do boleto e o link para download do “.pdf” será informado no objeto “bank_slip_file.url“.
7.4. Consultar dados de um Boleto
Os dados de um boleto podem ser consultados de duas formas diferentes.
7.4.1. Consulta através da linha digitável
A linha digitável de um boleto é uma série numérica que traz em si as informações do boleto. Esta série numérica é digitada pelo usuário pagador do boleto no internet-banking do banco pagador.
Exemplo de linha digitável: 32990001031000000000902000000204685640000100000
Através da linha digitável, podem ser consultados os dados do boleto:
Request
- MÉTODOGET
- ENDPOINT/bank_slip/payment
- PARAMETERSdigitable_line
Response
Response Body
{
"barcode": "32991918600000800000001090000000000123599340",
"beneficiary_bank_code": "329",
"beneficiary_document_number": "09080702000105",
"beneficiary_legal_name": "VOVO LUCIA CONVENIENCIA LTDA",
"beneficiary_person_type": "legal",
"calculated_internally": true,
"calculation_date": "2022-11-21",
"calculation_model": 1,
"digitable_line": "32990001039000000000101235993407191860000080000",
"discount_amount": "0",
"expiration_date": "2022-12-01",
"expired_as_of_payment_date": false,
"expired_as_of_today": false,
"factual_expiration_date": "2022-12-01",
"fine_amount": "0",
"guarantor_document": null,
"guarantor_name": null,
"interest_amount": "0",
"max_payment_date": "2023-05-30",
"nominal_amount": "800.00",
"payer_document_number": "41184562067",
"payer_legal_name": "Jo_o Ninguem",
"payer_person_type": "natural",
"payment_date": "2022-11-21",
"rebate_amount": "0.0",
"total_amount": "800.0",
"valid_payment_amount": true,
"valid_payment_calculation": true,
"valid_payment_time_frame": true
}
7.4.2. Consulta através da Chave do Boleto
Assim que o registro do boleto é aceito pela base centralizadora, é retornado no webhook a chave UUID do boleto (“bank_slip_key“). Através dessa chave é possível recuperar as informações do boleto:
Request
- MÉTODOGET
- ENDPOINT/bank_slip/BANKSLIP-KEY
Request Body
{
"barcode": "32991918600000800000001090000000000123599340",
"beneficiary_bank_code": "329",
"beneficiary_document_number": "09080702000105",
"beneficiary_legal_name": "VOVO LUCIA CONVENIENCIA LTDA",
"beneficiary_person_type": "legal",
"calculated_internally": true,
"calculation_date": "2022-11-21",
"calculation_model": 1,
"digitable_line": "32990001039000000000101235993407191860000080000",
"discount_amount": "0",
"expiration_date": "2022-12-01",
"expired_as_of_payment_date": false,
"expired_as_of_today": false,
"factual_expiration_date": "2022-12-01",
"fine_amount": "0",
"guarantor_document": null,
"guarantor_name": null,
"interest_amount": "0",
"max_payment_date": "2023-05-30",
"nominal_amount": "800.00",
"payer_document_number": "41184562067",
"payer_legal_name": "Jo_o Ninguem",
"payer_person_type": "natural",
"payment_date": "2022-11-21",
"rebate_amount": "0.0",
"total_amount": "800.0",
"valid_payment_amount": true,
"valid_payment_calculation": true,
"valid_payment_time_frame": true
}
7.5. Pagar Boleto
Para realizar o pagamento de um Boleto é necessário realizar duas chamadas:
-
Solicitação de token de validação de transferência: /baas/token_request
-
Aprovação da transferência: /baas/movement_validation
Request
- MÉTODOPOST
- ENDPOINT/baas/token_request
Request Body
{
"contact_type": "email",
"agent_document_number": "97564480084",
"movement_payload": {
"resource_account_key": "6d30a0b1-cb90-4ceb-b1ea-5bd600cdf3c8",
"digitable_line": "32990001031000699926165000000201993810000003500"
}
}
O Token enviado deve ser informado no momento da aprovação do pagamento do boleto, e o “movement_payload” deve ser o mesmo informado no momento da solicitação do Token.
Request
- MÉTODOPOST
- ENDPOINT/baas/movement_validation
Request Body
{
"token": "358192",
"movement_payload": {
"resource_account_key": "6d30a0b1-cb90-4ceb-b1ea-5bd600cdf3c8",
"digitable_line": "32990001031000699926165000000201993810000003500"
}
}
Response
- MÉTODOPOST
- ENDPOINT/baas/movement_validation
Response Body
{
"authentication_code": "7bf20f1721ecc043d2a16a20ae668b01",
"bank_slip": {
"beneficiary": {
"document_number": "32402502000135",
"document_number_formatted": "32.402.502/0001-35",
"name": "QI SCD"
},
"digitable_line": "32990001031000699926165000000201993810000003500",
"expiration_date": "2023-06-14",
"expiration_date_formatted": "14/06/2023",
"financial_institution_compe_number": "329",
"financial_institution_name": "QI SOCIEDADE DE CRÉDITO DIRETO S.A.",
"payer": {
"document_number": "10932327656",
"document_number_formatted": "109.323.276-56",
"name": "Lucas Clarim"
},
"payment_date": "2022-11-22",
"payment_date_formatted": "22/11/2022",
"payment_key": "13b35108-0fdc-44ab-b86d-5dda12dc8dce"
},
"origin_key": "13b35108-0fdc-44ab-b86d-5dda12dc8dce",
"pdf_encoded_string": "\<BASE 64 DO COMPROVANTE\>",
"source_account": {
"account_branch": "0001",
"account_digit": "2",
"account_number": "2359934",
"financial_institution_compe_number": 329,
"financial_institution_name": "QI SOCIEDADE DE CRÉDITO DIRETO S.A.",
"owner_document_number": "09080702000105",
"owner_document_number_formatted": "09.080.702/0001-05",
"owner_name": "VOVO LUCIA CONVENIENCIA LTDA"
},
"source_subtype": "bank_slip_payment",
"source_subtype_translation_ptbr": "Pagamento de Boleto",
"transacted_at": "2022-11-22 12:26:21",
"transacted_at_br": "2022-11-22 09:26:21",
"transacted_at_br_formatted": "22/11/2022, 09:26:21",
"transacted_at_formatted": "22/11/2022, 12:26:21",
"transaction_amount": 35,
"transaction_amount_formatted": "R$ 35,00",
"transaction_key": "eee862b9-7f2e-4eea-b04a-fa0e89442618"
}
7.6. Notificação de aviso de recebimento de um Boleto
No momento em que um boleto é pago em outro banco, é enviado um aviso de que este boleto foi pago em tempo real. A Liquidação financeira do pagamento ocorrerá no próximo dia útil.
Webhook
- WEBHOOK_TYPEbank_slip.status_change
- STATUSpayment_notice
Response Body
{
"key": "945e191d-1a78-4a28-8669-000b7e4a3522",
"data": {
"our_number": 1,
"paid_amount": 800,
"payment_bank": 341,
"bank_slip_key": "41927fa9-f9ed-4797-b48a-6ac68e58dc17",
"payment_method": 2,
"payment_origin": 3,
"occurrence_type": "payment_notice",
"occurrence_feedback": "confirmed",
"occurrence_sequence": 0,
"requester_profile_code": "329-09-0001-2359934",
"registration_institution": "qi_scd",
"cnab_file_occurrence_order": 1,
"registration_institution_occurrence_date": "2022-11-02"
},
"status": "payment_notice",
"webhook_type": "bank_slip.status_change",
"event_datetime": "2022-11-21 23:02:02"
}
payment_method: é o meio de pagamento do boleto, podendo ser:
“credit_card”: cartão de crédito
”cash”: dinheiro
”account_debit”: débito em conta
”check”: cheque
payment_origin: é a origem do local do pagamento do boleto, podendo ser:
“internet”: Internet Banking
”phisical_cashier”: Caixa do Banco (“boca do caixa”)
”taa”: Terminal de auto-atendimento
”eletronic_file”: CNAB de liquidação
”call_center”: Call Center
”dda”: DDA (Débito Direto Autorizado)
”corban”: Lotérica - Correspondente Bancário
A informação de Método de Pagamento (“payment_method“) e Origem do Pagamento (“payment_origin“), são dados informados no momento do pagamento do boleto, sua consistência e veracidade fica a cargo da instituição que processou tal pagamento.
8 - Movimentações, Comprovantes e Extratos
Esse manual contém a estrutura/informações dos nossos produtos de Banking as a Service, porém também cabe a utilização como forma documentação de nossos endpoints.
8.1. Movimentações
Para toda e qualquer movimentação será enviado um webhook de “account_transaction“.
Cada transação possui um tipo de classificação (Source Sub Type). Essa classificação é utilizada para categorizar cada movimentação na conta. A lista de Source Sub Types pode ser vista no Anexo I deste manual.
Os créditos em conta resultarão em um webhook com “data.amount” positivo, “data.origin“ sendo a conta de origem dos recursos e a “data.destination“ sendo a conta de destino dos recursos:
Webhook
- WEBHOOK_TYPEaccount_transaction
Response Body: Pix
{
"key": "\<ACCOUNT-KEY\>",
"data": {
"amount": 1000000,
"origin": {
"name": "Treasury Account",
"branch": "0001",
"document": "32402502000135",
"account_key": "5d068423-6094-49e4-b15b-7740038295a8",
"account_digit": "5",
"account_number": "00002"
},
"timestamp": "2022-09-02T21:36:33.446120",
"description": "329 0001 00002-5 32.402.502/0001-35 - QI SOCIEDADE DE CRÉDITO DIRETO S.A.",
"destination": {
"name": "Default",
"branch": "0001",
"document": "09080702000105",
"account_key": "6d30a0b1-cb90-4ceb-b1ea-5bd600cdf3c8",
"account_digit": "2",
"account_number": "2359934"
},
"reference_key": "983b4a28-7de6-4e71-97ef-60fb50c7b013",
"reference_type": "movement_request",
"account_balance": 1000000,
"source_sub_type": "internal_funds_transfer",
"transaction_key": "67a62397-2c32-4768-8485-ec9129a46654",
"source_sub_type_str": "Transferência Interna",
"transaction_details": {
"payer_name": "0001",
"receiver_name": "Default",
"payer_account_digit": "5",
"payer_account_branch": "",
"payer_account_number": "1111111",
"payer_document_number": "66681638999999",
"receiver_account_digit": "6",
"receiver_account_branch": "0000",
"receiver_account_number": "34256449809",
"receiver_conciliation_id": null,
"receiver_document_number": "00809641658"
}
},
"datetime": "2022-09-02T21:36:33.446120",
"webhook_type": "account_transaction"
}
Response Body: Outras transações
{
"key": "\<ACCOUNT-KEY\>",
"data": {
"amount": 1000000,
"origin": {
"name": "Treasury Account",
"branch": "0001",
"document": "32402502000135",
"account_key": "5d068423-6094-49e4-b15b-7740038295a8",
"account_digit": "5",
"account_number": "00002"
},
"timestamp": "2022-09-02T21:36:33.446120",
"description": "329 0001 00002-5 32.402.502/0001-35 - QI SOCIEDADE DE CRÉDITO DIRETO S.A.",
"destination": {
"name": "Default",
"branch": "0001",
"document": "09080702000105",
"account_key": "6d30a0b1-cb90-4ceb-b1ea-5bd600cdf3c8",
"account_digit": "2",
"account_number": "2359934"
},
"reference_key": "983b4a28-7de6-4e71-97ef-60fb50c7b013",
"reference_type": "movement_request",
"account_balance": 1000000,
"source_sub_type": "internal_funds_transfer",
"transaction_key": "67a62397-2c32-4768-8485-ec9129a46654",
"source_sub_type_str": "Transferência Interna",
},
"datetime": "2022-09-02T21:36:33.446120",
"webhook_type": "account_transaction"
}
Os débitos em conta resultarão em um webhook com “data.amount” negativo, “data.origin“ sendo a conta destinatária dos recursos e a “data.destination“ sendo a conta de origem dos recursos:
Webhook
- WEBHOOK_TYPEaccount_transaction
Response Body
{
"key": "\<ACCOUNT-KEY\>",
"data": {
"amount": -45,
"origin": {
"name": "PIX",
"branch": "0001",
"document": "32402502000135",
"account_key": "3d0e7d50-e898-49f3-b23b-05353c8a3c72",
"account_digit": "3",
"account_number": "00003"
},
"timestamp": "2022-09-02T23:00:05.326738",
"description": "212 0001 1017372-2 ***.221.81*-** BANCO ORIGINAL S.A.",
"destination": {
"name": "Default",
"branch": "0001",
"document": "09080702000105",
"account_key": "6d30a0b1-cb90-4ceb-b1ea-5bd600cdf3c8",
"account_digit": "2",
"account_number": "2359934"
},
"reference_key": "cea836b5-b02e-4f94-b1e2-4d575671c33d",
"reference_type": "pix_outgoing",
"account_balance": 999955,
"source_sub_type": "pix_withdrawal",
"transaction_key": "d2ba3817-26d7-4957-ab82-24f78d910a8a",
"source_sub_type_str": "Transferência de PIX"
},
"datetime": "2022-09-02T23:00:05.326738",
"webhook_type": "account_transaction"
}
Lista de source_sub_types’s:
| Enum | Descrição |
|---|---|
| operation_disbursement | Desembolso da Operação |
| protest_expense | Despesas de Protesto |
| automatic_integrated_payment | Pagamento Automático Integrado |
| tax | Impostos |
| electronic_funds_fee | Tarifa de TED |
| credit_operation_fee | Tarifa de Abertura de Crédito |
| internal_funds_transfer | Transferência Interna |
| incoming_funds_transfer | Transferência de Entrada |
| outgoing_funds_transfer | TED |
| deposit | Depósito |
| withdrawal | Transferência |
| withdrawal_reversal | Estorno de Transferência |
| trade_funds_transfer | Transferência de Pagamento de Cessão |
| settlement_funds_transfer | Transferência para Liquidação |
| bank_slip_fee | Tarifa de Boleto |
| bank_slip_settlement | Liquidação de Boleto |
| outgoing_funds_transfer_reversal | Estorno de TED |
| incoming_funds_transfer_refusal | Transferência Negada |
| electronic_funds_fee_reversal | Estorno de Tarifa de TED |
| monthly_account_fee_reversal | Estorno de Tarifa de Manutenção de Conta |
| bank_slip_fee_reversal | Estorno de Tarifa de Boleto |
| correspondent_bank_transfer | Repasse de Correspondente Bancário |
| credit_analysis_fee | Tarifa de Análise de Crédito |
| credit_operation_fee_reversal | Estorno de Tarifa de Abertura de Crédito |
| financial_investments_income | Renda de Aplicação Financeira |
| bank_slip_settlement_reversal | Estorno de Liquidação de Boleto |
| bank_slip_settlement_expense_reversal | Estorno de Tarifa de liquidação de Boleto |
| bank_slip_settlement_incoming_reversal | Estorno de Recebimento de Liquidação de Boleto |
| correspondent_bank_transfer_reversal | Estrono de Repasse de Correspondente Bancário |
| credit_analysis_fee_reversal | Estorno de Tarifa de Análise de Crédito |
| doc_expense_reversal | Estorno de Tarifa de DOC |
| incoming_doc_reversal | Estorno de Entrada de DOC |
| operation_disbursement_reversal | Estorno de Desembolso da Operação |
| operation_settling_reversal | Estorno de Pagamento de Operação |
| outgoing_doc_reversal | Estorno de Saída de DOC |
| rebate_reversal | Estorno de Rebate |
| settlement_funds_transfer_reversal | Estorno de Transferência para Liquidação |
| tax_reversal | Estorno de Impostos |
| trade_funds_transfer_reversal | Estorno de Transferência de Pagamento de Cessão |
| bank_slip_permanency_fee | Tarifa de Permanência do Título |
| bank_slip_cancel_protest_fee | Tarifa de Permanência do Título |
| bank_slip_protest_fee | Tarifa de Pedido de Protesto |
| bank_slip_notary_office_fee | Custas de Protesto |
| bank_slip_registration_fee | Tarifa de Registro |
| bank_slip_extension_fee | Tarifa de Prorrogação |
| bank_slip_rebate_fee | Tarifa de Abatimento |
| bank_slip_discount_fee | Tarifa de Desconto |
| bank_slip_settlement_fee | Tarifa de Liquidação |
| bank_slip_write_off_term_fee | Tarifa de Baixa por Decurso de Prazo |
| bank_slip_write_off_fee | Tarifa de Baixa |
| bank_slip_cancel_protest_write_off_fee | Tarifa de Sustação de Protesto com Baixa |
| bank_slip_notary_office_settlement_fee | Tarifa de Liquidação em Cartório |
| rebate_tax_free | Repasse por Conta e Ordem |
| rebate_tax_free_reversal | Estorno de Repasse por Conta e Ordem |
| incoming_funds_transfer_reversal | Estorno de Transferência Interna |
| bank_slip_payment | Pagamento de Boleto |
| bank_slip_payment_reversal | Estorno de Pagamento de Boleto |
| warranty_analysis_fee | Tarifa de Análise de Garantia |
| bank_slip_settlement_deposit | Liquidação de Boleto |
| bank_slip_payment_withdrawal | Pagamento de Boleto |
| account_setup_fee | Tarifa de Abertura de Conta |
| account_setup_fee_reversal | Estorno de Tarifa de Abertura de Conta |
| bank_slip_payment_withdrawal_reversal | Estorno de Pagamento de Boleto |
| incoming_anticipation_of_receivable | - |
| incoming_credit_card_settlement | Liquidação de cartão de crédito |
| incoming_debit_card_settlement | Liquidação de cartão de débito |
| assignment_automatic_transfer | Débito de Cessão Automática |
| assignment_automatic_transfer_reversal | Estorno de Débito de Cessão Automática |
| pix_fee | Tarifa de PIX |
| incoming_pix_transfer | Entrada de PIX |
| outgoing_pix_transfer | Saída de PIX |
| pix_fee_reversal | Estorno de Tarifa de PIX |
| incoming_pix_transfer_reversal | Estorno de entrada de PIX |
| outgoing_pix_transfer_reversal | Estorno de saída de PIX |
| pix_deposit | Depósito de PIX |
| pix_withdrawal | Transferência de PIX |
| pix_withdrawal_reversal | Estorno de transferência de PIX |
| pix_chargeback_withdrawal | Envio de devolução PIX |
| outgoing_pix_chargeback | Saída de PIX por devolução |
| incoming_pix_chargeback | Recebimento de devolução PIX |
| pix_chargeback_deposit | Entrada de PIX por devolução |
| pix_chargeback_withdrawal_reversal | Estorno de envio de devolução PIX |
| outgoing_pix_chargeback_reversal | Estorno de saída de PIX por devolução |
| incoming_pix_chargeback_reversal | Estorno de recebimento de devolução PIX |
| operation_pix_disbursement | Desembolso PIX da Operação |
| operation_pix_disbursement_reversal | Estorno de Desembolso PIX da Operação |
| receivables_inquiry_fee | Tarifa de Consulta de Agenda de Recebíveis |
| pix_deposit_reversal | Estorno de Depósito de PIX |
| internal_pix_transfer | Transferência de PIX |
| automatic_integrated_payment_reversal | Estorno de Pagamento Automático Integrado |
| operation_dibursement_reversal | Estorno de Desembolso da Operação |
| available_yield | Depósito de Investimento Liquido |
8.2. Comprovantes
O comprovante de uma transferência/pagamento pode ter seus dados recuperados através da “transaction_key ”.
Request
- MÉTODOGET
- ENDPOINT/transaction_receipt/TRANSACTION-KEY
Response - Para transferências/pagamentos PIX
Response Body
{
"chargeback_reason": null,
"chargeback_returned_amount": null,
"chargeback_unexpected_reason": null,
"end_to_end_id": "E3240250220221120012039U3OKZZMW8",
"origin_key": "cea836b5-b02e-4f94-b1e2-4d575671c33d",
"original_transfer_data": null,
"pix_message": null,
"pix_transfer_type": "key",
"receiver_conciliation_id": null,
"source_account": {
"account_branch": "0001",
"account_digit": "2",
"account_number": "2359934",
"financial_institution_compe_number": 329,
"financial_institution_name": "QI SOCIEDADE DE CRÉDITO DIRETO S.A.",
"owner_document_number": "09080702000105",
"owner_name": "VOVO LUCIA CONVENIENCIA LTDA"
},
"source_subtype": "pix_withdrawal",
"source_subtype_translation_ptbr": "Transferência de PIX",
"target_account": {
"account_branch": "0001",
"account_digit": "2",
"account_number": "1017372",
"financial_institution_compe_number": 212,
"financial_institution_name": "BANCO ORIGINAL S.A.",
"is_internal": false,
"ispb_number": "92894922",
"owner_document_number": "***22181***",
"owner_name": "Vivo Test",
"target_pix_key": "65322181032"
},
"transacted_at": "2022-11-20 02:00:05",
"transacted_at_br": "2022-11-19 23:00:05",
"transaction_amount": 45,
"transaction_key": "d2ba3817-26d7-4957-ab82-24f78d910a8a",
"translated_chargeback_reason": null
}
Response - Para transferências Internas ou Pagamento de TED
Response Body
{
"origin_key": "983b4a28-7de6-4e71-97ef-60fb50c7b013",
"source_account": {
"account_branch": "0001",
"account_digit": "5",
"account_number": "00002",
"financial_institution_compe_number": 329,
"financial_institution_name": "QI SOCIEDADE DE CRÉDITO DIRETO S.A.",
"owner_document_number": "32402502000135",
"owner_name": "QI SOCIEDADE DE CRÉDITO DIRETO S.A."
},
"source_subtype": "internal_funds_transfer",
"source_subtype_translation_ptbr": "Transferência Interna",
"target_account": {
"account_branch": "0001",
"account_digit": "2",
"account_number": "2359934",
"financial_institution_compe_number": 329,
"financial_institution_name": "QI SOCIEDADE DE CRÉDITO DIRETO S.A.",
"owner_document_number": "09080702000105",
"owner_name": "VOVO LUCIA CONVENIENCIA LTDA"
},
"transacted_at": "2022-11-20 00:36:33",
"transacted_at_br": "2022-11-19 21:36:33",
"transaction_amount": 1000000,
"transaction_key": "67a62397-2c32-4768-8485-ec9129a46654"
}
Response - Para Pagamentos de Boletos
Response Body
{
"bank_slip": {
"beneficiary": {
"document_number": "32402502000135",
"name": "QI SCD"
},
"digitable_line": "32990001031000699926165000000201993810000003500",
"expiration_date": "2023-06-14",
"financial_institution_compe_number": "329",
"financial_institution_name": "QI SOCIEDADE DE CRÉDITO DIRETO S.A.",
"payer": {
"document_number": "10932327656",
"name": "Lucas Clarim"
},
"payment_date": "2022-11-22",
"payment_key": "13b35108-0fdc-44ab-b86d-5dda12dc8dce"
},
"origin_key": "13b35108-0fdc-44ab-b86d-5dda12dc8dce",
"source_account": {
"account_branch": "0001",
"account_digit": "2",
"account_number": "2359934",
"financial_institution_compe_number": 329,
"financial_institution_name": "QI SOCIEDADE DE CRÉDITO DIRETO S.A.",
"owner_document_number": "09080702000105",
"owner_name": "VOVO LUCIA CONVENIENCIA LTDA"
},
"source_subtype": "bank_slip_payment",
"source_subtype_translation_ptbr": "Pagamento de Boleto",
"transacted_at": "2022-11-22 12:26:21",
"transacted_at_br": "2022-11-22 09:26:21",
"transaction_amount": 35,
"transaction_key": "eee862b9-7f2e-4eea-b04a-fa0e89442618"
}
8.3. Extratos
O extrato de uma conta pode ser recuperado através do seguinte endpoint:
Request
- MÉTODOGET
- ENDPOINT/account_statement
- PARAMETERSaccount_key, document_number, date_from, date_to, page, page_size
Response
Response Body
{
"data": {
"account_info": {
"account_block_reason": null,
"account_branch": "0001",
"account_credentials": [{
"account_id": 3395,
"credential_type": "observer",
"credential_type_id": 3,
"document_number": "09080702000105",
"id": 3244,
"is_active": true,
"name": "VOVO LUCIA CONVENIENCIA LTDA",
"updated_at": null
},
{
"account_id": 3395,
"credential_type": "requester",
"credential_type_id": 2,
"document_number": "94310345000195",
"id": 3245,
"is_active": true,
"name": "Parceiro Sandbox",
"updated_at": null
}
],
"account_digit": "2",
"account_key": "6d30a0b1-cb90-4ceb-b1ea-5bd600cdf3c8",
"account_name": "Default",
"account_number": "2359934",
"account_status": "opened",
"account_type": "checking",
"automatic_transfer_management_status": {
"created_at": "2022-10-27T13:48:18",
"enumerator": "master"
},
"automatic_transfers": [],
"balance": 999359,
"blocked_balance": 0,
"destinations": [],
"fee": 0,
"internal_webhooks": [],
"investment_available_amount": 0,
"investment_configuration": null,
"owner_document_number": "09080702000105",
"owner_name": "VOVO LUCIA CONVENIENCIA LTDA",
"owner_person_key": "d2fddd2c-3436-41d5-97e0-5721ee871a3a",
"permitted_person_keys": [
"bffded45-5fcf-4d13-9d2a-566a0af338cc",
"ef48fbe4-267b-45c1-9049-75345c075486"
],
"requester_key": "ef48fbe4-267b-45c1-9049-75345c075486",
"requester_name": "Parceiro Sandbox",
"setup_fee": null,
"transactional_limit": null,
"webhook_enabled": true
},
"transaction_list": [
{
"account_balance": 999359,
"description": "001 0001 81156-1 109.323.276-56 - Lucas de Jesus Clarim",
"source_subtype": "withdrawal",
"transacted_at": "2022-11-21 14:39:56",
"transaction_amount": -551,
"transaction_key": "32ac0781-f292-4172-b58f-3310102e6fb9"
},
{
"account_balance": 999910,
"description": "329 0001 00002-5 32.402.502/0001-35 - QI SOCIEDADE DE CRÉDITO DIRETO S.A.",
"source_subtype": "internal_funds_transfer",
"transacted_at": "2022-11-20 02:27:38",
"transaction_amount": -45,
"transaction_key": "9cee2272-b280-47ed-b9ec-00674f25db1b"
},
{
"account_balance": 999955,
"description": "212 0001 1017372-2 ***.221.81*-** BANCO ORIGINAL S.A.",
"source_subtype": "pix_withdrawal",
"transacted_at": "2022-11-20 02:00:05",
"transaction_amount": -45,
"transaction_key": "d2ba3817-26d7-4957-ab82-24f78d910a8a"
},
{
"account_balance": 1000000,
"description": "329 0001 00002-5 32.402.502/0001-35 - QI SOCIEDADE DE CRÉDITO DIRETO S.A.",
"source_subtype": "internal_funds_transfer",
"transacted_at": "2022-11-20 00:36:33",
"transaction_amount": 1000000,
"transaction_key": "67a62397-2c32-4768-8485-ec9129a46654"
}
]
},
"event_datetime": "2022-11-22 12:57:44",
"key": "d96fb39c-e80b-447b-aad8-191c9bd2eb17",
"status": "success",
"webhook_type": "account_statement"
}
9 - Gestão de Usuários
É possível realizar a inclusão e edição dos usuários administradores de uma conta aberta aberta. As inclusões sempre demanda autenticação de 2 fatores para os usuários que estão sendo adicionados.
9.1. Incluíndo um novo usuário a uma conta aberta
9.1.1. Criação
Primeiro é necessário criar o usuário. No momento da criação a QI enviará um token para o usuário criado, por sms ou email.
Request
-
MÉTODOPOST
-
ENDPOINT/baas/token_request
Request Body
{
"contact_type": "sms",
"agent_document_number": "97564480084",
"person_creation": {
"person": {
"date_of_birth": "1987-01-11",
"spouse_name": "sample spouse name",
"birth_place": "sample birth place",
"phone_number": {
"country_code": "55",
"area_code": "88",
"number": "988887777"
},
"representative": null,
"father_name": "sample father name",
"address": {
"street": "Rua Sample Avenue",
"complement": "Apto 123",
"state": "MG",
"number": "1234",
"neighborhood": "Cabral",
"postal_code": "38300000",
"city": "Ituiutaba"
},
"nationality": "Brasil",
"document_identification_number": "890537823",
"mother_name": "Sample Mama",
"person_type": "natural",
"name": "Sample Name Natural",
"profession": "sample profession",
"gender": null,
"email": "sample@gmail.com",
"document_number": "68346734500",
"marital_status": null
}
}
}
A Autenticação de 2 fatores para criação/atualização de novos usuários só pode ser realizada via “sms”.
9.1.2. Confirmação da criação
É necessário informar o token enviado para finalizar a criação do novo usuário:
Request
- MÉTODOPOST
- ENDPOINT/baas/movement_validation
Request Body
{
"token": "456785",
"person_creation": {
"person": {
"date_of_birth": "1987-01-11",
"spouse_name": "sample spouse name",
"birth_place": "sample birth place",
"phone_number": {
"country_code": "55",
"area_code": "88",
"number": "988887777"
},
"representative": null,
"father_name": "sample father name",
"address": {
"street": "Rua Sample Avenue",
"complement": "Apto 123",
"state": "MG",
"number": "1234",
"neighborhood": "Cabral",
"postal_code": "38300000",
"city": "Ituiutaba"
},
"nationality": "Brasil",
"document_identification_number": "890537823",
"mother_name": "Sample Mama",
"person_type": "natural",
"name": "Sample Name Natural",
"profession": "sample profession",
"gender": null,
"email": "sample@gmail.com",
"document_number": "68346734500",
"marital_status": null
}
}
}
Response
- MÉTODOPOST
- ENDPOINT/baas/movement_validation
Response Body
{
"hash": "1ab3754bbe74e16c1bebfadd9b8fb9e3",
"return_response": {
"birth_place": null,
"created_at": null,
"date_of_birth": "1987-01-11T00:00:00",
"document_identification_number": null,
"email": "sample@gmail.com",
"father_name": null,
"gender": null,
"is_pep": false,
"kc_key": null,
"marital_status": null,
"mother_name": "Sample Mama",
"nationality": "Brasil",
"natural_revenue_range": {
"average_amount": null,
"created_at": "2021-03-12T13:26:08",
"description": "Unavailable",
"description_ptbr": "Indisponível",
"enumerator": "0",
"more_than_amount": null,
"up_to_amount": null
},
"person": {
"address": {
"city": "Ituiutaba",
"complement": "Apto 123",
"created_at": null,
"neighborhood": "Cabral",
"number": "1234",
"postal_code": "38300000",
"state": "MG",
"street": "Rua Sample Avenue"
},
"category": null,
"category_nick": null,
"created_at": null,
"document_number": "44236096307",
"domain": {
"created_at": "2022-07-14T15:42:45",
"domain_key": "7aa7e064-f06b-4e09-ae19-7c27694f545b",
"domain_name": "Koin Soluções Domain Updated",
"owner_person_key": "997d1b30-e40a-42a0-b87a-4191a5165494"
},
"internal_contact": null,
"internal_contact_person_key": null,
"name": "Sample Name Natural",
"person_category": null,
"person_code": 1564,
"person_key": "9021859f-9860-41e6-af19-559a2599859c",
"person_status": {
"created_at": "2019-02-15T18:28:09",
"enumerator": "pending",
"translation_path": "onboarding.PersonStatus.pending"
},
"person_type": {
"created_at": "2019-02-15T18:28:08",
"enumerator": "natural",
"translation_path": "onboarding.PersonType.natural"
},
"phone": [{
"area_code": "16",
"country_code": "55",
"created_at": null,
"number": "997239044",
"phone_key": "b1c3f2d1-2433-4305-9d58-4dd83c30b7aa",
"phone_type": null
}],
"professional_data": [],
"qualifications": [],
"registration_date": "2022-08-22",
"risk": null,
"special_attention": false,
"terms_acknowledgement": false,
"valid_cip_beneficiary": false
},
"profession": null,
"revenue_amount": null,
"spouse_name": null
},
"validation": true
}
9.1.3. Criar vínculo profissional
Após a criação do usuário, é necessário vinculá-lo a uma empresa titular de uma conta aberta:
Request
- MÉTODOPOST
- ENDPOINT/baas/token_request
Request Body
{
"contact_type": "sms",
"agent_document_number": "97564480084",
"professional_data_creation": {
"natural_person": "3ea7f034-f06b-4e28-ae19-7c23694f546b",
"legal_person": "8bc83ae4-68e4-7bc9-8c84-077131ba2c93",
"natural_person_roles": [{
"product_type": "account",
"role_type": "requester"
},
{
"product_type": "escrow",
"role_type": "requester"
}
],
"post_type": "ceo"
}
}
9.1.4. Aprovar vínculo profissional
Para aprovar a inclusão do vínculo, é necessário enviar o token recebido pelo usuário administrador.
Request
- MÉTODOPOST
- ENDPOINT/baas/movement_validation
Payload
Response Body
{
"token": "076244",
"professional_data_creation": {
"natural_person": "3ea7f034-f06b-4e28-ae19-7c23694f546b",
"legal_person": "8bc83ae4-68e4-7bc9-8c84-077131ba2c93",
"natural_person_roles": [{
"product_type": "account",
"role_type": "requester"
},
{
"product_type": "escrow",
"role_type": "requester"
}
],
"post_type": "ceo"
}
}
Response
- MÉTODOPOST
- ENDPOINT/baas/movement_validation
Body
Response Body
{
"hash": "53d62e42d5299fca0d261ff1eae4bffc",
"return_response": {
"admission_date": "2022-08-22",
"created_at": "2022-08-22T21:51:29",
"email": null,
"final_beneficiary": null,
"is_active": true,
"legal_person_key": "9bc89ea4-64e4-4bd9-8d84-077135ba2c93",
"natural_person_key": "9021859f-9860-41e6-af19-559a2599859c",
"natural_person_roles": [{
"created_at": "2022-08-22T21:51:29",
"natural_person_roles_events": [],
"product_type": {
"created_at": "2021-02-26T14:16:35",
"enumerator": "account"
},
"role_type": {
"created_at": "2021-02-26T14:14:52",
"enumerator": "requester"
},
"updated_at": "2022-08-22T21:51:29"
},
{
"created_at": "2022-08-22T21:51:29",
"natural_person_roles_events": [],
"product_type": {
"created_at": "2022-04-08T14:51:34",
"enumerator": "escrow"
},
"role_type": {
"created_at": "2021-02-26T14:14:52",
"enumerator": "requester"
},
"updated_at": "2022-08-22T21:51:29"
}
],
"phone": null,
"post_type": {
"created_at": "2019-02-15T18:28:12",
"enumerator": "ceo",
"translation_path": "onboarding.PostType.ceo"
},
"profession_data_key": "bfe8bc59-533a-4c6a-be3a-af5137794c70",
"updated_at": "2022-08-22T21:51:29"
},
"validation": true
}
9.2. Atualizando Dados de um Usuário Existente
Os dados de um usuário são sempre atualizados no nível do vínculo deste usuário com uma determinada empresa. Sendo assim, para realizar qualquer update, são sempre necessária a chave de identificação do usuário (“natural_person“) e a chave do vínculo deste usuário com a empresa (“professional_data_key“).
9.2.1. Solicitar alteração
Primeiramente é necessário solicitar a atualização dos dados de um usuário em relação a uma determinada empresa.
Request
- MÉTODOPOST
- ENDPOINT/baas/token_request
Response Body
{
"contact_type": "sms",
"agent_document_number": "97564480084",
"professional_data_contact_update": {
"professional_data_key": "4ba8ff34-e07b-4ea8-ae59-8c23994f546b",
"natural_person": "3ea7f034-f06b-4e28-ae19-7c23694f546b",
"email": "sample@gmail.com",
"phone_number": {
"country_code": "55",
"area_code": "888",
"number": "988887777"
}
}
}
9.2.2. Aprovar solicitação de alteração
Para aprovar a alteração dos dados do usuário, é necessário enviar o token enviado ao usuário alvo da alteração:
Request
- MÉTODOPOST
- ENDPOINT/baas/movement_validation
Response Body
{
"token": "076244",
"professional_data_contact_update": {
"professional_data_key": "4ba8ff34-e07b-4ea8-ae59-8c23994f546b",
"natural_person": "3ea7f034-f06b-4e28-ae19-7c23694f546b",
"email": "sample@gmail.com",
"phone_number": {
"country_code": "55",
"area_code": "888",
"number": "988887777"
}
}
}
Response
- MÉTODOPOST
- ENDPOINT/baas/movement_validation
Response Body
{
"hash": "a355aade311f93ec87637e321f11386d",
"return_response": {
"admission_date": "2022-08-22",
"created_at": "2022-08-22T21:51:29",
"email": "contacto_info@fakemail.com",
"final_beneficiary": null,
"is_active": true,
"legal_person_key": "9bc89ea4-64e4-4bd9-8d84-077135ba2c93",
"natural_person_key": "9021859f-9860-41e6-af19-559a2599859c",
"natural_person_roles": [{
"created_at": "2022-08-22T21:51:29",
"natural_person_roles_events": [],
"product_type": {
"created_at": "2021-02-26T14:16:35",
"enumerator": "account"
},
"role_type": {
"created_at": "2021-02-26T14:14:52",
"enumerator": "requester"
},
"updated_at": "2022-08-22T21:51:29"
},
{
"created_at": "2022-08-22T21:51:29",
"natural_person_roles_events": [],
"product_type": {
"created_at": "2022-04-08T14:51:34",
"enumerator": "escrow"
},
"role_type": {
"created_at": "2021-02-26T14:14:52",
"enumerator": "requester"
},
"updated_at": "2022-08-22T21:51:29"
}
],
"phone": {
"area_code": "16",
"country_code": "55",
"number": "997239044",
"phone_type": "commercial"
},
"post_type": {
"created_at": "2019-02-15T18:28:12",
"enumerator": "ceo",
"translation_path": "onboarding.PostType.ceo"
},
"profession_data_key": "bfe8bc59-533a-4c6a-be3a-af5137794c70",
"updated_at": "2022-08-22T21:51:29"
},
"validation": true
}