APP Integration
Resumo
Este guia descreve como emitir uma dívida (operação de crédito) para pessoa física através do fluxo BNPL / e-commerce utilizando o endpoint POST /signed_debt.
Este fluxo suporta pagamentos via QR Code, permitindo coletar as informações necessárias para o desembolso diretamente do QR Code, incluindo o número do documento do beneficiário, número da conta, dígito da conta, número da agência e o valor a desembolsar.
A emissão para pessoa física representa um empréstimo padrão. Nesse cenário:
- O campo
financial.disbursed_amountespecifica o valor principal a ser desembolsado ao tomador. Ele deve ser igual ao valor registrado no QR Code Pix informado emdisbursement_bank_accounts. borrower.person_typedeve estar definido comonatural.- O campo
refinanced_credit_operationsnão deve ser informado.
A estrutura do borrower, additional_data.contract (assinaturas opt-in), disbursement_bank_accounts e demais objetos da requisição é descrita nas seções a seguir.
O valor desembolsado (financial.disbursed_amount) deve ser igual ao valor registrado no QR Code Pix. Decodifique o QR Code primeiro via POST /pix/decode_qrcode_payload (passo 1) para obter o valor e use esse mesmo valor em disbursed_amount na emissão da dívida.
1. Decodificação do QR Code
Requisição
Corpo da requisição
{
"qr_code_type": "dynamic_instant",
"qr_code_payload": "00020101021226850014br.gov.bcb.pix2563qrcodepix.bb.com.br/pix/v2/d373e385-dfe7-49f6-b9ec-14ba60a9b8285204000053039865802BR5925TESTE62070503***63047B7D",
"pix_key": "teste.cobrancapix@gmail.com.br",
"receiver_conciliation_id": "fgnb4NTt7pOUBGfrcporERwVVqr0f8PWRfK",
"amount": "9367.61",
"status": "ATIVA"
}
Corpo da resposta
| Campo | Tipo | Descrição | Disponível |
|---|---|---|---|
qr_code_type | string | Tipo do QR Code: static, dynamic_instant ou dynamic_term. | Todos |
qr_code_payload | string | Payload EMV original recebido na requisição. | Todos |
pix_key | string | Chave Pix do recebedor extraída do payload do QR Code. | Todos |
transfer_amount | string | Valor da transferência, quando especificado no QR Code. | static |
additional_data | string | Dados adicionais contidos no QR Code estático. | static |
receiver_conciliation_id | string | Identificador de conciliação do recebedor (txid). | dynamic_* |
amount | string | Valor original da cobrança. | dynamic_* |
status | string | Status da cobrança dinâmica. | dynamic_* |
Para QR Codes dinâmicos, o status do QR Code é retornado conforme a tabela de enumeração abaixo.
Erros
QR Code com formato inválido
{
"data": "{\"title\": \"Invalid Qr Code Format\", \"description\": \"The Qr Code format is invalid, please enter a valid Qr Code\", \"translation\": \"O formato do Qr Code é inválido, por favor insira um Qr Code válido\", \"extra_fields\": {}, \"code\": \"PXT000070\"}"
}
Tipo de QR Code não identificado no payload
{
"data": "{\"title\": \"Invalid Qr Code Type\", \"description\": \"The Qr Code payload given did not provide a propper Qr Code type\", \"translation\": \"O payload de QR Code fornecido não contêm um tipo de Qr Code Válido\", \"extra_fields\": {}, \"code\": \"PXT000071\"}"
}
Erro ao solicitar o payload do QR Code à instituição de registro
{
"data": "{\"title\": \"Error in Qr Code Payload Request\", \"description\": \"An error occurred while requesting the qr code payload to the registry institution\", \"translation\": \"Um erro ocorreu durante a requisição do payload do qr code para a instituição de registro\", \"extra_fields\": {}, \"code\": \"PXT000069\"}"
}
2. Emissão de dívida
Requisição
Corpo da requisição
{
"additional_data": {
"contract": {
"contract_number": null,
"signed": true,
"signatures": [
{
"signer": {
"name": "Alan Mathison Turing",
"phone": { "number": "912345678", "area_code": "11", "country_code": "055" },
"email": "alan.turing@email.com",
"document_number": "96969879003"
},
"signature": {
"ip_address": "168.211.22.84",
"timestamp": "27-10-2025 11:07:15",
"signature_file": { "file_url": "http://qitech.com.br/signature.pdf", "file_type": "pdf" },
"geolocation": { "long": "-46.63611", "lat": "-23.5475" },
"fingerprint_device": null
}
}
]
}
},
"financial": {
"number_of_installments": 2,
"credit_operation_type": "ccb",
"interest_type": "pre_price_days",
"monthly_interest_rate": 0.07,
"disbursed_amount": 150000,
"fine_configuration": { "contract_fine_rate": 0.02, "monthly_rate": 0.15, "interest_base": "calendar_days" },
"interest_grace_period": 0,
"disbursement_date": "2026-04-11",
"first_due_date": "2026-05-10",
"principal_grace_period": 0
},
"purchaser_document_number": "32402502000135",
"requester_identifier_key": "40822732-c4ce-41fb-9ee5-5e0304cd04a7",
"document_template_key": "518a0b57-2ce3-4309-94e5-6a95bc056d12",
"borrower": {
"email": "alan.turing@email.com",
"document_identification": "494598fd-c226-4332-a500-591ae3884673",
"document_identification_back": "494598fd-c226-4332-a500-591ae3884673",
"birth_date": "1998-06-03",
"person_type": "natural",
"is_pep": false,
"mother_name": "Nome completo da mãe",
"profession": "Servidor público",
"individual_document_number": "82744088021",
"address": {
"city": "São Paulo",
"neighborhood": "CENTRO",
"street": "Avenida Feliz",
"complement": "",
"postal_code": "49026100",
"state": "SP",
"number": ""
},
"phone": { "country_code": "055", "number": "912345678", "area_code": "11" },
"document_identification_number": "47003534819",
"name": "Alan Mathison Turing"
},
"disbursement_bank_accounts": [
{
"qr_code_url": "00020126930014br.gov.bcb.pix2571qrcode-h.sandbox.qitech.app/bacen/cobv/3fecc731adf542659b84be038ec4151e5204000053039865802BR5925LogcardMeiosDePagamentoLt6008SaoPaulo61080145200062070503***6304A936"
}
]
}
A emissão para pessoa física utiliza borrower.person_type: "natural" e um individual_document_number (CPF). financial.disbursed_amount deve ser igual ao valor registrado no QR Code Pix enviado em disbursement_bank_accounts — decodifique o QR Code antes via POST /pix/decode_qrcode_payload. Omita refinanced_credit_operations (esse campo só é utilizado quando há quitação de operações existentes em refinanciamento).
Parâmetros do corpo
| Campo | Tipo | Descrição | Máx caracteres |
|---|---|---|---|
additional_data * | object | Metadados do contrato e evidências de assinatura em additional_data.contract (número do contrato, flag de assinatura, signatures[] com signer e evidências). | - |
borrower * | object | Objeto borrower — pessoa física tomadora do crédito. | - |
disbursement_bank_accounts * | array | Contas de desembolso — array contendo o QR Code que recebe o desembolso (um único item neste fluxo). | - |
financial * | object | Objeto financial — condições financeiras; use disbursed_amount para o valor a desembolsar ao tomador. | - |
purchaser_document_number * | string | CNPJ do cessionário (somente dígitos, sem formatação). | - |
requester_identifier_key | string | Chave de rastreio do cliente para a requisição. | 50 |
document_template_key | string | Chave do template do contrato a ser utilizado na operação. | UUID |
Objeto borrower
| Campo | Tipo | Descrição | Máx caracteres |
|---|---|---|---|
name * | string | Nome completo do tomador | 100 |
email | string | E-mail do tomador | 254 |
phone | object | Objeto phone — telefone de contato | - |
is_pep * | boolean | Indicador de PEP (http://www.portaldatransparencia.gov.br/download-de-dados/pep) | - |
address * | object | Objeto address — endereço do tomador | - |
role_type | enum | Papel do tomador no contrato. Padrão: issuer. | - |
birth_date * | date | Data de nascimento (YYYY-MM-DD) | - |
mother_name * | string | Nome completo da mãe | 100 |
nationality | string | Nacionalidade | 50 |
profession | string | Profissão do tomador | 100 |
person_type * | string | Tipo de pessoa — deve ser natural para pessoas físicas | - |
individual_document_number * | string | CPF do tomador (somente dígitos) | 11 |
document_identification * | string | DOCUMENT_KEY do PDF do documento (RG ou CNH), enviado previamente | UUID |
document_identification_back | string | DOCUMENT_KEY do verso do documento (enviado previamente) | UUID |
document_identification_number | string | Número do documento de identificação do tomador (RG ou CNH), somente dígitos | 20 |
Objeto address
| Campo | Tipo | Descrição | Máx caracteres |
|---|---|---|---|
city * | string | Cidade | 100 |
state * | string | Estado (duas letras maiúsculas) | 2 |
number * | string | Número | 10 |
street * | string | Logradouro | 100 |
complement * | string | Complemento do endereço (texto livre) | 100 |
postal_code * | string | CEP (https://www.buscacep.correios.com.br/) | 8 |
neighborhood * | string | Bairro | 100 |
Objeto phone
| Campo | Tipo | Descrição | Máx caracteres |
|---|---|---|---|
number * | string | Número do telefone | 10 |
area_code * | string | DDD (https://ddd.guiamais.com.br/) | 2 |
country_code * | string | DDI (https://ddi.guiamais.com.br/) | 3 |
Contas de desembolso
Neste fluxo, o desembolso é liquidado pelo pagamento do QR Code dinâmico Pix fornecido pelo lojista. Em vez de enviar as coordenadas bancárias do beneficiário, envie o payload do QR Code dentro de disbursement_bank_accounts — a QI Tech decodifica e roteia o desembolso para o dono do QR Code.
disbursement_bank_accounts é um array com um único item contendo apenas o payload do QR Code:
| Campo | Tipo | Descrição | Máx caracteres |
|---|---|---|---|
qr_code_url * | string | Payload EMV do QR Code dinâmico Pix a ser pago. | 250 |
O valor registrado no QR Code deve ser igual a financial.disbursed_amount. Decodifique o QR Code via POST /pix/decode_qrcode_payload (passo 1) para obter o valor e use esse mesmo valor em disbursed_amount na emissão da dívida.
Objeto financial
O objeto financial descreve as condições financeiras da operação de crédito.
| Campo | Tipo | Descrição | Máx caracteres |
|---|---|---|---|
disbursed_amount * | float | Valor desembolsado ao tomador (principal da operação) | - |
interest_type | enum | Tipo de juros — amortização e cálculo de juros | - |
credit_operation_type | enum | Tipo da operação de crédito — tipo de instrumento | - |
monthly_interest_rate | float | Taxa de juros mensal prefixada (decimal) | - |
disbursement_date | date | Data de desembolso (YYYY-MM-DD) | - |
first_due_date | date | Data do primeiro vencimento (YYYY-MM-DD) | - |
interest_grace_period | int | Carência de juros (meses) | - |
principal_grace_period | int | Carência do principal | - |
number_of_installments | int | Número de parcelas | - |
fine_configuration | object | Configuração de multa — juros de mora e multa | - |
Objeto fine_configuration
A configuração de multa define a multa e os juros de mora aplicáveis à operação.
| Campo | Tipo | Descrição | Máx caracteres |
|---|---|---|---|
contract_fine_rate | float | Taxa de multa contratual | - |
interest_base | enum | Base de juros — base de cálculo dos juros | - |
monthly_rate | float | Taxa de juros de mora mensal | - |
Enumeradores
Person type
| Valor | Descrição |
|---|---|
natural | Pessoa física |
legal | Pessoa jurídica |
Account type
| Valor | Descrição |
|---|---|
checking_account | Conta corrente |
deposit_account | Conta de depósito |
guaranteed_account | Conta garantida |
investment_account | Conta de investimento |
payment_account | Conta de pagamento |
saving_account | Poupança |
salary_account | Conta salário |
Interest type
| Valor | Descrição |
|---|---|
pre_price_days | Método Price (parcelas iguais) com juros prefixados diários |
pre_price | Método Price (parcelas iguais) com juros prefixados em períodos fixos de 30 dias |
pre_sac | SAC (amortização constante) com juros prefixados diários |
post_sac | SAC com taxa prefixada + índice pós-fixado (CDI, IPCA ou IGP-M), diário |
post_price | Price com taxa prefixada + índice pós-fixado em períodos fixos de 30 dias |
post_price_days | Price com taxa prefixada + índice pós-fixado, diário |
Credit operation type
| Valor | Descrição |
|---|---|
ccb | Cédula de Crédito Bancário |
cce | Cédula de Crédito à Exportação |
nce | Nota de Crédito à Exportação |
No fluxo BNPL / e-commerce, ccb é o valor utilizado na prática.
Interest base
| Valor | Descrição |
|---|---|
workdays | Dias úteis, ano de 252 dias |
calendar_days | Dias corridos, ano de 360 dias |
calendar_days_365 | Dias corridos, ano de 365 dias |
Resposta (HTTP 200)
A resposta síncrona ecoa o corpo da requisição com campos completados pela plataforma (por exemplo contract.contract_number e requester_identifier_key).
Corpo da resposta
{
"additional_data": {
"contract": {
"contract_number": "TEST7886216399",
"signed": true,
"signatures": [
{
"signer": {
"name": "Alan Mathison Turing",
"phone": { "number": "912345678", "area_code": "11", "country_code": "055" },
"email": "alan.turing@email.com",
"document_number": "96969879003"
},
"signature": {
"ip_address": "168.211.22.84",
"timestamp": "27-10-2025 11:07:15",
"signature_file": { "file_url": "http://qitech.com.br/signature.pdf", "file_type": "pdf" },
"geolocation": { "long": "-46.63611", "lat": "-23.5475" },
"fingerprint_device": null
}
}
]
}
},
"financial": {
"number_of_installments": 2,
"credit_operation_type": "ccb",
"interest_type": "pre_price_days",
"monthly_interest_rate": 0.07,
"disbursed_amount": 150000,
"fine_configuration": { "contract_fine_rate": 0.02, "monthly_rate": 0.15, "interest_base": "calendar_days" },
"interest_grace_period": 0,
"disbursement_date": "2026-04-11",
"first_due_date": "2026-05-10",
"principal_grace_period": 0
},
"purchaser_document_number": "32402502000135",
"requester_identifier_key": "40822732-c4ce-41fb-9ee5-5e0304cd04a7",
"document_template_key": "518a0b57-2ce3-4309-94e5-6a95bc056d12",
"borrower": {
"email": "alan.turing@email.com",
"document_identification": "494598fd-c226-4332-a500-591ae3884673",
"document_identification_back": "494598fd-c226-4332-a500-591ae3884673",
"birth_date": "1998-06-03",
"person_type": "natural",
"is_pep": false,
"mother_name": "Nome completo da mãe",
"profession": "Servidor público",
"individual_document_number": "82744088021",
"address": { "city": "São Paulo", "neighborhood": "CENTRO", "street": "Avenida Feliz", "complement": "", "postal_code": "49026100", "state": "SP", "number": "" },
"phone": { "country_code": "055", "number": "912345678", "area_code": "11" },
"document_identification_number": "47003534819",
"name": "Alan Mathison Turing"
},
"disbursement_bank_accounts": [
{
"qr_code_url": "00020126930014br.gov.bcb.pix2571qrcode-h.sandbox.qitech.app/bacen/cobv/3fecc731adf542659b84be038ec4151e5204000053039865802BR5925LogcardMeiosDePagamentoLt6008SaoPaulo61080145200062070503***6304A936"
}
]
}
Webhook (webhook_type: debt)
Após a operação ser processada, a QI Tech notifica seu endpoint com os dados consolidados da dívida, incluindo o valor emitido, breakdown de IOF, taxa de juros prefixada e o cronograma de parcelas.
Corpo do webhook
{
"webhook_type": "debt",
"key": "4e1ed268-9f29-44ce-9991-3bdf036aeacd",
"status": "waiting_disbursement",
"event_datetime": "2026-04-14 03:38:14",
"data": {
"borrower": {
"name": "Alan Mathison Turing",
"document_number": "82744088021",
"related_party_key": "71b28fde-5d75-48b4-9c3f-ee531dccac66"
},
"contract": {
"document_key": null,
"number": "TEST7886216399",
"urls": [],
"signature_information": [
{
"signer_name": "Alan Mathison Turing",
"signer_document_number": "82744088021",
"signer_role": "issuer",
"signer_email": null,
"signer_external_key": null,
"signature_url": null
}
]
},
"requester_identifier_key": "40822732-c4ce-41fb-9ee5-5e0304cd04a7",
"iof_charge_method": "financed",
"collaterals": [],
"contract_fees": [ { "fee_type": "spread", "fee_amount": 453.39 } ],
"external_contract_fees": [ { "fee_type": "tac", "fee_amount": 0, "tax_amount": 0, "net_fee_amount": 0 } ],
"external_contract_fee_amount": 0,
"net_external_contract_fee_amount": 0,
"contract_fee_amount": 453.39,
"issue_amount": 151131.6,
"assignment_amount": 151584.99,
"cet": "7,6600%",
"annual_cet": "142,4473%",
"number_of_installments": 2,
"base_iof": 557.3,
"additional_iof": 574.3,
"total_iof": 1131.6,
"ipoc_code": "324025020203182744088021TEST7886216399",
"prefixed_interest_rate": {
"annual_rate": 1.252191589,
"created_at": "2026-04-14T03:38:10",
"daily_rate": 0.0022578334,
"interest_base": "calendar_days",
"monthly_rate": 0.07
},
"installments": [
{
"business_due_date": "2026-05-11",
"calendar_days": 29,
"due_date": "2026-05-10",
"due_interest": 0,
"due_principal": 151131.6,
"has_interest": true,
"installment_key": "c00dbecc-efb9-4384-8db3-dadba82f2d70",
"installment_number": 1,
"installment_status": "created",
"installment_type": "principal",
"pre_fixed_amount": 10214.91484159,
"principal_amortization_amount": 73277.28515841,
"tax_amount": 174.25338411,
"total_amount": 83492.2,
"workdays": 18
},
{
"business_due_date": "2026-06-10",
"calendar_days": 31,
"due_date": "2026-06-10",
"due_interest": 0,
"due_principal": 77854.31484159,
"has_interest": true,
"installment_key": "d3a2f42d-80cb-4891-b2be-ce80ffd383b2",
"installment_number": 2,
"installment_status": "created",
"installment_type": "principal",
"pre_fixed_amount": 5637.88515841,
"principal_amortization_amount": 77854.31484159,
"tax_amount": 383.04322902,
"total_amount": 83492.2,
"workdays": 22
}
],
"total_pre_fixed_amount": 15852.8
}
}
3. Consulta de dívida
Você pode consultar a dívida posteriormente para recuperar informações ou acompanhar o status atual.
Requisição
Parâmetros de path
| Campo | Tipo | Descrição | Máx caracteres |
|---|---|---|---|
requester_identifier_key * | string | Chave de rastreio do cliente enviada na emissão da dívida | 50 |
Caso possua o credit_operation_key (UUID), utilize GET /v2/credit_operation/{credit_operation_key}.
Resposta
Corpo da resposta
{
"credit_operation_key": "0773a1b1-675a-4a10-80a2-a10308c7281e",
"issue_amount": 151131.6,
"origin_key": "0773a1b1-675a-4a10-80a2-a10308c7281e",
"total_iof": 1131.6,
"assigned_at": null,
"disbursement_start_date": "2026-04-11",
"disbursement_end_date": "2026-04-11",
"issue_date": "2026-04-11",
"requester_identifier_key": "40822732-c4ce-41fb-9ee5-5e0304cd04a7",
"installments": [
{
"due_date": "2026-05-10",
"calendar_days": 29,
"due_principal": 151131.6,
"has_interest": true,
"installment_key": "c00dbecc-efb9-4384-8db3-dadba82f2d70",
"installment_number": 1,
"installment_status": "created",
"installment_type": "principal",
"pre_fixed_amount": 10214.91484159,
"principal_amortization_amount": 73277.28515841,
"tax_amount": 174.25338411,
"total_amount": 83492.2
}
]
}
4. Especificações técnicas e enumeradores
Objeto installments
| Campo | Tipo | Descrição |
|---|---|---|
calendar_days | integer | Número de dias corridos entre parcelas |
due_date | string | Data de vencimento da parcela em dias corridos |
due_principal | float | Saldo do principal na data de vencimento da parcela, antes do pagamento |
has_interest | boolean | Se verdadeiro, há incidência de juros na parcela |
installment_number | integer | Número da parcela |
pre_fixed_amount | float | Valor de juros prefixados pago na parcela |
principal_amortization_amount | float | Valor do principal amortizado na parcela |
tax_amount | float | Valor base de IOF da parcela |
total_amount | float | Valor total da parcela |
due_interest | float | Saldo de juros após a data de vencimento da parcela, antes do pagamento |
workdays | integer | Dias úteis entre parcelas |
Objeto interest_rate
| Campo | Descrição |
|---|---|
annual_rate | Taxa de juros anual prefixada/flutuante (decimal) |
daily_rate | Taxa de juros diária prefixada/flutuante (decimal) |
interest_base | Base de juros — base de cálculo dos juros |
monthly_rate | Taxa de juros mensal prefixada/flutuante (decimal) |
Objeto tax_configuration
| Campo | Descrição |
|---|---|
base_rate | Valor da alíquota base de IOF |
additional_rate | Valor da alíquota adicional de IOF |
Fluxo de reembolso
Este guia explica como processar reembolsos totais e parciais para operações de crédito originadas via fluxo BNPL / e-commerce utilizando o endpoint POST /signed_debt.
O fluxo de reembolso é composto por duas etapas principais:
- Notificação de chargeback — um webhook é enviado sempre que um chargeback é processado, independentemente de representar um reembolso total ou parcial. O webhook contém todas as informações necessárias para identificar e processar o chargeback.
- Renegociação — após processar o webhook com sucesso, é possível iniciar uma renegociação para gerar um novo cronograma de parcelas refletindo o valor reembolsado. Os termos da renegociação são totalmente configuráveis e devem seguir suas regras e políticas de negócio.
Webhook — Reembolso recebido
Visão geral
Assim que um reembolso identificado for recebido, a QI Tech enviará um webhook contendo os detalhes do reembolso, incluindo se trata-se de reembolso total ou parcial e o valor creditado na conta do FIDC.
Com base nessas informações, você poderá aplicar suas políticas de negócio e determinar como proceder com o reembolso solicitado por seu cliente.
Corpo do webhook
{
"origin_key": "d5c88545-4d17-4679-b262-ae170618078a",
"refund_date": "2026-06-26",
"webhook_type": "laas.transitory_conciliation.refund",
"amount": "200.00",
"event_datetime": "2026-06-12T11:52:22"
}