Lending Analysis
This is the first version of the Lending Analysis documentation and may undergo minor changes. We recommend following this page for future updates.
The Lending Analysis endpoint allows you to perform a complete credit analysis for a borrower, combining onboarding, credit analysis, and private payroll balance inquiry in a single request.
The operation is asynchronous: when you send the request, the API returns a synchronous response with the status pending_analysis. The final analysis result is delivered via webhook when processing is completed.
- The client sends a
POSTto/lending_analysiswith the borrower data and desired inquiries. - The API returns a synchronous response with the
lending_analysis_keyand statuspending_analysis. - When processing is complete, the API sends a webhook with the full analysis result.
Request
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": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
}
},
"analysis_data": {
"name": "João da Silva"
}
}
Body Params
| Field | Type | Description | Characters |
|---|---|---|---|
request_identifier_key | string | Idempotent request key. Must be unique per analysis. | - |
document_number | string | Borrower's CPF (digits only). | 11 |
lending_analysis_type | string | Credit analysis type. | Lending Analysis Type Enumerators |
purchaser_document_number | string | Purchaser/assignee CNPJ. (optional) | 14 |
private_payroll | object | Borrower's private payroll data. | Private Payroll Object |
authorization_term | object | Borrower's authorization term. | Authorization Term Object |
analysis_data | object | Additional borrower data for the analysis. | Analysis Data Object |
Private Payroll Object
| Field | Type | Description | Characters |
|---|---|---|---|
employer_document_number | string | Employer's CNPJ. | 14 |
registration_number | string | Worker's registration number. | - |
Authorization Term Object
When there is a legal representative, you must fill in the legal_representative_document_number field with the representative's CPF, and the signer object data must be filled with the representative's information.
For more information about the
authorization_termobject, see the official documentation: Worker Inquiries - Balance Inquiry
| Field | Type | Description | Characters |
|---|---|---|---|
legal_representative_document_number | string | Legal representative's CPF (required only when there is a legal representative). | 11 |
signature.signer.document_number | string | Signer's CPF. | 11 |
signature.signer.name | string | Signer's name. | - |
signature.signer.email | string | Signer's email. (optional) | - |
signature.signer.phone.number | string | Signer's phone number. (optional) | - |
signature.signer.phone.area_code | string | Signer's area code. (optional) | 2 |
signature.signer.phone.country_code | string | Country code (e.g., "55"). (optional) | 3 |
signature.authentication_type | string | Authentication type. Must be "opt_in". | - |
signature.authenticity.timestamp | string | Consent date and time (ISO 8601 format: 2026-03-12T10:00:00Z). | - |
signature.authenticity.ip_address | string | User session IP (IPv4 or IPv6). | - |
signature.authenticity.fingerprint | object | Additional traceability evidence (can be an empty object {}). | - |
signature.authenticity.session_id | string | User session identifier (min. 10, max. 50 characters). | 50 |
Analysis Data Object
| Field | Type | Description | Characters |
|---|---|---|---|
name | string | Borrower's name. (optional) | - |
Response
Response Body
{
"analysis_status": "pending_analysis",
"lending_analysis_key": "06666318-c9e9-416b-ae2f-460355a3d8e8"
}
| Field | Type | Description |
|---|---|---|
analysis_status | string | Current analysis status. Returns pending_analysis in the synchronous response. |
lending_analysis_key | string | Analysis UUID key, used to correlate with the webhook. |
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"
}
Returned when the request_identifier_key field has already been used in a previous request.
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"
}
Webhooks
QI Tech webhooks should not be strictly mapped. Additional fields may be included in the returned webhook payloads.
Webhook type: laas.lending_analysis.lending_analysis_status_change
The webhook is sent to the URL configured in the client's environment when the analysis is completed.
Completed analysis webhook
Response Body
{
"key": "06666318-c9e9-416b-ae2f-460355a3d8e8",
"status": "completed",
"webhook_type": "laas.lending_analysis.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",
"analysis_step_status": "approved",
"reason": "Passou nas validações",
"output_data": {}
},
{
"analysis_step_type": "credit_analysis",
"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"
}
]
}
}
]
}
}
Webhook field descriptions
| Field | Type | Description |
|---|---|---|
key | string | lending_analysis_key returned in the synchronous response. |
status | string | Webhook status. |
webhook_type | string | Webhook type. |
event_datetime | string | Event date and time (ISO 8601). |
data.request_identifier_key | string | Idempotent key provided in the original request. |
data.analysis_status | string | Final analysis status. Analysis Status |
data.analysis_steps | array | List of analysis steps performed. Analysis Steps Object |
data.inquiries | array | Data returned from performed inquiries. See Inquiry data (inquiry_data) section. |
Analysis Steps Object
| Field | Type | Description |
|---|---|---|
analysis_step_type | string | Step type. Individual Analysis Types |
analysis_step_status | string | Individual step status (approved or reproved). |
reason | string | Approval or rejection reason, defined by client rules. |
output_data | object | Step-specific output data. |
output_data for credit_analysis
All output_data fields are configurable in the analysis rules. If a rule is not configured to return a specific field, it will be returned empty or not be present in the payload.
| Field | Type | Description |
|---|---|---|
analysis_score | number | Credit analysis score. |
credit_model_score | number | Credit model score. |
maximum_monthly_interest_rate | number | Maximum monthly interest rate. |
minimum_monthly_interest_rate | number | Minimum monthly interest rate. |
maximum_installments_number | number | Maximum number of installments. |
minimum_installments_number | number | Minimum number of installments. |
maximum_disbursed_issue_amount | number | Maximum disbursement amount. |
minimum_disbursed_issue_amount | number | Minimum disbursement amount. |
Inquiry data (inquiry_data)
The inquiries array in the webhook contains data returned from the inquiries performed during the analysis. Each item has the fields inquiry_type (inquiry type) and inquiry_data (returned data).
For the private_payroll type, the inquiry_data object follows the same response format as the Worker data inquiry from the private payroll module, including personal data, consignable margin, employment bond history, active loans, and alerts.
The full documentation of inquiry_data fields, enumerators, and response examples is available at:
Enumerators
Lending Analysis Type Enumerators
| Field | Description |
|---|---|
private_payroll | Private payroll credit analysis |
Analysis Status
analysis_status(synchronous response and webhookdata.analysis_status)
| Status | Description |
|---|---|
pending_analysis | The analysis is being processed |
approved | The analysis was approved |
reproved | The analysis was rejected |
Webhook Status
status(webhook root field)
| Status | Description |
|---|---|
completed | Processing completed |
failed | Processing failed |
Individual Analysis Types
analysis_step_type(inside theanalysis_stepsarray)
| Enumerator | Description |
|---|---|
onboarding | Onboarding/registration analysis |
credit_analysis | Credit analysis |
Individual Analysis Status
analysis_step_status(inside theanalysis_stepsarray)
| Status | Description |
|---|---|
approved | Individual analysis approved |
reproved | Individual analysis rejected |
Sandbox — Test Cases
Do not use real personal data (CPF, CNPJ, etc.) in sandbox environments.
In the sandbox environment, the analysis result is determined by the value of the analysis_data.name field in the request body. Use the names below to simulate different scenarios:
Name (analysis_data.name) | Onboarding result | Credit analysis result | Final status (analysis_status) |
|---|---|---|---|
Ana Santos | approved | approved | approved |
Carlos Oliveira | approved | reproved | reproved |
Mariana Costa | reproved | — | reproved |
Pedro Almeida | approved | — | approved |
Fernanda Lima | reproved | — | reproved |
- Onboarding approved + Credit analysis approved (
Ana Santos): the complete analysis is approved. The webhook returnsanalysis_status: "approved"with both steps approved. - Onboarding approved + Credit analysis reproved (
Carlos Oliveira): onboarding is approved but credit analysis is rejected. The webhook returnsanalysis_status: "reproved". - Onboarding reproved (
Mariana Costa,Fernanda Lima): onboarding is rejected and credit analysis is not executed. The webhook returnsanalysis_status: "reproved"with only the onboarding step. - Only onboarding approved (
Pedro Almeida): only onboarding is executed and approved, without credit analysis. The webhook returnsanalysis_status: "approved"with only the onboarding step.
Webhook — Sandbox with name "Ana Santos"
{
"key": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "completed",
"webhook_type": "laas.lending_analysis.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",
"analysis_step_status": "approved",
"reason": "Passou nas validações",
"output_data": {}
},
{
"analysis_step_type": "credit_analysis",
"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 with name "Carlos Oliveira" (credit_analysis reproved)
{
"key": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"status": "completed",
"webhook_type": "laas.lending_analysis.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",
"analysis_step_status": "approved",
"reason": "Passou nas validações",
"output_data": {}
},
{
"analysis_step_type": "credit_analysis",
"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 with name "Mariana Costa" (onboarding reproved)
{
"key": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"status": "completed",
"webhook_type": "laas.lending_analysis.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",
"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": []
}
}
]
}
}
References
- Worker Inquiries — Private Payroll — Complete documentation on employment bond inquiries and balance inquiries, including
authorization_termdetails.