Pular para o conteúdo principal

Manual BaaS - Conta Digital

Aviso

Antes de iniciar o processo de abertura de conta, é de responsabilidade do parceiro realizar as análises de KYC e Prevenção a Fraude.

Atenção!

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.

Reenvio de Webhooks

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​

ENDPOINT
/upload
MÉTODO
POST
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"
}
IMPORTANTE

Guarde essa “document_key”, pois ela será necessária na etapa da criação da conta.

1.2. Criação da conta PJ​

Request​

ENDPOINT
/account
MÉTODO
POST
Request Body
{
"account_owner": {
"annual_revenue_amount": 180000,
"address": {
"city": "Limeira",
"complement": "complemento",
"neighborhood": "Vila Cidade Jardim",
"number": "662",
"postal_code": "13480290",
"state": "SP",
"street": "Avenida Campinas"
},
"cnae_code": "4721-1/02",
"company_statute": "8b0d8c33-01c9-4cf5-a0fa-1d2a96f4b34d",
"company_document_number": "09080702000105",
"company_type": "ltda",
"email": "padaria@vovolucia.com.br",
"foundation_date": "1950-08-21",
"annual_revenue_amount": "1000000.00",
"name": "VOVO LUCIA CONVENIENCIA LTDA",
"person_type": "legal",
"phone": {
"area_code": "19",
"country_code": "55",
"number": "988888888"
},
"trading_name": "Empadaria Vovo Lucia",
"company_representatives": [{
"address": {
"city": "Recife",
"complement": null,
"neighborhood": "Fundão",
"number": "137",
"postal_code": "52221110",
"state": "PE",
"street": "Rua Camapuã"
},
"birth_date": "1972-02-02",
"document_identification_number": "339122924",
"document_identification": "8b0d8c33-01c9-4cf5-a0fa-1d2a96f4b34d",
"email": "marcos.alves@yopmail.com",
"individual_document_number": "08531309069",
"is_pep": false,
"final_beneficiary": true,
"marital_status": "single",
"mother_name": "Sueli Isadora Alves",
"name": "Marcos Felipe Henrique Alves",
"nationality": "Brasileira",
"person_type": "natural",
"phone": {
"area_code": "88",
"country_code": "55",
"number": "995924634"
}
},
{
"person_type": "natural",
"name": "Juliana Tereza Bernardes",
"mother_name": "Maria Mariane",
"birth_date": "1990-05-06",
"profession": "Deputada",
"nationality": "Brasileira",
"marital_status": "single",
"is_pep": false,
"final_beneficiary": true,
"individual_document_number": "97564480084",
"document_identification_number": "232479719",
"document_identification": "8b0d8c33-01c9-4cf5-a0fa-1d2a96f4b34d",
"email": "juliana.tereza@yopmail.com",
"phone": {
"country_code": "55",
"area_code": "11",
"number": "912821359"
},
"address": {
"street": "Passagem Mariana",
"state": "PA",
"city": "Ananindeua",
"neighborhood": "Águas Lindas",
"number": "660",
"postal_code": "67118003",
"complement": "complemento"
}
}
]
},
"allowed_user": {
"email": "juliana.tereza@yopmail.com",
"individual_document_number": "97564480084",
"name": "Juliana Tereza Bernardes",
"person_type": "natural",
"phone": {
"country_code": "55",
"area_code": "11",
"number": "912828135"
}
},
"signed_contract": {
"document_key": "4d7f4e29-4b58-4905-9a69-b1f9215263f5",
"signatures": [
{
"authenticity": {
"timestamp": "1970-01-01T00:00:01.080100Z",
"facial_recognition_key": "79003de0-2590-455d-9b73-426b8ca284eb",
"lang": "-35.8916627",
"lat": "-7.2226067",
"ip_address": "177.51.1.000",
"session_id": "jdifj329842"
},
"signer": {
"name": "IVANILDO DE SENA LIMA",
"email": "teste@gmail.com",
"phone": {
"country_code": "055",
"area_code": "11",
"number": "999999999"
},
"document_number": "99999999999"
},
"authentication_type": "opt-in"
}
]
}
}

“account_owner”: Os dados da empresa devem ser enviados neste objeto.

“account_owner.company_statute”: A “document_key” retornada no endpoint de upload de documentos, no momento do upload do “.zip” dos documentos societários da empresa, deve ser enviada neste campo.

“account_owner.company_representatives”: A lista com os dados dos representantes legais da empresa deve ser enviada neste objeto. Deve ser enviado, no mínimo, os representantes legais, suficientes para representar legalmente a empresa conforme seu respectivo estatuto/contrato social. A validação dos poderes de cada representante legal enviado fica a cargo do parceiro.

“account_owner.company_representatives.document_identification”: A “document_key” retornada no endpoint de upload de documentos, no momento do upload do “.zip” do documento com foto do representante, deve ser enviada neste campo.

“allowed_user”: Neste campo devem ser enviados os dados de um dos representantes legais da empresa enviado no objeto “account_owner.company_representatives”. Este usuário será o usuário administrador da conta e possuirá poderes de movimentação sobre a conta e também poderes para adicionar novos usuários administradores. O SMS/e-mail de confirmação tanto para movimentação quanto adição de novos usuários será enviado para essa pessoa.

informação

O usuário com permissão de administrador possui plenos poderes sobre a conta (mediante autenticação de 2 fatores, via SMS ou e-mail). Sendo assim, este usuário deve possuir permissão legal para movimentá-la segundo o contrato/estatuto social da empresa. A validação dos poderes de um usuário administrador fica a cargo do parceiro.

1.2.1 Assinatura do Termo de Abertura de Conta​

No payload de abertura de conta deverá ser enviado o campo signature_contract que deverá conter as informações de device scan do momento em que o usuário (Titular da conta ou usuário master) realiza o aceite do termo de abertura de cont

Objeto signed_contract​

CampoTipoDescriçãoCaracteres
document_key *uuidv4Chave ú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 *listDados de assinatura do documento enviado. Cada item da lista, corresponde a um assinante do documento.Objeto signatures

Objeto signatures​

CampoTipoDescriçãoCaracteres
authenticity *objectConjunto de dados que evidenciam a assinatura eletrônica realizada pelo assinante.Objeto authenticity
signer *objectObjeto contendo os dados de um dos assinantes do documento.Objeto signer
authentication_type *enumeratorTipo de assinatura. Sempre será "opt-in""opt-in"

Objeto authenticity​

CampoTipoDescriçãoCaracteres
timestamp *stringData e hora do momento da assinatura do documento.27
facial_recognition_keyuuidv4Chave ú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
langstringCoordenada de longitude da geolocalização do assinante capturada no momento da assinatura.-
latstringCoordenada de latitude da geolocalização do assinante capturada no momento da assinatura.-
ip_addressstringEndereço IP do dispositivo do assinante.-
session_idstringID da seção do assinante no momento da assinatura.-

Objeto signer​

CampoTipoDescriçãoCaracteres
name *stringNome do assinante.-
email *stringEmail do assinante.-
phone *objectObjeto com dados do telefone do assinanteObjeto phone
document_number *stringCPF do assinante.11

Objeto phone​

CampoDescriçãoExemploMáx. Caracteres
country_code *stringCódigo DDI do telefone (https://ddi.guiamais.com.br/)3
area_code *stringCódigo DDD do telefone (https://ddd.guiamais.com.br/)2
number *stringNúmero de telefone (apenas números)10

        Response

  • MÉTODO
    POST
  • 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

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ÉTODO
    POST
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ÉTODO
    POST
  • 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

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.

informação

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_TYPE
    account
  • STATUS
    Account 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_TYPE
    account
  • STATUS
    Account 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"
}
Atenção

A propriedade allowed_user retornada apenas nos webhooks de abertura de conta de PJ, em caso de PF temos apenas a propriedade de account_info e account_owner sendo retornadas dentro do objeto de data.

1.3.2 Assinatura do Termo de Abertura de Conta​

No payload de abertura de conta deverá ser enviado o campo signature_contract que deverá conter as informações de device scan do momento em que o usuário (Titular da conta ou usuário master) realiza o aceite do termo de abertura de cont

Objeto signed_contract​

CampoTipoDescriçãoCaracteres
document_key *uuidv4Chave ú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 *listDados de assinatura do documento enviado. Cada item da lista, corresponde a um assinante do documento.Objeto signatures

Objeto signatures​

CampoTipoDescriçãoCaracteres
authenticity *objectConjunto de dados que evidenciam a assinatura eletrônica realizada pelo assinante.Objeto authenticity
signer *objectObjeto contendo os dados de um dos assinantes do documento.Objeto signer
authentication_type *enumeratorTipo de assinatura. Sempre será "opt-in""opt-in"

Objeto authenticity​

CampoTipoDescriçãoCaracteres
timestamp *stringData e hora do momento da assinatura do documento.27
facial_recognition_keyuuidv4Chave ú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
langstringCoordenada de longitude da geolocalização do assinante capturada no momento da assinatura.-
latstringCoordenada de latitude da geolocalização do assinante capturada no momento da assinatura.-
ip_addressstringEndereço IP do dispositivo do assinante.-
session_idstringID da seção do assinante no momento da assinatura.-

Objeto signer​

CampoTipoDescriçãoCaracteres
name *stringNome do assinante.-
email *stringEmail do assinante.-
phone *objectObjeto com dados do telefone do assinanteObjeto phone
document_number *stringCPF do assinante.11

Objeto phone​

CampoDescriçãoExemploMáx. Caracteres
country_code *stringCódigo DDI do telefone (https://ddi.guiamais.com.br/)3
area_code *stringCódigo DDD do telefone (https://ddd.guiamais.com.br/)2
number *stringNúmero de telefone (apenas números)10

1.4. Recuperando dados da conta​

        Request

  • ENDPOINT
    /account
  • MÉTODO
    GET
  • PARAMETERS
    account_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
}
}
informação

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:

  1. Criação do pedido de transferência: /baas/pix_transfer

  2. Solicitação de token de validação de transferência: /baas/token_request

  3. Aprovação da transferência: /baas/movement_validation

informação

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ÉTODO
    POST
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"
}

informação

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ÉTODO
    POST
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"
}
Possíveis status da solicitação de transferência/pagamento via PIX:

pending_approval: transferência pendente de aprovação pelo usuário administrador da conta (“allowed_user”)

sent: transferência enviada

Atenção

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ÉTODO
    POST
Request Body
{
"contact_type": "sms",
"agent_document_number": "97564480084",
"movement_payload": {
"pix_transfer_key": "cea836b5-b02e-4f94-b1e2-4d575671c33d",
"approver_document_number": "97564480084"
}
}

informação

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”).

informação

approver_document_number: Deve ser informado o CPF do usuário administrador que realizará a aprovação da transferência PIX.

informação

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ÉTODO
    POST
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"
}

STATUS
422
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\"}"
}

HTTP Error 422

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_TYPE
    account_transaction
  • SOURCE_SUB_TYPE
    pix_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_TYPE
    account_transaction
  • SOURCE_SUB_TYPE
    pix_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​
ENDPOINT
/baas/pix_transfer
MÉTODO
POST
Request Body
{
"is_chargeback": true,
"pix_transfer_key": "a180f2fb-0c7e-4708-b6a0-8d231770132e",
"chargeback_amount": 100.46,
"chargeback_message": "Mensagem de devolução"
}
informaçã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​
ENDPOINT
/baas/pix_transfer
MÉTODO
POST
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"
}
informação

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​

ENDPOINT
/bass/token_request
MÉTODO
POST
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​

ENDPOINT
/bass/movement_validation
MÉTODO
POST
Request Body
{
"contact_type": "email",
"movement_payload": {
"pix_transfer_key": "7a71e1f7-d8d1-4cf0-9243-c0b3837a3d26",
"approver_document_number": "97564480084"
}
}

3 - Transferência TED​

informação

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:

  1. Solicitação de token de validação de transferência: /baas/token_request

  2. Aprovação da transferência: /baas/movement_validation

        Request

  • ENDPOINT
    /baas/token_request
  • MÉTODO
    POST
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ÉTODO
    POST
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ÉTODO
    POST
  • 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"
}
informação

O campo de “transacted_at“ estão em formato UTC.

informação

A “transaction_key“ será utilizada posteriormente para solicitação do comprovante de transferência.

3.2. Efetivação de uma TED​

        Webhook

  • WEBHOOK_TYPE
    account_transaction
  • SOURCE_SUB_TYPE
    withdrawal
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_TYPE
    account_transaction
  • SOURCE_SUB_TYPE
    withdrawal_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:

  1. Decodificar o QR Code PIX: /baas/pix/qrcode

  2. Criação do pedido de transferência: /baas/pix_transfer

  3. Solicitação de token de validação de transferência: /baas/token_request

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

informação

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ÉTODO
    POST
Reponse Body
{
"qr_code_payload": "\<URI DO PIX COPIA E COLA\>"
}

        Response

  • MÉTODO
    POST
  • 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"
}
Atenção

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ÉTODO
    POST
  • 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ÉTODO
    POST
  • 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ÉTODO
    POST
  • 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ÉTODO
    POST
  • ENDPOINT
    /baas/movement_validation
Request Body
{
"token": "957219",
"movement_payload": {
"pix_transfer_key": "59a0da26-3223-4679-aa2c-020d46e923c1",
"approver_document_number": "97564480084"
}
}

        Response

  • MÉTODO
    POST
  • 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"
}
informação

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:

  1. Decodificar o QR Code PIX: /baas/pix/qrcode

  2. Criação do pedido de transferência: /baas/pix_transfer

  3. Solicitação de token de validação de transferência: /baas/token_request

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

informação

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ÉTODO
    POST
  • 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"
}
Atenção

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ÉTODO
    POST
  • 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ÉTODO
    POST
  • 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ÉTODO
    POST
  • 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ÉTODO
    POST
  • ENDPOINT
    /baas/movement_validation
Response Body

{
"token": "231564",
"movement_payload": {
"pix_transfer_key": "8ddd3bce-5130-4b5b-b7f1-40f17547a413",
"approver_document_number": "97564480084"
}
}

        Response

  • MÉTODO
    POST
  • 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"
}
informação

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​

informação

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ÉTODO
    POST
  • 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ÉTODO
    POST
  • 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"
}
Atenção

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

informaçã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_TYPE
    key_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ÉTODO
    POST
  • 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ÉTODO
    POST
  • 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ÉTODO
    PATCH
  • 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ÉTODO
    PATCH
  • ENDPOINT
    /baas/pix/keys/PIX_KEY_REQUEST_KEY/resend_twofa
payload.json
{}

5.5. Consultar Chaves PIX cadastradas em uma conta​

        Request

  • MÉTODO
    GET
  • ENDPOINT
    /baas/pix/keys
  • PARAMETERS
    account_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ÉTODO
    DELETE
  • 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ÉTODO
    POST
  • ENDPOINT
    /baas/qrcode/static
Request Body
{
"pix_key": "0598e5d1-2cfc-4857-abf8-12d495aa0a6d",
"amount": 35.00,
"receiver_name": "Tywin Lannister",
"qr_code_format": "both"
}

informação

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ÉTODO
    POST
  • 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ÉTODO
    POST
  • 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\>"
}]
}


informação

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ÉTODO
    POST
  • 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"
}
informação

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ÉTODO
    POST
  • 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ÉTODO
    POST
  • 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ÉTODO
    POST
  • 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ÉTODO
    POST
  • 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ÉTODO
    POST
  • ENDPOINT
    /baas/qrcode/dynamic
Request Body
{
"qr_code_key": "3bd19ada-2341-41bf-9f1f-c5ce0b216723",
"occurrence_type": "write_off"
}

        Response

  • MÉTODO
    POST
  • 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ÉTODO
    GET
  • 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"
]
}
NOTA

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ÉTODO
    POST
  • 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"
}
]
}
informação

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ÉTODO
    POST
  • 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_TYPE
    bank_slip.status_change
  • STATUS
    registered
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ÉTODO
    POST
  • 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"
}],
...
}
informação

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.

informação

Exemplo de linha digitável: 32990001031000000000902000000204685640000100000

Através da linha digitável, podem ser consultados os dados do boleto:

        Request

  • MÉTODO
    GET
  • ENDPOINT
    /bank_slip/payment
  • PARAMETERS
    digitable_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ÉTODO
    GET
  • 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:

  1. Solicitação de token de validação de transferência: /baas/token_request

  2. Aprovação da transferência: /baas/movement_validation

        Request

  • MÉTODO
    POST
  • 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"
}
}

informação

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ÉTODO
    POST
  • ENDPOINT
    /baas/movement_validation
Request Body
{
"token": "358192",
"movement_payload": {
"resource_account_key": "6d30a0b1-cb90-4ceb-b1ea-5bd600cdf3c8",
"digitable_line": "32990001031000699926165000000201993810000003500"
}
}

        Response

  • MÉTODO
    POST
  • 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_TYPE
    bank_slip.status_change
  • STATUS
    payment_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"
}
informação

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

informação

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

Atenção

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​

informação

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_TYPE
    account_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_TYPE
    account_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:

EnumDescrição
operation_disbursementDesembolso da Operação
protest_expenseDespesas de Protesto
automatic_integrated_paymentPagamento Automático Integrado
taxImpostos
electronic_funds_feeTarifa de TED
credit_operation_feeTarifa de Abertura de Crédito
internal_funds_transferTransferência Interna
incoming_funds_transferTransferência de Entrada
outgoing_funds_transferTED
depositDepósito
withdrawalTransferência
withdrawal_reversalEstorno de Transferência
trade_funds_transferTransferência de Pagamento de Cessão
settlement_funds_transferTransferência para Liquidação
bank_slip_feeTarifa de Boleto
bank_slip_settlementLiquidação de Boleto
outgoing_funds_transfer_reversalEstorno de TED
incoming_funds_transfer_refusalTransferência Negada
electronic_funds_fee_reversalEstorno de Tarifa de TED
monthly_account_fee_reversalEstorno de Tarifa de Manutenção de Conta
bank_slip_fee_reversalEstorno de Tarifa de Boleto
correspondent_bank_transferRepasse de Correspondente Bancário
credit_analysis_feeTarifa de Análise de Crédito
credit_operation_fee_reversalEstorno de Tarifa de Abertura de Crédito
financial_investments_incomeRenda de Aplicação Financeira
bank_slip_settlement_reversalEstorno de Liquidação de Boleto
bank_slip_settlement_expense_reversalEstorno de Tarifa de liquidação de Boleto
bank_slip_settlement_incoming_reversalEstorno de Recebimento de Liquidação de Boleto
correspondent_bank_transfer_reversalEstrono de Repasse de Correspondente Bancário
credit_analysis_fee_reversalEstorno de Tarifa de Análise de Crédito
doc_expense_reversalEstorno de Tarifa de DOC
incoming_doc_reversalEstorno de Entrada de DOC
operation_disbursement_reversalEstorno de Desembolso da Operação
operation_settling_reversalEstorno de Pagamento de Operação
outgoing_doc_reversalEstorno de Saída de DOC
rebate_reversalEstorno de Rebate
settlement_funds_transfer_reversalEstorno de Transferência para Liquidação
tax_reversalEstorno de Impostos
trade_funds_transfer_reversalEstorno de Transferência de Pagamento de Cessão
bank_slip_permanency_feeTarifa de Permanência do Título
bank_slip_cancel_protest_feeTarifa de Permanência do Título
bank_slip_protest_feeTarifa de Pedido de Protesto
bank_slip_notary_office_feeCustas de Protesto
bank_slip_registration_feeTarifa de Registro
bank_slip_extension_feeTarifa de Prorrogação
bank_slip_rebate_feeTarifa de Abatimento
bank_slip_discount_feeTarifa de Desconto
bank_slip_settlement_feeTarifa de Liquidação
bank_slip_write_off_term_feeTarifa de Baixa por Decurso de Prazo
bank_slip_write_off_feeTarifa de Baixa
bank_slip_cancel_protest_write_off_feeTarifa de Sustação de Protesto com Baixa
bank_slip_notary_office_settlement_feeTarifa de Liquidação em Cartório
rebate_tax_freeRepasse por Conta e Ordem
rebate_tax_free_reversalEstorno de Repasse por Conta e Ordem
incoming_funds_transfer_reversalEstorno de Transferência Interna
bank_slip_paymentPagamento de Boleto
bank_slip_payment_reversalEstorno de Pagamento de Boleto
warranty_analysis_feeTarifa de Análise de Garantia
bank_slip_settlement_depositLiquidação de Boleto
bank_slip_payment_withdrawalPagamento de Boleto
account_setup_feeTarifa de Abertura de Conta
account_setup_fee_reversalEstorno de Tarifa de Abertura de Conta
bank_slip_payment_withdrawal_reversalEstorno de Pagamento de Boleto
incoming_anticipation_of_receivable-
incoming_credit_card_settlementLiquidação de cartão de crédito
incoming_debit_card_settlementLiquidação de cartão de débito
assignment_automatic_transferDébito de Cessão Automática
assignment_automatic_transfer_reversalEstorno de Débito de Cessão Automática
pix_feeTarifa de PIX
incoming_pix_transferEntrada de PIX
outgoing_pix_transferSaída de PIX
pix_fee_reversalEstorno de Tarifa de PIX
incoming_pix_transfer_reversalEstorno de entrada de PIX
outgoing_pix_transfer_reversalEstorno de saída de PIX
pix_depositDepósito de PIX
pix_withdrawalTransferência de PIX
pix_withdrawal_reversalEstorno de transferência de PIX
pix_chargeback_withdrawalEnvio de devolução PIX
outgoing_pix_chargebackSaída de PIX por devolução
incoming_pix_chargebackRecebimento de devolução PIX
pix_chargeback_depositEntrada de PIX por devolução
pix_chargeback_withdrawal_reversalEstorno de envio de devolução PIX
outgoing_pix_chargeback_reversalEstorno de saída de PIX por devolução
incoming_pix_chargeback_reversalEstorno de recebimento de devolução PIX
operation_pix_disbursementDesembolso PIX da Operação
operation_pix_disbursement_reversalEstorno de Desembolso PIX da Operação
receivables_inquiry_feeTarifa de Consulta de Agenda de Recebíveis
pix_deposit_reversalEstorno de Depósito de PIX
internal_pix_transferTransferência de PIX
automatic_integrated_payment_reversalEstorno de Pagamento Automático Integrado
operation_dibursement_reversalEstorno de Desembolso da Operação
available_yieldDepó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ÉTODO
    GET
  • 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ÉTODO
    GET
  • ENDPOINT
    /account_statement
  • PARAMETERS
    account_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ÉTODO
    POST
  • 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ÉTODO
    POST
  • 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ÉTODO
    POST
  • 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ÉTODO
    POST
  • 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ÉTODO
    POST
  • 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ÉTODO
    POST
  • 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ÉTODO
    POST
  • 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ÉTODO
    POST
  • 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ÉTODO
    POST
  • 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
}