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,
"marital_status": "single",
"mother_name": "Sueli Isadora Alves",
"name": "Marcos Felipe Henrique Alves",
"nationality": "Brasileira",
"person_type": "natural",
"phone": {
"area_code": "88",
"country_code": "55",
"number": "995924634"
}
},
{
"person_type": "natural",
"name": "Juliana Tereza Bernardes",
"mother_name": "Maria Mariane",
"birth_date": "1990-05-06",
"profession": "Deputada",
"nationality": "Brasileira",
"marital_status": "single",
"is_pep": false,
"individual_document_number": "97564480084",
"document_identification_number": "232479719",
"document_identification": "8b0d8c33-01c9-4cf5-a0fa-1d2a96f4b34d",
"email": "juliana.tereza@yopmail.com",
"phone": {
"country_code": "55",
"area_code": "11",
"number": "912821359"
},
"address": {
"street": "Passagem Mariana",
"state": "PA",
"city": "Ananindeua",
"neighborhood": "Águas Lindas",
"number": "660",
"postal_code": "67118003",
"complement": "complemento"
}
}
]
},
"allowed_user": {
"email": "juliana.tereza@yopmail.com",
"individual_document_number": "97564480084",
"name": "Juliana Tereza Bernardes",
"person_type": "natural",
"phone": {
"country_code": "55",
"area_code": "11",
"number": "912828135"
}
},
"signed_contract": {
"document_key": "4d7f4e29-4b58-4905-9a69-b1f9215263f5",
"signatures": [
{
"authenticity": {
"timestamp": "1970-01-01T00:00:01.080100Z",
"facial_recognition_key": "79003de0-2590-455d-9b73-426b8ca284eb",
"lang": "-35.8916627",
"lat": "-7.2226067",
"ip_address": "177.51.1.000",
"session_id": "jdifj329842"
},
"signer": {
"name": "IVANILDO DE SENA LIMA",
"email": "teste@gmail.com",
"phone": {
"country_code": "055",
"area_code": "11",
"number": "999999999"
},
"document_number": "99999999999"
},
"authentication_type": "opt-in"
}
]
}
}

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

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

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

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

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

info

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.

info

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
}
}
info

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

info

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"
}

info

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"
}
}

info

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

info

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

info

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"
}
info

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"
}
info

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

info

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"
}
info

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

info

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.

info

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"
}
info

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

info

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"
}
info

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

info

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

info

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"
}

info

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\>"
}]
}


info

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"
}
info

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"
}
]
}
info

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"
}],
...
}
info

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.

info

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"
}
}

info

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"
}
info

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

info

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

info

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
}