Pular para o conteúdo principal

Emissão de Dívida PJ com Assinatura Imediata (/signed_debt)

Este endpoint realiza a emissão da dívida para uma pessoa jurídica e processa a assinatura do contrato via opt-in em uma única chamada. O desembolso ocorre na data informada no campo disbursement_date, que pode ser diferente da data de emissão.

Não é necessário realizar o cadastro prévio do tomador: basta fornecer os dados cadastrais da empresa e de seus representantes legais no momento da requisição de emissão.

Pré-requisito — upload de documentos

Os documentos da empresa e dos representantes (estatuto/contrato social, documentos de identificação, etc.) devem ser enviados previamente via upload de documentos. Cada upload retorna uma document_key (UUID), que deve ser referenciada nos campos correspondentes do request.

Atenção — Onboarding e Antifraude

A QI Tech oferece uma solução de Onboarding de novos clientes e Antifraude.

Confira aqui a documentação das APIs deste serviço.

Para receber uma cotação, entre em contato com nosso time comercial: comercial@qitech.com.br ou (11) 3522-1301

O formato de assinatura do header e do body desta requisição é descrito em detalhes aqui.

Simulação de dívida

Antes de emitir, é possível simular os valores da operação de crédito. A simulação segue o mesmo padrão da emissão, porém não exige os dados cadastrais do tomador nem a conta de desembolso — basta informar borrower.person_type (legal para PJ) e o objeto financial. O exemplo abaixo simula com base no valor desembolsado (disbursed_amount + number_of_installments).

ENDPOINT
/debt_simulation
MÉTODO
POST

Request

Request Body
{
"borrower": {
"person_type": "legal"
},
"financial": {
"interest_type": "pre_price_days",
"disbursement_date": "2026-04-07",
"fine_configuration": {
"monthly_rate": 0.01,
"interest_base": "calendar_days",
"contract_fine_rate": 0.02
},
"disbursed_amount": 10000,
"monthly_interest_rate": 0.03,
"credit_operation_type": "ccb",
"interest_grace_period": 0,
"number_of_installments": 2,
"principal_grace_period": 0
}
}

Campos do Request

CampoTipoDescrição
borrower.person_type*enumNatureza jurídica do tomador — usar legal para PJ
financial.interest_type*enumMétodo de amortização — Enumerador Interest Type
financial.credit_operation_type*enumTipo do contrato de crédito — Enumerador Credit Operation Type
financial.disbursed_amount*floatValor desembolsado da operação
financial.monthly_interest_rate*floatTaxa de juros mensal pré-fixada (em decimal)
financial.number_of_installments*intNúmero de parcelas
financial.disbursement_datedateData do desembolso (YYYY-MM-DD)
financial.interest_grace_periodintCarência de juros (em meses)
financial.principal_grace_periodintCarência do principal (em meses)
financial.fine_configurationobjectConfiguração de multa e mora — Objeto Fine Configuration

Response

Response Body
{
"type": "debt",
"key": "bf84379c-d4cf-4f16-a63c-865c129e6fce",
"status": "finished",
"event_datetime": "2026-04-07 23:59:28",
"data": {
"interest_type": "pre_price_days",
"credit_operation_type": "ccb",
"interest_grace_period": 0,
"principal_grace_period": 0,
"prefixed_interest_rate": {
"interest_base": "calendar_days",
"annual_rate": 0.42576089,
"monthly_rate": 0.03,
"daily_rate": 0.00097227
},
"issue_date": "2026-04-07",
"number_of_installments": 2,
"final_disbursement_amount": 10000,
"total_pre_fixed_amount": 453.94,
"iof_amount": 51.07,
"cet": 0.0335,
"annual_cet": 0.4851,
"disbursement_date": "2026-04-07",
"issue_amount": 10076.2,
"disbursed_issue_amount": 10000,
"assignment_amount": 10106.4,
"installments": [
{
"calendar_days": 30,
"workdays": 20,
"business_due_date": "2026-05-07",
"due_date": "2026-05-07",
"due_principal": 10076.2,
"has_interest": true,
"post_fixed_amount": 0,
"pre_fixed_amount": 52.4,
"tax_amount": 12.49,
"total_amount": 5226.97,
"principal_amortization_amount": 5174.57,
"installment_number": 1
},
{
"calendar_days": 31,
"workdays": 20,
"business_due_date": "2026-06-08",
"due_date": "2026-06-07",
"due_principal": 4901.63,
"has_interest": true,
"post_fixed_amount": 0,
"pre_fixed_amount": 27.76,
"tax_amount": 26.09,
"total_amount": 5226.97,
"principal_amortization_amount": 4901.63,
"installment_number": 2
}
]
}
}

Campos do Response

A simulação não gera dívida nem retorna DEBT-KEY: o campo key é apenas o identificador da simulação e o status é finished. Os valores ficam dentro de data.

CampoTipoDescrição
disbursed_issue_amountfloatValor desembolsado informado na simulação
final_disbursement_amountfloatValor efetivamente desembolsado para o tomador
issue_amountfloatValor de emissão/nominal da operação
assignment_amountfloatValor de aquisição (cessão) da operação
cetfloatCusto Efetivo Total mensal (em decimal)
annual_cetfloatCusto Efetivo Total anual (em decimal)
iof_amountfloatValor total do IOF
total_pre_fixed_amountfloatTotal de juros pré-fixados da operação
prefixed_interest_rateobjectTaxa de juros nominal (anual, diária, mensal e base de cálculo)
installmentsarrayParcelas simuladas (data, valor, amortização, juros e IOF de cada parcela)

Emissão de dívida

ENDPOINT
/signed_debt
MÉTODO
POST
Testar no Playground

Request

Payload recomendado (PJ + PIX)

Este é o corpo recomendado para emitir uma dívida de pessoa jurídica com desembolso via PIX. Além dos dados cadastrais, ele inclui a evidência de assinatura (opt-in) em additional_data.contract.signatures, que é necessária para a emissão ser concluída com sucesso.

{
"borrower": {
"person_type": "legal",
"name": "RAZAO SOCIAL EMPRESA",
"phone": { "country_code": "055", "area_code": "11", "number": "991112222" },
"address": {
"street": "Rua Gilberto Sabino",
"number": "215",
"neighborhood": "Pinheiros",
"city": "São Paulo",
"state": "SP",
"postal_code": "05425020"
},
"company_document_number": "80282008000127",
"company_statute": "2d9b7271-8dfd-43d5-9aee-d2814b98cb9e",
"company_representatives": [
{
"person_type": "natural",
"name": "NOME DO REPRESENTANTE",
"phone": { "country_code": "055", "area_code": "11", "number": "990121234" },
"address": {
"street": "Rua Gilberto Sabino",
"number": "215",
"neighborhood": "Pinheiros",
"city": "São Paulo",
"state": "SP",
"postal_code": "05425020"
},
"is_pep": false,
"individual_document_number": "31057466093"
}
]
},
"financial": {
"disbursed_amount": 10000,
"interest_type": "pre_price_days",
"credit_operation_type": "ccb",
"number_of_installments": 1,
"interest_grace_period": 0,
"principal_grace_period": 0,
"monthly_interest_rate": 0.03,
"disbursement_date": "2026-06-23",
"first_due_date": "2026-07-23",
"fine_configuration": {
"contract_fine_rate": 0.02,
"monthly_rate": 0.01,
"interest_base": "calendar_days_365"
}
},
"additional_data": {
"contract": {
"contract_number": "STN92924220",
"signatures": [
{
"signer": {
"name": "NOME DO REPRESENTANTE",
"email": "representante@test.com",
"document_number": "32402502000135",
"phone": { "country_code": "011", "area_code": "55", "number": "991112222" }
},
"signature": {
"ip_address": "192.168.1.1",
"signature_file": {
"file_type": "pdf",
"file_url": "https://qitech.com.br/signature.pdf"
}
}
}
]
}
},
"disbursement_bank_accounts": [
{
"pix_key": "2f205c99-3161-4120-badd-854039d12de6",
"pix_transfer_type": "key"
}
],
"purchaser_document_number": "32402502000135",
"requester_identifier_key": "3eb8d228-ed17-4352-a081-1d1f3a35334c",
"simplified": true
}
Observações importantes
  • O bloco additional_data.contract.signatures (opt-in) é necessário para a emissão. Enviar additional_data vazio ({}) faz a emissão falhar.
  • Envie simplified: true para utilizar o fluxo simplificado de emissão.
  • monthly_interest_rate e disbursement_bank_accounts são obrigatórios: sem a taxa o cálculo pré-fixado não é possível, e sem a conta não há desembolso.
  • financial.first_due_date define a data de vencimento da primeira parcela; junto com disbursement_date, determina a agenda de pagamento.
  • postal_code deve ter 8 dígitos, sem traço.
  • company_representatives[].address é obrigatório.
  • interest_grace_period e principal_grace_period são obrigatórios neste modo (use 0 quando não houver carência).

O exemplo completo abaixo inclui também os campos cadastrais adicionais da empresa (company_type, cnae_code, foundation_date, trading_name) e dos representantes.

Request Body
{
"borrower": {
"name": "RAZAO SOCIAL EMPRESA",
"email": "emailempresa@email.com",
"phone": {
"number": "991112222",
"area_code": "11",
"country_code": "055"
},
"is_pep": false,
"address": {
"city": "São Paulo",
"state": "SP",
"number": "215",
"street": "Rua Gilberto Sabino",
"complement": "3 andar",
"postal_code": "05425020",
"neighborhood": "Pinheiros"
},
"cnae_code": "6822-6/00",
"role_type": "issuer",
"person_type": "legal",
"company_type": "ltda",
"trading_name": "NOME FANTASIA DA EMPRESA",
"foundation_date": "2019-07-05",
"attached_documents_list": [],
"company_document_number": "80282008000127",
"company_statute": "aa28e598-55e2-40f1-8884-671772c541a1",
"company_representatives": [
{
"name": "NOME DO REPRESENTANTE",
"email": "nomedorepresentante@email.com",
"phone": {
"number": "990121234",
"area_code": "11",
"country_code": "055"
},
"is_pep": false,
"final_beneficiary": true,
"address": {
"city": "São Paulo",
"state": "SP",
"number": "215",
"street": "Rua Gilberto Sabino",
"complement": "3 andar",
"postal_code": "05425020",
"neighborhood": "Pinheiros"
},
"role_type": "company_representative",
"birth_date": "1993-09-10",
"profession": "DIRETOR",
"mother_name": "NOME DA MAE DO REPRESENTANTE",
"nationality": "BRASILEIRO",
"person_type": "natural",
"marital_status": "single",
"attached_documents_list": [],
"individual_document_number": "31057466093",
"document_identification_number": "20202020200"
}
]
},
"financial": {
"interest_type": "pre_price_days",
"disbursement_date": "2026-04-07",
"first_due_date": "2026-05-07",
"fine_configuration": {
"monthly_rate": 0.01,
"interest_base": "calendar_days",
"contract_fine_rate": 0.02
},
"disbursed_amount": 10000,
"monthly_interest_rate": 0.03,
"credit_operation_type": "ccb",
"interest_grace_period": 0,
"number_of_installments": 2,
"principal_grace_period": 0
},
"additional_data": {
"contract": {
"contract_number": "DWF1761222116",
"signatures": [
{
"signer": {
"name": "NOME DO REPRESENTANTE",
"email": "nomedorepresentante@email.com",
"phone": {
"number": "990121234",
"area_code": "11",
"country_code": "055"
},
"document_number": "31057466093"
},
"signature": {
"timestamp": "28-01-2026 06:36:35",
"ip_address": "192.168.1.1",
"signature_file": {
"file_url": "https://qitech.com.br/signature.pdf",
"file_type": "pdf"
}
}
}
]
}
},
"requester_identifier_key": "d1905ef5-19df-4183-bf0e-802b8229933c",
"purchaser_document_number": "32402502000135",
"disbursement_bank_accounts": [
{
"document_number": "31233261000185",
"name": "Fornecedor",
"pix_key": "2f205c99-3161-4120-badd-854039d12de6",
"pix_transfer_type": "key"
}
],
"simplified": true
}

Detalhes do Request Body

CampoTipoDescriçãoCaracteres
borrower*objectObjeto do tomador pessoa jurídica — a empresa devedora da operação de créditoObjeto Borrower
financial*objectContém todos os detalhes financeiros e parâmetros de cálculo da operaçãoObjeto Financial
additional_data* ⚠objectDados adicionais do contrato. Deve conter contract.signatures (opt-in) para a emissão ser concluída — enviar vazio ({}) faz a emissão falharObjeto Additional Data
disbursement_bank_accountsarrayDados de desembolso via PIX. Não exigido pelo schema, mas operacionalmente obrigatório (sem ele não há desembolso)Objeto Disbursement Bank Account
simplifiedbooleanUtiliza o fluxo simplificado de emissão. Envie true-
purchaser_document_numberstringCNPJ do cessionário — o comprador da operação de crédito (FIDC)14
requester_identifier_keystringChave identificadora única do solicitanteUUID
Legenda

* campo obrigatório no schema · exigido na prática para concluir a emissão · sem marcação: opcional.

Objeto Borrower

O borrower representa a pessoa jurídica tomadora. Por isso o campo person_type deve conter sempre o valor legal.

CampoTipoDescriçãoCaracteres
name*stringRazão social da empresa100
trading_name*stringNome fantasia da empresa100
emailstringE-mail institucional da empresa254
phone*objectTelefone da empresaObjeto Phone
is_pepbooleanIndicador de Pessoa Politicamente Exposta-
address*objectEndereço da empresaObjeto Address
role_typestringPapel do tomador na operação — default: issuer-
person_type*stringClassificação da pessoa — deve ser sempre legal5
company_type*enumTipo da empresaEnumerador Company Type
company_document_number*stringCNPJ da empresa — somente números14
cnae_code*stringClassificação Nacional de Atividades Econômicas-
foundation_date*dateData de abertura da empresa (Formato: "YYYY-MM-DD")10
company_statute*stringdocument_key do PDF do contrato social/estatuto da empresa (enviado previamente)UUID
directors_election_minutestringdocument_key do PDF da ata de eleição (recomendado para company_type igual a sa; não é forçado pelo schema)UUID
attached_documents_listarrayLista de documentos anexados da empresa-
company_representatives*arrayLista de representantes legais da empresaObjeto Company Representatives

Objeto Company Representatives

Lista dos representantes legais da empresa. O representante que assina o contrato deve também constar no array signatures em Objeto Contract.

CampoTipoDescriçãoCaracteres
person_type*stringIdentificador do tipo de pessoa — deve ser natural7
name*stringNome completo do representante100
birth_date*dateData de nascimento (Formato: "YYYY-MM-DD")10
is_pep*booleanDeclaração se o representante é PEP-
individual_document_number*stringCPF do representante — somente números11
phone*objectTelefone do representanteObjeto Phone
address*objectEndereço do representanteObjeto Address
mother_namestringNome da mãe do representante100
professionstringProfissão do representante64
nationalitystringNacionalidade do representante50
marital_statusstringEstado civil do representante-
property_systemstringRegime de bens (recomendado para marital_status igual a married; não é forçado pelo schema)Enumerador Property System
wedding_certificatestringdocument_key do PDF da certidão de casamento (null se solteiro)UUID
spouseobjectDados do cônjuge (null se solteiro; não é forçado pelo schema)Objeto Spouse
final_beneficiarybooleanDeclaração se o representante é beneficiário final da empresa-
document_identificationstringdocument_key do PDF do documento de identificação com foto (RG ou CNH)UUID
document_identification_backstringdocument_key do PDF do verso do documento de identificaçãoUUID
document_identification_typestringTipo do documento de identificação enviado-
document_identification_numberstringNúmero do documento de identificação enviado16
emailstringE-mail do representante254
role_typestringPapel na operação — default: company_representative-
proof_of_residencestringdocument_key do PDF do comprovante de endereço (enviado previamente)UUID

Objeto Spouse

CampoTipoDescriçãoCaracteres
person_type*stringIdentificador do tipo de pessoa — deve ser natural7
name*stringNome completo do cônjuge100
mother_name*stringNome da mãe do cônjuge100
birth_date*dateData de nascimento (Formato: "YYYY-MM-DD")10
profession*stringProfissão do cônjuge64
is_pep*booleanDeclaração se o cônjuge é PEP-
individual_document_number*stringCPF do cônjuge — somente números11
document_identification_number*stringNúmero do documento de identificação do cônjuge16
email*stringE-mail do cônjuge254
phone*objectTelefone do cônjugeObjeto Phone
addressobjectEndereço do cônjugeObjeto Address

Objeto Address

CampoTipoDescriçãoCaracteres
city*stringNome da cidade100
state*stringSigla do estado (duas letras maiúsculas)2
number*stringNúmero do logradouro10
street*stringNome do logradouro100
complementstringComplemento do endereço (texto livre)100
postal_code*stringCEP — somente números8
neighborhood*stringNome do bairro100

Objeto Phone

CampoTipoDescriçãoCaracteres
number*stringNúmero do telefone10
area_code*stringCódigo de área (DDD)2
country_code*stringCódigo internacional (ex: "055")3

Objeto Financial

Nesta modalidade, o valor da operação é definido pelo valor líquido a ser desembolsado (disbursed_amount), em conjunto com a taxa de juros (monthly_interest_rate) e o número de parcelas (number_of_installments). A partir desses dados, o sistema calcula o valor de cada parcela.

CampoTipoDescriçãoCaracteres
interest_type*stringMétodo de amortizaçãoEnumerador Interest Type
fine_configuration*objectConfiguração de multa e moraObjeto Fine Configuration
disbursed_amount*floatValor líquido a ser desembolsado15,2
credit_operation_type*stringTipo da operação de créditoEnumerador Credit Operation Type
number_of_installments*integerNúmero de parcelas3
interest_grace_period*integerPeríodo de carência de juros (em meses) — use 0 quando não houver3
principal_grace_period*integerPeríodo de carência do principal (em meses) — use 0 quando não houver3
monthly_interest_rate ⚠floatTaxa de juros mensal (em decimal). Não exigida pelo schema, mas necessária para o cálculo pré-fixado (interest_type pre_*)10,6
disbursement_datestringData de desembolso (YYYY-MM-DD). Se omitida, assume a data de emissão10
first_due_datestringData de vencimento da primeira parcela (YYYY-MM-DD)10

Objeto Fine Configuration

CampoTipoDescriçãoCaracteres
monthly_rate*floatTaxa de mora mensal (alternativamente, informe daily_rate ou annual_rate)10,6
interest_base*stringBase de cálculo da moraEnumerador Interest Base
contract_fine_rate*floatTaxa de multa contratual10,6

Objeto Disbursement Bank Account

O desembolso desta operação é realizado via chave PIX. Informe os dados do recebedor do desembolso no array disbursement_bank_accounts.

CampoTipoDescriçãoCaracteres
pix_key*stringChave PIX para a qual o desembolso será realizado-
pix_transfer_type*stringTipo de transferência PIX — utilizar key para transferência via chave-
document_numberstringCPF/CNPJ do titular da chave PIX. Obrigatório apenas quando há mais de uma conta de desembolso14
namestringNome do titular da chave PIX. Obrigatório apenas quando há mais de uma conta de desembolso50
percentage_receivablefloatPercentual do desembolso para esta conta. Obrigatório com múltiplas contas (a soma deve ser 100)3

Objeto Additional Data

A chave additional_data é obrigatória e deve conter o bloco contract com a evidência de assinatura (opt-in) em signatures. Enviar additional_data vazio ({}) faz a emissão falhar.

CampoTipoDescriçãoCaracteres
contract*objectDados do contratoObjeto Contract

Objeto Contract

CampoTipoDescriçãoCaracteres
contract_number*stringNúmero identificador único do contrato20
signatures*arrayLista de objetos de evidência de assinatura digital (Opt-in) dos representantes legaisObjeto Signature

Objeto Signature

CampoTipoDescriçãoCaracteres
signer*objectDados de identificação do assinante (representante legal)Objeto Signer
signature*objectDados de evidência da assinatura digitalObjeto Signature Details

Objeto Signer

CampoTipoDescriçãoCaracteres
name*stringNome completo do assinante255
document_number*stringCPF do assinante11
emailstringE-mail do assinante100
phoneobjectTelefone do assinanteObjeto Phone

Objeto Signature Details

CampoTipoDescriçãoCaracteres
ip_address*stringEndereço IP utilizado na assinatura45
timestamp*stringData e hora da assinatura24
signature_file*objectArquivo da assinatura digitalObjeto Signature File

Objeto Signature File

CampoTipoDescriçãoCaracteres
file_url*stringLink direto para o documento do contrato assinado (PDF)2048
file_type*stringFormato do arquivo de assinatura (ex: "pdf")4

Response

A resposta à requisição de emissão retornará o plano de pagamento e uma DEBT-KEY, que é o identificador da dívida na QI SCD.

STATUS
201
Response Body
{
"webhook_type": "debt",
"key": "72760166-4ddf-41fb-8a8c-605f8f4fc35c",
"status": "issued",
"event_datetime": "2026-04-07 23:59:28",
"data": {
"borrower": {
"name": "RAZAO SOCIAL EMPRESA",
"document_number": "80282008000127",
"related_party_key": "24fac77e-7782-4f72-b31a-daee288e34ed"
},
"contract": {
"document_key": null,
"number": "DWF1761222116",
"urls": [],
"signature_information": [
{
"signer_name": "NOME DO REPRESENTANTE",
"signer_document_number": "31057466093",
"signer_role": "issuer",
"signer_email": null,
"signer_external_key": null,
"signature_url": null
}
]
},
"requester_identifier_key": "d1905ef5-19df-4183-bf0e-802b8229933c",
"iof_charge_method": "financed",
"collaterals": [],
"contract_fees": [
{
"fee_type": "spread",
"fee_amount": 30.2
}
],
"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": 30.2,
"issue_amount": 10076.2,
"assignment_amount": 10106.4,
"cet": "3,3500%",
"annual_cet": "48,5100%",
"number_of_installments": 2,
"base_iof": 12.49,
"additional_iof": 38.58,
"total_iof": 51.07,
"ipoc_code": "324025020203180282008000127DWF1761222116",
"prefixed_interest_rate": {
"annual_rate": 0.42576089,
"created_at": "2026-04-07T23:59:22",
"daily_rate": 0.00097227,
"interest_base": "calendar_days",
"monthly_rate": 0.03
},
"installments": [
{
"accrual_reference_date": null,
"additional_costs": [],
"advanced_paid_amount": 0,
"bank_slip_key": null,
"business_due_date": "2026-05-07",
"calendar_days": 30,
"digitable_line": null,
"due_date": "2026-05-07",
"due_interest": 0,
"due_principal": 10076.2,
"fine_amount": null,
"has_interest": true,
"installment_history": [],
"installment_key": "1dea396f-beb1-4df3-9822-35800b4c095a",
"installment_number": 1,
"installment_payment": [],
"installment_status": "created",
"installment_type": "principal",
"paid_amount": 0,
"paid_at": null,
"post_fixed_amount": 0,
"qr_code_key": null,
"qr_code_url": null,
"renegotiation_proposal_key": null,
"total_amount": 5226.97,
"total_paid_amount": 0,
"workdays": 20
},
{
"accrual_reference_date": null,
"additional_costs": [],
"advanced_paid_amount": 0,
"bank_slip_key": null,
"business_due_date": "2026-06-08",
"calendar_days": 31,
"digitable_line": null,
"due_date": "2026-06-07",
"due_interest": 0,
"fine_amount": null,
"has_interest": true,
"installment_history": [],
"installment_key": "370e73d1-55d8-431e-9b22-d08fb8297999",
"installment_number": 2,
"installment_payment": [],
"installment_status": "created",
"installment_type": "principal",
"paid_amount": 0,
"paid_at": null,
"post_fixed_amount": 0,
"qr_code_key": null,
"qr_code_url": null,
"renegotiation_proposal_key": null,
"total_amount": 5226.97,
"total_paid_amount": 0,
"workdays": 20
}
],
"total_pre_fixed_amount": 453.94
}
}
Atenção

Lembre-se de salvar a DEBT-KEY retornada, pois ela será necessária para consultas, renegociações e estornos da operação.

Detalhes do Response Body

CampoTipoDescrição
webhook_typestringIdentificador do tipo de evento
keystringDEBT-KEY — identificador único da dívida na QI SCD (UUID)
statusstringStatus atual da dívida — veja os status de uma dívida
event_datetimestringData e hora do evento
dataobjectObjeto Data — Dados da operação

Objeto Data

CampoTipoDescrição
borrowerobjectDados do tomador (razão social, CNPJ e related_party_key)
contractobjectDados do contrato, incluindo informações de assinatura
requester_identifier_keystringChave identificadora do solicitante (UUID)
iof_charge_methodstringMétodo de cobrança do IOF — sempre "financed"
collateralsarrayLista de garantias da operação
contract_feesarrayTaxas QI Tech cobradas na operação
external_contract_feesarrayTaxas externas cobradas na operação
contract_fee_amountfloatValor total das taxas QI Tech
issue_amountfloatValor nominal da operação de crédito
assignment_amountfloatValor de cessão da operação de crédito
cetstringCusto Efetivo Total mensal
annual_cetstringCusto Efetivo Total anual
number_of_installmentsintegerNúmero de parcelas
base_ioffloatValor base do IOF
additional_ioffloatValor adicional do IOF
total_ioffloatValor total do IOF
ipoc_codestringCódigo de registro de crédito brasileiro gerado pela QI Tech
prefixed_interest_rateobjectTaxa de juros nominal (anual, diária, mensal e base de cálculo)
installmentsarrayParcelas da operação
total_pre_fixed_amountfloatValor total dos juros pré-fixados de todas as parcelas

Webhooks

Durante o ciclo de vida da operação, a QI Tech envia webhooks para a URL configurada. Abaixo estão os eventos relevantes para este fluxo.

Informação

O timeout para resposta dos nossos webhooks é de 5 segundos.

Atenção!

Os webhooks da QI Tech não devem ser mapeados de forma restrita. Campos adicionais podem ser incluídos aos payloads retornados.

Webhook de documento gerado

Enviado quando o contrato da operação é gerado. Traz a document_key e as URLs do documento (incluindo a versão assinada).

Response Body
{
"key": "cc91aac2-8d15-4349-b155-7c23080c61e8",
"data": {
"contract": {
"urls": [
"https://storage.googleapis.com/live-doc-api/documents/50711223-dfe2-4ed6-9c41-42d68638cfff.pdf"
]
},
"document_key": "50711223-dfe2-4ed6-9c41-42d68638cfff",
"signed_contract_url": "https://storage.googleapis.com/live-doc-api/documents/_signed.pdf"
},
"status": "generated_document",
"webhook_type": "debt",
"event_datetime": "2026-03-24 08:27:11"
}

Webhook de desembolso

Enviado quando o desembolso da operação é realizado (status: disbursed). Traz a agenda de parcelas e os comprovantes de transferência (ted_receipt_list).

Response Body
{
"key": "bb81d525s-aa4b-4ddf-81d6-aa4b41fd04nb",
"data": {
"installments": [
{
"due_date": "2025-11-24",
"total_amount": 8304.16,
"installment_key": "7ec2f4d-b21e-4bd5-ahs6-60e998267249",
"pre_fixed_amount": 2475.77421509,
"installment_number": 1,
"principal_amortization_amount": 5828.23857532
},
{
"due_date": "2025-12-22",
"total_amount": 8304.16,
"installment_key": "54g37d78-a9a9-bf82-9f8e-fd3ba123797a",
"pre_fixed_amount": 2001.06342502,
"installment_number": 2,
"principal_amortization_amount": 6303.43346322
}
],
"ted_receipt_list": [
{
"fee": 0,
"url": "https://storage.storage.com/sandbox-doc-api/documents/f9as9329-22bd-4dbg-91a2-f2sdgeth4h04/fheth459-bhrf-4hrt-9hra-fdsfsgehth42.pdf",
"amount": 123456.0,
"origin": {
"name": "QI SOCIEDADE DE CRÉDITO DIRETO S.A.",
"type": "payment_account",
"branch": "0001",
"document": "32402502000777",
"bank_code": "329",
"account_key": "5d068423-7774-49e4-b15b-7741238df5a8",
"branch_digit": null,
"account_digit": "5",
"account_branch": "0001",
"account_number": "00002",
"financial_institution_name": "QI SOCIEDADE DE CRÉDITO DIRETO S.A."
},
"timestamp": "2025-10-26T17:00:51",
"description": "60701190 8615 22110-2 96969879003 - Fornecedor",
"destination": {
"name": "Fornecedor",
"type": "checking_account",
"branch": "8612",
"purpose": "Crédito PIX em Conta",
"document": "31233261000185",
"bank_ispb": "60111190",
"branch_digit": null,
"account_digit": "2",
"account_number": "44110",
"financial_institution_name": "BANCO S.A."
},
"end_to_end_id": "E32402402200510221300gNgeefVNtVr",
"transaction_key": "25044504-1902-412a-a445-23b813bee6c1",
"origin_transaction_key": "542224ea-b5ea-49ff-b7b7-673b81af387b"
}
],
"requester_identifier_key": null
},
"status": "disbursed",
"webhook_type": "debt",
"event_datetime": "2025-10-26 17:00:52"
}

Webhook de cancelamento

Enviado quando a operação é cancelada (status: canceled). O campo cancel_reason_enumerator indica o motivo.

Response Body
{
"webhook_type": "debt",
"key": "27a099df-4688-43cb-87fa-515b1cf343a5",
"event_datetime": "2022-09-27 07:03:49",
"data": {
"cancel_reason": "Operacao cancelada manualmente",
"cancel_reason_enumerator": "manual"
},
"status": "canceled"
}

Motivos de cancelamento

cancel_reason_enumeratorDescrição
disbursing_errorOperação cancelada por erro no momento do desembolso.
waiting_signatureOperação cancelada por falta de assinatura.
is_portabilityA operação foi cancelada pois é uma portabilidade que não foi concluída.
not_collateral_constitutedA operação foi cancelada pois as garantias não foram constituídas.
entry_not_paidA operação foi cancelada pois a entrada não foi paga.
not_assignedOperação cancelada porque o processo de cessão não foi realizado.
pix_max_retryOperação cancelada pois o banco recebedor não conseguiu receber o desembolso.
lack_of_resourceOperação cancelada por falta de recurso.
manualOperação cancelada manualmente.
kyc_not_acceptedOperação cancelada pois não foi aprovada no compliance.
not_collateral_fgtsOperação cancelada por erro com FGTS.
agencia_conta_invalidaAgência ou conta destinatária do crédito inválida.
invalid_accountNúmero da conta de destino é inexistente ou inválido.
invalid_document_numberCPF/CNPJ da conta de destino está incorreto.
unsupported_transactionA conta de destino não suporta este tipo de transação.
bank_slip_paymentOperação cancelada por erro no pagamento do boleto.
bank_slip_paidOperação cancelada pois o boleto já está pago.
bank_slip_written_offOperação cancelada pois o boleto já está baixado.
invalid_ispbNúmero ISPB é inválido ou inexistente.
rejected_paymentOrdem de pagamento foi rejeitada pelo banco recebedor.
disbursed_amount_refundedOperação cancelada devido à devolução do valor de desembolso.

Enumeradores

Enumerador Company Type

EnumeradorDescrição
ltdaSociedade Limitada
saSociedade Anônima
micro_enterpriseMicroempresa
freelancerProfissional autônomo

Enumerador Property System

EnumeradorDescrição
total_communion_of_goodsComunhão total de bens
partial_communion_of_goodsComunhão parcial de bens
final_participation_of_acquisitionsParticipação final nos aquestos
compulsory_separation_of_goodsSeparação obrigatória de bens

Enumerador Interest Type

EnumeradorDescrição
pre_price_daysAmortização Price (parcelas iguais) com juros pré-fixado ao dia
pre_priceAmortização Price (parcelas iguais) com juros pré-fixado em períodos fixos (30 dias)
pre_sacAmortização SAC (amortização constante) com juros pré-fixado ao dia
post_sacAmortização SAC com juros pré-fixado + indexador pós-fixado (cdi, ipca ou igpm) ao dia
post_priceAmortização Price com juros pré-fixado + indexador pós-fixado em períodos fixos (30 dias)
post_price_daysAmortização Price com juros pré-fixado + indexador pós-fixado ao dia

Enumerador Credit Operation Type

EnumeradorDescrição
ccbCédula de Crédito Bancário
cceCédula de Crédito à Exportação
cciCédula de Crédito Imobiliário
nceNota de Crédito à Exportação
ncomNota Comercial

Enumerador Interest Base

EnumeradorDescrição
workdaysCálculo de juros em dias úteis considerando um ano de 252 dias
calendar_daysCálculo de juros em dias corridos considerando um ano de 360 dias
calendar_days_365Cálculo de juros em dias corridos considerando um ano de 365 dias

Decodificação de QR Code

Request

ENDPOINT
pix/decode_qrcode_payload
MÉTODO
POST
Testar no Playground

Request Body

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

Response Body

CampoTipoDescriçãoDisponível
qr_code_typestringTipo do QR Code: static, dynamic_instant ou dynamic_term.Todos
qr_code_payloadstringPayload EMV original recebido na requisição.Todos
pix_keystringChave Pix do recebedor extraída do payload do QR Code.Todos
transfer_amountstringValor da transferência, quando especificado no QR Code.static
additional_datastringDados adicionais contidos no QR Code estático.static
receiver_conciliation_idstringIdentificador de conciliação do recebedor (txid).dynamic_*
amountstringValor original da cobrança.dynamic_*
statusstringStatus da cobrança dinâmica.dynamic_*

:::info Status

Para QR Codes dinâmicos, o status do QR Code é retornado de acordo com a tabela de enumeração abaixo.

Erros

Response Body: QR Code estáticoQR 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\"}"
}
Response Body
{
"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\"}"
}

O que é a Análise de Risco (LAaS)?

Versão preliminar

Esta é a primeira versão desta página conceitual e pode sofrer pequenas alterações.

Antes de entrar nos campos, tipos e códigos de erro, vale entender por que a Análise de Risco existe e o que ela resolve. Esta seção é o "mapa mental" — a documentação técnica completa (com todos os campos de request/response) está logo abaixo, em Análise de Risco.

A ideia em uma frase

A Análise de Risco (também chamada de LAaS, Lending Analysis as a Service) é um único endpoint que combina, em uma só chamada, as verificações necessárias para decidir se um tomador pode ou não receber crédito — onboarding, análise de crédito e, quando aplicável, consulta de margem consignável — e entrega o resultado consolidado no final, sem que você precise orquestrar cada verificação separadamente.

A analogia: um check-in de aeroporto

Pense no pedido de crédito como um passageiro tentando embarcar em um voo.

  • Você (cliente/parceiro) é o balcão de check-in. É você quem recebe o passageiro (o tomador) e decide encaminhá-lo para o processo de embarque, enviando um único POST /lending_analysis.

  • A consulta prévia (inquiry) é a checagem de documentos antes mesmo da fila de segurança. Se o produto é consignado privado, antes de qualquer outra coisa a QI Tech confere se o passageiro tem "passagem válida" — isto é, se ele tem margem consignável disponível com o empregador informado. Sem isso, não faz sentido nem seguir para as próximas etapas.

  • As etapas (analysis_steps) são os controles de segurança e imigração, em sequência. Cada etapa é um checkpoint independente, executado na ordem:

    1. Onboarding (onboarding_natural_person) — o controle de identidade: "esse documento é válido? essa pessoa é quem diz ser?"
    2. Análise de crédito (credit_analysis_natural_person) — o controle de "bagagem": "essa pessoa pode embarcar com esse valor de crédito, dentro de que limites de taxa e parcelas?"

    Se um checkpoint reprova, o passageiro não segue para o próximo — a análise já fecha como reproved ali mesmo. E nem todo passageiro passa pelos dois controles: quais etapas se aplicam a cada tomador dependem da configuração do produto (AnalysisConfiguration) do lado da QI Tech — em alguns casos só o onboarding é executado.

  • A resposta síncrona é o seu tíquete de fila. Ao enviar o POST, você recebe na hora um lending_analysis_key e o status pending_inquiry — como dizer "seu passageiro está na fila, aqui está o número dele". Ainda não é a decisão final.

  • O webhook é o alto-falante do aeroporto anunciando o embarque. Quando todos os checkpoints terminam, a QI Tech avisa você via webhook (laas.lending_analysis.status_change) com o resultado consolidado — aprovado, reprovado ou falha técnica. Você não precisa ficar checando a toda hora (embora possa, via polling — ver abaixo).

  • A consulta de elegibilidade é a pergunta "esse passageiro já tem um embarque em andamento?" Antes de criar uma nova análise, você pode perguntar via GET /lending_analysis se aquele CPF já possui uma análise ativa para aquele produto — evitando embarcar o mesmo passageiro duas vezes.

Da analogia para a API

No aeroportoNa API
Balcão de check-in recebe o passageiroPOST /lending_analysis
Passageiro já tem embarque em andamento?GET /lending_analysis (elegibilidade)
Número da filalending_analysis_key
Checagem prévia de documento de viageminquiries (ex: consulta de margem consignável)
Controle de identidadeEtapa onboarding_natural_person
Controle de bagagem/valorEtapa credit_analysis_natural_person
Painel de embarque, consultável a qualquer momentoGET /lending_analysis/{lending_analysis_key}
Anúncio de embarque no alto-falanteWebhook laas.lending_analysis.status_change

O fluxo, passo a passo

  1. Você envia POST /lending_analysis com o CPF do tomador, o tipo de produto (lending_analysis_type) e os dados necessários (ex: private_payroll para consignado privado, authorization_term com a autorização assinada pelo tomador).
  2. A API responde na hora (síncrono) com analysis_status: pending_inquiry e o lending_analysis_key. Essa resposta só confirma que a análise foi criada — não é o resultado.
  3. Nos bastidores (assíncrono), a QI Tech:
    • roda a consulta prévia necessária (ex: margem consignável), se o produto exigir;
    • executa a etapa de onboarding;
    • se aprovada e a etapa estiver configurada para o produto, executa a etapa de análise de crédito;
    • se qualquer etapa reprovar ou falhar, a análise encerra ali com esse resultado.
  4. Ao chegar a um status final (approved, reproved ou failed), a QI Tech dispara o webhook laas.lending_analysis.status_change para a URL configurada no seu ambiente, com o detalhe de cada etapa e das consultas realizadas.
  5. Alternativamente, você pode consultar o andamento a qualquer momento com GET /lending_analysis/{lending_analysis_key} (bom para telas de acompanhamento ou para reconciliar caso um webhook se perca).
Dica

Pense duas vezes antes de fazer polling agressivo no GET de status — o webhook já te avisa assim que o resultado sai. Use o GET para reconciliação, não como substituto do webhook.

Os "vistos" (status) explicados sem juridiquês

Status da análiseO que realmente significa
pending_inquiry"Chegou na fila, ainda estamos conferindo os documentos de viagem." Estado inicial.
pending_analysis"Passou na checagem prévia, está andando pelos controles de segurança (onboarding / análise de crédito)."
approved"Embarque liberado." Estado final.
reproved"Não pode embarcar desta vez." Estado final — algum checkpoint reprovou.
failed"Aeroporto com problema técnico" — falha da própria análise (indisponibilidade de algum provedor, erro técnico), não uma reprovação de mérito. Estado final.

Cada etapa individual (onboarding_natural_person, credit_analysis_natural_person) tem seu próprio mini-status (approved/reproved/failed) e um reason explicando o motivo — é o "aqui está exatamente por que barramos você nesse checkpoint".

Perguntas rápidas

Preciso me preocupar com a ordem das etapas, ou com quais etapas vão rodar? Não — tanto a ordem (onboarding antes de credit_analysis) quanto quais etapas se aplicam a cada tomador são definidas pela configuração do produto (AnalysisConfiguration) do lado da QI Tech. Você só recebe o resultado consolidado, já na ordem certa.

E se o passageiro já tiver um embarque em andamento? Use a consulta de elegibilidade (GET /lending_analysis) antes de criar uma nova análise para o mesmo CPF/produto, evitando duplicidade.

O que acontece se eu perder o webhook? Consulte o status a qualquer momento com GET /lending_analysis/{lending_analysis_key} — ele traz o mesmo resultado, incluindo o histórico completo de eventos, etapas e consultas.

Para ir além

Análise de Risco

Versão preliminar

Esta é a primeira versão da documentação do Análise de Risco e pode sofrer pequenas alterações. Recomendamos acompanhar esta página para futuras atualizações.

O endpoint de Análise de Risco permite realizar uma análise de crédito completa para o tomador, combinando onboarding, análise de crédito e consulta de dados do trabalhador do consignado privado em uma única requisição.

A operação é assíncrona: ao enviar a requisição, a API retorna uma resposta síncrona com o status pending_inquiry. O resultado final da análise é entregue via webhook quando o processamento é concluído.

Fluxo
  1. O cliente envia um POST para /lending_analysis com os dados do tomador e as consultas desejadas.
  2. A API retorna uma resposta síncrona com a lending_analysis_key e status pending_inquiry.
  3. Ao finalizar o processamento, a API envia um webhook com o resultado completo da análise.
Endpoints disponíveis

Além do POST /lending_analysis descrito abaixo, a API expõe duas consultas auxiliares:

  • Consulta de elegibilidadeGET /lending_analysis para verificar se o tomador já tem análise ativa antes de criar uma nova.
  • Consulta de status da análiseGET /lending_analysis/{lending_analysis_key} para acompanhar o estado da análise via polling, como alternativa ao webhook.

Request

ENDPOINT
/lending_analysis
MÉTODO
POST
Request Body
{
"request_identifier_key": "12345678901",
"document_number": "46276658812",
"lending_analysis_type": "private_payroll",
"purchaser_document_number": "12345678000199",
"private_payroll": {
"employer_document_number": "12345678000199",
"registration_number": "12345678901"
},
"authorization_term": {
"legal_representative_document_number": "98765432100",
"signature": {
"signer": {
"document_number": "46276658812",
"name": "João da Silva",
"email": "joao.silva@email.com",
"phone": {
"number": "912345678",
"area_code": "11",
"country_code": "55"
}
},
"authentication_type": "opt_in",
"authenticity": {
"timestamp": "2026-03-12T10:00:00Z",
"ip_address": "192.168.1.100",
"fingerprint": {},
"session_id": "3571e292-3a83-4011-904d-20ee963022ef"
}
}
},
"analysis_data": {
"name": "João da Silva"
}
}

Body Params

CampoTipoDescriçãoCaracteres
request_identifier_keystringChave idempotente da requisição. Deve ser única por análise.-
document_numberstringCPF do tomador (apenas dígitos).11
lending_analysis_typestringTipo da análise de crédito.Enumeradores Análise de Risco Type
purchaser_document_numberstringCNPJ do comprador/cessionário. (opcional)14
private_payrollobjectDados do consignado privado do tomador.Private Payroll Object
authorization_termobjectTermo de autorização do tomador.Authorization Term Object
analysis_dataobjectDados adicionais do tomador para a análise.Analysis Data Object

Private Payroll Object

CampoTipoDescriçãoCaracteres
employer_document_numberstringCNPJ do empregador.14
registration_numberstringNúmero de matrícula do trabalhador.-

Authorization Term Object

Atenção

Nos casos em que houver representante legal, é necessário preencher o campo legal_representative_document_number com o CPF do representante legal, e os dados do objeto signer devem ser preenchidos com os dados do representante.

Para mais informações sobre o objeto authorization_term, consulte a documentação oficial: Consultas do Trabalhador - Consulta de Dados do Trabalhador

CampoTipoDescriçãoCaracteres
legal_representative_document_numberstringCPF do representante legal (obrigatório apenas quando houver representante legal).11
signature.signer.document_numberstringCPF do assinante.11
signature.signer.namestringNome do assinante.-
signature.signer.emailstringEmail do assinante. (opcional)-
signature.signer.phone.numberstringNúmero de telefone do assinante. (opcional)-
signature.signer.phone.area_codestringDDD do assinante. (opcional)2
signature.signer.phone.country_codestringCódigo do país (ex: "55"). (opcional)3
signature.authentication_typestringTipo de autenticação. Deve ser "opt_in".-
signature.authenticity.timestampstringData e hora do aceite (formato ISO 8601: 2026-03-12T10:00:00Z).-
signature.authenticity.ip_addressstringIP da sessão do usuário (IPv4 ou IPv6).-
signature.authenticity.fingerprintobjectEvidências adicionais de rastreabilidade (pode ser objeto vazio {}).-
signature.authenticity.session_idstringIdentificador da sessão do usuário (min. 10, máx. 50 caracteres).50

Analysis Data Object

CampoTipoDescriçãoCaracteres
namestringNome do tomador. (opcional)-

Response

STATUS
202
Response Body
{
"analysis_status": "pending_inquiry",
"lending_analysis_key": "06666318-c9e9-416b-ae2f-460355a3d8e8"
}
CampoTipoDescrição
analysis_statusstringStatus atual da análise. Retorna pending_inquiry na resposta síncrona.
lending_analysis_keystringChave UUID da análise, utilizada para correlacionar com o webhook.

STATUS
400
Response Body
{
"title": "Bad Request",
"description": "Invalid or missing required fields in the request body. Check 'document_number', 'lending_analysis_type', 'private_payroll', and 'authorization_term'.",
"translation": "Campos obrigatórios ausentes ou inválidos no corpo da requisição. Verifique 'document_number', 'lending_analysis_type', 'private_payroll' e 'authorization_term'.",
"extra_fields": {},
"code": "LAS000001"
}

STATUS
409

Retornado quando o campo request_identifier_key já foi utilizado em uma requisição anterior.

Response Body
{
"title": "Conflict",
"description": "A lending analysis with the provided 'request_identifier_key' already exists. Each analysis must use a unique identifier.",
"translation": "Já existe uma análise de crédito com o 'request_identifier_key' informado. Cada análise deve utilizar um identificador único.",
"extra_fields": {
"existing_lending_analysis_key": "06666318-c9e9-416b-ae2f-460355a3d8e8"
},
"code": "LAS000002"
}

Consulta de elegibilidade

Verifica se o tomador possui uma análise ativa (não expirada) para um determinado produto. Se não houver, indica que uma nova análise pode ser criada com POST /lending_analysis.

ENDPOINT
/lending_analysis
MÉTODO
GET

Query Params

CampoTipoDescriçãoCaracteres
document_numberstringCPF do tomador (apenas dígitos).11
product_namestringNome do produto. Atualmente o único valor aceito é private_payroll.-
purchaser_document_numberstringCNPJ do comprador/cessionário. (opcional)14

Exemplo de chamada

GET /lending_analysis?document_number=46276658812&product_name=private_payroll

Response — Tomador com análise ativa

STATUS
200
Response Body
{
"lending_analysis_key": "06666318-c9e9-416b-ae2f-460355a3d8e8",
"analysis_status": "approved",
"expires_at": "2026-03-17T10:00:00Z"
}
CampoTipoDescrição
lending_analysis_keystringChave UUID da análise ativa do tomador.
analysis_statusstringStatus atual da análise. Veja Status da análise.
expires_atstringData e hora (ISO 8601) em que a análise expira. Após essa data, o tomador volta a ser elegível para uma nova análise.

Response — Tomador sem análise ativa

STATUS
404

Retornado quando não existe análise ativa para o tomador na combinação informada. O cliente pode prosseguir com POST /lending_analysis para iniciar uma nova análise (desde que exista uma AnalysisConfiguration ativa para o mesmo requester_key, produto e purchaser_document_number).

Response Body
{
"code": "LAS000009",
"title": "No active lending analysis found",
"description": "No active lending analysis found for product_name=<X>, purchaser_document_number=<Y>. The borrower has no active analysis for the given product.",
"translation": "Nenhuma analise de credito ativa encontrada para product_name=<X>, purchaser_document_number=<Y>. O tomador nao possui analise ativa para o produto informado."
}

Disparado quando não existe nenhuma Analysis para a tupla (requester_key, product_name, document_number, purchaser_document_number) que esteja em status diferente de failed e ainda dentro do prazo de validade (expires_at no futuro).


Consulta de status da análise

Retorna o estado completo de uma análise específica, incluindo o histórico de transições de status, etapas individuais executadas e dados das consultas realizadas (inquiries). Útil quando o cliente prefere fazer polling em vez de aguardar exclusivamente o webhook de conclusão.

ENDPOINT
/lending_analysis/{lending_analysis_key}
MÉTODO
GET

Path Params

CampoTipoDescrição
lending_analysis_keystringUUID da análise, retornado pelo POST /lending_analysis na criação.

Exemplo de chamada

GET /lending_analysis/06666318-c9e9-416b-ae2f-460355a3d8e8

Response

STATUS
200
Response Body
{
"lending_analysis_key": "06666318-c9e9-416b-ae2f-460355a3d8e8",
"analysis_status": "approved",
"expires_at": "2026-03-17T10:00:00Z",
"request_identifier_key": "12345678901",
"document_number": "46276658812",
"additional_data": {
"private_payroll": {
"employer_document_number": "12345678000199",
"registration_number": "12345678901"
},
"analysis_data": {
"name": "João da Silva"
}
},
"status_events": [
{
"status": "pending_inquiry",
"created_at": "2026-03-12T10:00:00Z"
},
{
"status": "approved",
"created_at": "2026-03-12T10:05:00Z"
}
],
"inquiries": [
{
"inquiry_key": "0a1b2c3d-e5f6-7890-abcd-ef1234567890",
"inquiry_type": "private_payroll",
"inquiry_status": "success",
"inquiry_data": {}
}
],
"steps": [
{
"analysis_step_key": "f1e2d3c4-b5a6-7890-abcd-ef1234567890",
"order": 1,
"step_type": "onboarding_natural_person",
"step_status": "approved"
},
{
"analysis_step_key": "a9b8c7d6-e5f4-3210-abcd-ef1234567890",
"order": 2,
"step_type": "credit_analysis_natural_person",
"step_status": "approved"
}
]
}

Campos principais

CampoTipoDescrição
lending_analysis_keystringUUID da análise.
analysis_statusstringStatus atual da análise. Veja Status da análise.
expires_atstringData e hora de expiração da análise (ISO 8601).
request_identifier_keystringChave idempotente informada na requisição original.
document_numberstringCPF do tomador.
additional_dataobjectDados originais enviados em POST /lending_analysis (private_payroll, authorization_term, analysis_data).
status_eventsarrayHistórico de transições de status. Status Events Object
inquiriesarrayConsultas realizadas durante a análise. Inquiries Object (consulta)
stepsarrayEtapas individuais executadas. Steps Object

Status Events Object

Cada item registra uma transição de status com seu carimbo de tempo, em ordem cronológica.

CampoTipoDescrição
statusstringStatus assumido pela análise. Veja Status da análise.
created_atstringData e hora da transição (ISO 8601).

Inquiries Object (consulta)

CampoTipoDescrição
inquiry_keystringUUID da consulta.
inquiry_typestringTipo da consulta. Atualmente o único valor é private_payroll.
inquiry_statusstringStatus da consulta: pending, success ou failed.
inquiry_dataobjectDados retornados pela consulta. Para private_payroll, segue o mesmo formato exibido no webhook — consulte Dados de inquiry (inquiry_data).
failure_reasonstringMotivo da falha quando inquiry_status é failed. (opcional)

Steps Object

Cada etapa representa uma análise individual executada (onboarding, análise de crédito) durante o processamento.

CampoTipoDescrição
analysis_step_keystringUUID da etapa.
orderintegerOrdem de execução da etapa (1, 2, ...).
step_typestringTipo da etapa: onboarding_natural_person ou credit_analysis_natural_person.
step_statusstringStatus atual da etapa: created, pending, approved, reproved ou failed.

STATUS
404

Retornado quando a lending_analysis_key informada não corresponde a nenhuma análise existente.

Response Body
{
"title": "Not Found",
"description": "Lending analysis with the provided key was not found.",
"translation": "Não foi encontrada uma análise de crédito com a chave informada.",
"extra_fields": {},
"code": "LAS000005"
}

Webhooks

Atenção!

Os webhooks da QI Tech não devem ser mapeados de forma estrita. Campos adicionais podem ser incluídos aos payloads dos webhooks retornados em nossas APIs.

Webhook type: laas.lending_analysis.status_change

O webhook é enviado para a URL configurada no ambiente do cliente quando a análise é concluída.

Webhook de análise concluída

Response Body
{
"key": "06666318-c9e9-416b-ae2f-460355a3d8e8",
"status": "completed",
"webhook_type": "laas.lending_analysis.status_change",
"event_datetime": "2026-03-12T10:05:00Z",
"data": {
"request_identifier_key": "12345678901",
"analysis_status": "reproved",
"analysis_steps": [
{
"analysis_step_type": "onboarding_natural_person",
"analysis_step_status": "approved",
"reason": "Passou nas validações",
"output_data": {}
},
{
"analysis_step_type": "credit_analysis_natural_person",
"analysis_step_status": "reproved",
"reason": "Score do Serasa menor que 500",
"output_data": {
"analysis_score": 100,
"credit_model_score": 100,
"maximum_monthly_interest_rate": 0.00,
"minimum_monthly_interest_rate": 0.00,
"maximum_installments_number": 10,
"minimum_installments_number": 1,
"maximum_disbursed_issue_amount": 4500.00,
"minimum_disbursed_issue_amount": 0.00
}
}
],
"inquiries": [
{
"inquiry_type": "private_payroll",
"inquiry_data": {
"document_number": "99999999999",
"registration_number": "99999999999-A",
"employer_document_number": "99999999999962",
"name": "JOÃO SILVA",
"gender": "male",
"birth_date": "1985-07-20",
"worker_category_code": 101,
"eligible": true,
"available_margin_amount": 5000.00,
"base_margin_amount": 4500.00,
"total_due_amount": 8207.54,
"admission_date": "2020-03-15",
"termination_date": null,
"termination_reason_code": null,
"political_exposition": "not_exposed",
"employer_name": "EMPRESA XYZ LTDA",
"mother_name": "MARIA DA SILVA",
"nationality": {
"code": 76,
"description": "BRASIL"
},
"occupation": {
"code": 724325,
"description": "SOLDADOR ELETRICO"
},
"economic_activity": {
"code": 2833000,
"description": "FABRICACAO DE MAQUINAS E EQUIPAMENTOS PARA A AGRICULTURA E PECUARIA"
},
"ineligibility_reason": "not_informed",
"employer_activity_start_date": "2010-05-12",
"legacy_loans": [],
"alerts": [
{
"alert_type": "leave",
"reference_date": "2025-02-11",
"event_id": 123456,
"leave_reason_code": 3,
"leave_start_date": "2025-02-11",
"leave_end_date": "2025-03-11"
},
{
"alert_type": "termination",
"reference_date": "2025-02-11",
"event_id": 789012,
"termination_reason_code": 1,
"termination_date": "2025-02-11",
"notice_period_start_date": "2025-01-11",
"notice_period_end_date": "2025-02-11"
}
]
}
}
]
}
}

Descrição dos campos do webhook

CampoTipoDescrição
keystringlending_analysis_key retornada na resposta síncrona.
statusstringStatus do webhook.
webhook_typestringTipo do webhook.
event_datetimestringData e hora do evento (ISO 8601).
data.request_identifier_keystringChave idempotente informada na requisição original.
data.analysis_statusstringStatus final da análise. Status da análise
data.analysis_stepsarrayLista de etapas da análise realizadas. Analysis Steps Object
data.inquiriesarrayDados retornados das consultas realizadas. Consulte a seção Dados de inquiry (inquiry_data).

Analysis Steps Object

CampoTipoDescrição
analysis_step_typestringTipo da etapa. Tipos de análise individual
analysis_step_statusstringStatus da etapa individual (approved ou reproved).
reasonstringRazão da aprovação ou reprovação, definida em regra pelo cliente.
output_dataobjectDados de saída específicos da etapa.

output_data para credit_analysis

Importante

Todos os campos do output_data são configuráveis nas regras de análise. Caso a regra não esteja configurada para retornar um determinado campo, ele será retornado vazio ou não estará presente no payload.

CampoTipoDescrição
analysis_scorenumberScore da análise de crédito.
credit_model_scorenumberScore do modelo de crédito.
maximum_monthly_interest_ratenumberTaxa de juros mensal máxima.
minimum_monthly_interest_ratenumberTaxa de juros mensal mínima.
maximum_installments_numbernumberNúmero máximo de parcelas.
minimum_installments_numbernumberNúmero mínimo de parcelas.
maximum_disbursed_issue_amountnumberValor máximo de desembolso.
minimum_disbursed_issue_amountnumberValor mínimo de desembolso.

Dados de inquiry (inquiry_data)

O array inquiries no webhook contém os dados retornados das consultas realizadas durante a análise. Cada item possui os campos inquiry_type (tipo da consulta) e inquiry_data (dados retornados).

Para o tipo private_payroll, o objeto inquiry_data segue o mesmo padrão de resposta da Consulta de dados do trabalhador do consignado privado, incluindo dados pessoais, margem consignável, histórico do vínculo, empréstimos ativos e alertas.

A documentação completa dos campos, enumeradores e exemplos de resposta do inquiry_data está disponível em:

Consultas do Trabalhador — 2. Consulta de dados do trabalhador


Enumeradores

Enumeradores Lending Analysis Type

CampoDescrição
private_payrollAnálise de crédito consignado privado

Status da análise

analysis_status (POST 202, GET de elegibilidade, GET de status e webhook data.analysis_status)

StatusDescrição
pending_inquiryA análise foi criada e aguarda a consulta inicial (estado inicial).
pending_analysisA consulta inicial foi concluída e as etapas de análise (onboarding, análise de crédito) estão em execução.
approvedA análise foi aprovada (terminal).
reprovedA análise foi reprovada (terminal).
failedA análise falhou por erro técnico ou indisponibilidade de provedor externo (terminal).

O webhook data.analysis_status é emitido apenas com valores terminais (approved, reproved, failed).

Status do webhook

status (campo raiz do webhook)

StatusDescrição
completedO processamento foi concluído
failedO processamento falhou

Tipos de análise individual

analysis_step_type (dentro do array analysis_steps)

EnumeradorDescrição
onboarding_natural_personAnálise de onboarding/cadastro do tomador.
credit_analysis_natural_personAnálise de crédito do tomador.

Status da análise individual

analysis_step_status (dentro do array analysis_steps)

StatusDescrição
approvedAnálise individual aprovada.
reprovedAnálise individual reprovada.
failedAnálise individual falhou por erro técnico ou indisponibilidade de provedor externo.

Sandbox — Casos de teste

Aviso Importante!

Não utilize dados pessoais reais (CPF, CNPJ, etc.) em ambientes de sandbox.

No ambiente de sandbox, o resultado da análise é determinado pelo valor do campo analysis_data.name no body da requisição. Utilize os nomes abaixo para simular diferentes cenários:

Nome (analysis_data.name)Resultado do onboardingResultado da credit_analysisStatus final (analysis_status)
Ana Santosapprovedapprovedapproved
Carlos Oliveiraapprovedreprovedreproved
Mariana Costareprovedreproved
Pedro Almeidaapprovedapproved
Fernanda Limareprovedreproved
Como funciona
  • Onboarding approved + Credit analysis approved (Ana Santos): a análise completa é aprovada. O webhook retorna analysis_status: "approved" com ambas as etapas aprovadas.
  • Onboarding approved + Credit analysis reproved (Carlos Oliveira): o onboarding é aprovado mas a análise de crédito reprova. O webhook retorna analysis_status: "reproved".
  • Onboarding reproved (Mariana Costa, Fernanda Lima): o onboarding reprova e a análise de crédito não é executada. O webhook retorna analysis_status: "reproved" com apenas a etapa de onboarding.
  • Only onboarding approved (Pedro Almeida): apenas o onboarding é executado e aprovado, sem análise de crédito. O webhook retorna analysis_status: "approved" com apenas a etapa de onboarding.
Webhook — Sandbox com nome "Ana Santos"
{
"key": "3571e292-3a83-4011-904d-20ee963022ef",
"status": "completed",
"webhook_type": "laas.lending_analysis.status_change",
"event_datetime": "2026-03-12T10:05:00Z",
"data": {
"request_identifier_key": "sandbox-test-001",
"analysis_status": "approved",
"analysis_steps": [
{
"analysis_step_type": "onboarding_natural_person",
"analysis_step_status": "approved",
"reason": "Passou nas validações",
"output_data": {}
},
{
"analysis_step_type": "credit_analysis_natural_person",
"analysis_step_status": "approved",
"reason": "Score acima do mínimo",
"output_data": {
"analysis_score": 750,
"credit_model_score": 720,
"maximum_monthly_interest_rate": 0.0449,
"minimum_monthly_interest_rate": 0.0199,
"maximum_installments_number": 24,
"minimum_installments_number": 3,
"maximum_disbursed_issue_amount": 15000.00,
"minimum_disbursed_issue_amount": 500.00
}
}
],
"inquiries": [
{
"inquiry_type": "private_payroll",
"inquiry_data": {
"document_number": "99999999999",
"registration_number": "99999999999-A",
"employer_document_number": "99999999999962",
"name": "ANA SANTOS",
"gender": "female",
"birth_date": "1990-05-15",
"worker_category_code": 101,
"eligible": true,
"available_margin_amount": 8000.00,
"base_margin_amount": 6500.00,
"total_due_amount": 3200.00,
"admission_date": "2018-09-01",
"termination_date": null,
"termination_reason_code": null,
"political_exposition": "not_exposed",
"employer_name": "EMPRESA XYZ LTDA",
"mother_name": "LUCIA SANTOS",
"nationality": {
"code": 76,
"description": "BRASIL"
},
"occupation": {
"code": 411010,
"description": "AUXILIAR DE ESCRITORIO"
},
"economic_activity": {
"code": 6499999,
"description": "OUTRAS ATIVIDADES DE SERVICOS FINANCEIROS"
},
"ineligibility_reason": "not_informed",
"employer_activity_start_date": "2005-01-10",
"legacy_loans": [],
"alerts": []
}
}
]
}
}
Webhook — Sandbox com nome "Carlos Oliveira" (credit_analysis reproved)
{
"key": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"status": "completed",
"webhook_type": "laas.lending_analysis.status_change",
"event_datetime": "2026-03-12T10:05:00Z",
"data": {
"request_identifier_key": "sandbox-test-002",
"analysis_status": "reproved",
"analysis_steps": [
{
"analysis_step_type": "onboarding_natural_person",
"analysis_step_status": "approved",
"reason": "Passou nas validações",
"output_data": {}
},
{
"analysis_step_type": "credit_analysis_natural_person",
"analysis_step_status": "reproved",
"reason": "Score do Serasa menor que 500",
"output_data": {
"analysis_score": 100,
"credit_model_score": 100,
"maximum_monthly_interest_rate": 0.00,
"minimum_monthly_interest_rate": 0.00,
"maximum_installments_number": 10,
"minimum_installments_number": 1,
"maximum_disbursed_issue_amount": 4500.00,
"minimum_disbursed_issue_amount": 0.00
}
}
],
"inquiries": [
{
"inquiry_type": "private_payroll",
"inquiry_data": {
"document_number": "99999999999",
"registration_number": "99999999999-A",
"employer_document_number": "99999999999962",
"name": "CARLOS OLIVEIRA",
"gender": "male",
"birth_date": "1988-11-22",
"worker_category_code": 101,
"eligible": true,
"available_margin_amount": 3500.00,
"base_margin_amount": 3000.00,
"total_due_amount": 12500.00,
"admission_date": "2019-06-10",
"termination_date": null,
"termination_reason_code": null,
"political_exposition": "not_exposed",
"employer_name": "EMPRESA XYZ LTDA",
"mother_name": "ROSA OLIVEIRA",
"nationality": {
"code": 76,
"description": "BRASIL"
},
"occupation": {
"code": 724325,
"description": "SOLDADOR ELETRICO"
},
"economic_activity": {
"code": 2833000,
"description": "FABRICACAO DE MAQUINAS E EQUIPAMENTOS PARA A AGRICULTURA E PECUARIA"
},
"ineligibility_reason": "not_informed",
"employer_activity_start_date": "2010-05-12",
"legacy_loans": [],
"alerts": []
}
}
]
}
}
Webhook — Sandbox com nome "Mariana Costa" (onboarding reproved)
{
"key": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"status": "completed",
"webhook_type": "laas.lending_analysis.status_change",
"event_datetime": "2026-03-12T10:05:00Z",
"data": {
"request_identifier_key": "sandbox-test-003",
"analysis_status": "reproved",
"analysis_steps": [
{
"analysis_step_type": "onboarding_natural_person",
"analysis_step_status": "reproved",
"reason": "Documentação inválida",
"output_data": {}
}
],
"inquiries": [
{
"inquiry_type": "private_payroll",
"inquiry_data": {
"document_number": "99999999999",
"registration_number": "99999999999-A",
"employer_document_number": "99999999999962",
"name": "MARIANA COSTA",
"gender": "female",
"birth_date": "1992-03-08",
"worker_category_code": 101,
"eligible": true,
"available_margin_amount": 6000.00,
"base_margin_amount": 5000.00,
"total_due_amount": 2100.00,
"admission_date": "2021-01-15",
"termination_date": null,
"termination_reason_code": null,
"political_exposition": "not_exposed",
"employer_name": "EMPRESA XYZ LTDA",
"mother_name": "PAULA COSTA",
"nationality": {
"code": 76,
"description": "BRASIL"
},
"occupation": {
"code": 252305,
"description": "ANALISTA DE SISTEMAS"
},
"economic_activity": {
"code": 6201500,
"description": "DESENVOLVIMENTO DE PROGRAMAS DE COMPUTADOR SOB ENCOMENDA"
},
"ineligibility_reason": "not_informed",
"employer_activity_start_date": "2015-08-20",
"legacy_loans": [],
"alerts": []
}
}
]
}
}

Referências