Manual Leilão de propostas Consignado Privado
Os webhooks da QI Tech não devem ser mapeadas de forma restrita. Campos adicionais podem ser incluídos aos payloads dos webhooks retornados em nossas APIs.
Introdução
Bem-vindo a API de Leilão de Propostas do Consignado Privado
Leilão de Propostas Consignado Privado é um serviço que permite a consulta de Solicitações de Propostas emitidas pelos trabalhadores, e a inclusão de Propostas por parte dos consignatários, além de comparar as ofertas e escolher a que oferece as melhores condições.
A API permite a criação, atualização, consulta de colocação no ranking e cancelamento de propostas dentro do Leilão.
Problemas?
Caso tenha algum problema entre em contato com o nosso suporte (suporte@qitech.com.br) e nós responderemos o mais rápido possível.
Ambientes
** Possuímos dois ambientes para os nossos clientes. A URL base das APIs são:
- Produção -
https://api-auth.qitech.app/
- Sandbox -
https://api-auth.sandbox.qitech.app/
Somente HTTPS
Por questão de segurança, toda a comunicação com as APIs da QI Tech devem ser realizadas utilizando a comunicação HTTPS. Para garantir que, por desatenção ou qualquer outro motivo, não ocorram chamadas HTTP, este servidor somente disponibiliza a porta 443 com comunicação TLS 1.2. Chamadas realizadas utilizando outros protocolos serão automaticamente negadas.
IssuerProposalRequest: Solicitação de Proposta de Crédito
A IssuerProposalRequest
representa a Solicitação de Proposta de Crédito realizada pelo trabalhador, o potencial tomador de crédito. Para que a solicitação seja válida, é necessário que o trabalhador tenha margem consignável disponível.
Fluxo de Webhook na Solicitação de Crédito
Quando uma Solicitação de Proposta de Crédito é recebida, existem dois cenários possíveis:
✅ 1. Existe uma Proposta Reservada Pré-Criada
- Se a proposta estiver assinada, o contrato será efetivado imediatamente, sem passar pelo processo de leilão.
- Caso a proposta não esteja assinada, ela será enviada ao trabalhador para análise.
- Um webhook de Encerramento de Leilão será enviado ao cliente originador da proposta.
- Reservas de propostas para o mesmo tomador podem ser criadas, desde que tenham vínculos empregatícios distintos.
⚖️ 2. Não Existe Proposta Reservada
- Um webhook de Início de Leilão será enviado a todos os clientes.
- A partir desse momento, os clientes terão 3 minutos para enviar propostas.
- Ao final do tempo:
- Se houver propostas dentro do prazo, a melhor proposta será enviada ao trabalhador.
- Se nenhuma proposta for enviada dentro dos 3 minutos, a primeira proposta enviada posteriormente será considerada.
- Assim que uma proposta for enviada ao trabalhador, um webhook de Encerramento de Leilão será disparado para todos os participantes.
Exemplo de Webhook - Início de Leilão
{
"status": "ongoing",
"event_datetime": "2025-03-20T14:47:43Z",
"key": "88b0203d-31ad-48c6-a795-b6d45ab4898a",
"webhook_type": "laas.private_payroll_auction.new_issuer_proposal_request",
"data": {
"issuer_proposal_request_key": "88b0203d-31ad-48c6-a795-b6d45ab4898a",
"status": "ongoing",
"expiration_datetime": "2025-03-21T11:47:12Z",
"inclusion_limit_datetime": "2025-03-20T11:49:43Z",
"issuer_proposal_request_data": {
"issuer_registration_number": "TESTE123",
"birth_date": "1973-03-14",
"disbursed_issue_amount": 2100,
"admission_date": "2020-03-10",
"consigned_credit_balance": 10000,
"eligible": true,
"employer_document_type": "cnpj",
"document_number": "00737823780",
"employer_document_number": "29113956000181",
"number_of_installments": 10,
"political_exposition": "not_exposed",
"name": "VALENTINA SANTOS"
},
}
}
Exemplo do Webhook - Encerramento de Leilão
{
"key": "150cfaa5-99dc-4c80-be3e-2231350cf9a2",
"data": {
"auction_proposal_key": "250cfea5-99dc-4c80-be3e-2231350cf9a2",
"status": "won",
"type": "auction",
"rank_position": 1,
"signature_url": "https://sandbox.sign.qitech.com.br/r/3D1s523",
"credit_operation_key": "9e06ca79-3610-4794-8312-9663e0343f6b",
"issuer_proposal_request_key": "262d0584-9827-4652-9b27-6a46c9832f38"
},
"status": "won",
"event_datetime": "2025-03-20T14:48:43Z",
"webhook_type": "laas.private_payroll_auction.end_of_auction"
}
A chave da operação de crédito será enviada com valor null para as propostas perdedoras.
Definição do Objeto IssuerProposalRequest
Todas as trocas de informação de uma IssuerProposalRequest utilizam a seguinte definição para este objeto. Em alguns casos, para facilitar a implementação e diminuir o fluxo de dados entre as partes, algumas informações poderão ser omitidas.
Nome | Tipo | Descrição |
---|---|---|
issuer_proposal_request_key | string | Identificador único da Solicitação de Proposta |
issuer_proposal_request_data | object | Objeto que descreve os dados da Solicitação de Proposta |
status | string | Status da Solicitação de Proposta (ongoing , finished , expired ) |
Definição do Objeto IssuerProposalRequestData
Nome | Tipo | Descrição |
---|---|---|
name | string | Nome completo do Tomador |
document_number | string | CPF do Tomador |
birth_date | string | Data de nascimento do Tomador no formato YYYY-MM-DD |
disbursed_amount | float | Valor de desembolso solicitado pelo tomador |
number_of_installments | integer | Número de parcelas solicitados pelo tomador |
consigned_credit_balance | float | Margem consignável disponível de saldo do tomador |
admission_date | string | Data de admissão do trabalhador no cargo atual no formato YYYY-MM-DD |
issuer_registration_code | string | Matricula eSocial do empregado |
employer_document_number | string | CNPJ do empregador |
eligible | boolean | True se elegivel, False se não elegivel |
employer_document_type | string | CNPJ ou CPF |
Detalhamento dos Status da solicitação de proposta
O status da Solicitação de Proposta pode ser:
Status | Descrição |
---|---|
ongoing | Solicitação de Proposta em andamento, o leilão continua ativo. |
finished | Solicitação de Proposta finalizada, o leilão foi encerrado e uma Proposta enviada foi aceita e incluída. |
expired | Solicitação de Proposta expirada, o leilão foi encerrado sem a inclusão de nenhuma Proposta em tempo hábil. |
Detalhamento dos níveis de exposição política
Os valores da Exposição Politica podem ser:
Status | Descrição |
---|---|
not_exposed | Pessoa não exposta politicamente. |
level_1 | Pessoa exposta politicamente nível 1 |
level_2 | Pessoa exposta politicamente nível 2 |
not_informed | Não há informação sobre a exposição política |
Tipo da proposta
O type representa o tipo da proposta, no caso se ela passou por um leilão ou se foi pré reservada. Será enviado no webhook de fim de leilão
Type | Descrição |
---|---|
"auction" | Proposta passou pelo leilão interno |
"pre-auction" | Proposta foi pré reservada |
Consultando uma Solicitação de Proposta após o envio do Webhook
Caso queira, ainda é possível consultar novamente a Solicitação de Proposta feita pelo tomador de crédito (mesmo após o envio do Webhook automático). Realize uma chamada via API utilizando o ID da Solicitação de Proposta enviado via Webhook automático.
/private_payroll_auction/issuer_proposal_request/{issuer_proposal_request_key}
GET
Path Params
Campo | Tipo | Descrição | Caracteres | Obrigatório |
---|---|---|---|---|
issuer_proposal_request_key | uuidv4 | Chave única de identificação da IssuerProposalRequest utilizada no formato uuid v4. | 36 | Sim |
Response
A resposta retornada será a mesma que foi enviada no webhook de Inicio de Leilão.
AuctionProposal – Proposta de Crédito
A AuctionProposal
é o objeto que representa a Proposta de Crédito realizada pelo consignatário ao trabalhador.
Existem duas possibilidades de realização de proposta, uma com reserva pré leilão, e outra pelo leilão normal.
🎯 Reserva de Proposta
-
Caso o cliente esteja em contato com o tomador, pode criar e assinar uma operação de crédito com colateral de "private_payroll". Depois, pode reservar uma proposta, que terá tempo de expiração de 24 horas.
-
Se houver uma Solicitação de Proposta para esse tomador dentro desse período, um Webhook de encerramento do leilão será enviado ao cliente, a operação de crédito será desembolsada e a margem averbada imediatamente.
-
Caso contrário, a proposta expirará e não terá mais validade.
Definição do Objeto AuctionProposal
Todas as trocas de informação de uma AuctionProposal utilizam a seguinte definição para este objeto. Em alguns casos, para facilitar a implementação e diminuir o fluxo de dados entre as partes, algumas informações poderão ser omitidas.
Nome | Tipo | Descrição |
---|---|---|
issuer_proposal_request_key | string | Identificador único da Solicitação de Proposta. |
auction_proposal_key | string | Chave única de identificação da AuctionProposal incluída no formato uuid v4. |
proposal_data | object | Objeto que descreve os dados da AuctionProposal enviados pelo paceiro. |
status | string | Status da Proposta no Leilão (bid , lost , won , cancelled , awaiting_issuer_proposal_request ). |
proposal_score | float | Nota da proposta incluída no Leilão, a comparação dos proposal_score determina o rank_position. |
inclusion_date | string | Data da inclusão ou última da Proposta no formato YYYY-MM-DDTHH:MM:SSZ . |
rank_position | integer | Posição atual da Proposta no ranking do Leilão para sua respectiva Solicitação de Proposta equivalente. |
OBS: O conteúdo do objeto proposal_data
é composto por informações enviadas pelo Participante em requisição descrita posteriormente.
Detalhamento dos Status da Proposta
O status da Proposta pode ser:
Status | Descrição |
---|---|
bid | Proposta foi incluída no leilão com suas condições - ainda passível de alterações. |
awaiting_issuer_proposal_request | Proposta pré cadastrada, aguardando Solicitação de Proposta. |
lost | Proposta perdeu o Leilão daquela Solicitação de Proposta. O Leilão foi encerrado sem a inclusão desta Proposta. |
won | Proposta ganhou o Leilão daquela Solicitação de Proposta. O Leilão foi encerrado com a inclusão desta Proposta. |
cancelled | Proposta cancelada pelo participante. |
Criando uma reserva de Proposta no leilão
Para reservar uma Proposta no Leilão de Crédito, realize uma chamada via API com os dados pertinentes da Proposta no endpoint como no exemplo a seguir:
- Sem representante legal
- Com representante legal
{
"borrower": {
"name": "Nome devedor",
"phone": {
"number": "999538380",
"area_code": "84",
"country_code": "055"
},
"gender": "female",
"is_pep": false,
"address": {
"city": "Natal",
"state": "RN",
"number": "1984",
"street": "Rua",
"complement": "complemento",
"postal_code": "59065720",
"neighborhood": "bairro"
},
"role_type": "issuer",
"birth_date": "1959-07-08",
"mother_name": "NOME DA MAE",
"nationality": "Brasileiro",
"person_type": "natural",
"marital_status": "single",
"attached_documents_list": [],
"individual_document_number": "14471835092",
"document_identification_date": "2015-10-02",
"document_identification_type": "rg",
"document_identification_number": "003709888"
},
"financial": {
"interest_type": "pre_price_days",
"first_due_date": "2023-09-21",
"disbursement_date": "2024-11-07",
"fine_configuration": {
"monthly_rate": 0.0166,
"interest_base": "calendar_days",
"contract_fine_rate": 0
},
"credit_operation_type": "ccb",
"interest_grace_period": 0,
"monthly_interest_rate": 0.0166,
"installment_face_value": 101.84,
"limit_days_to_disburse": 7,
"number_of_installments": 10,
"principal_grace_period": 0,
"rebates": [ // Opcional
{
"amount": 20,
"rebate_bank_account": {
"name": "Teste Ltda",
"document_number": "18533555000164",
"account_digit": "0",
"account_number": "4290001",
"branch_number": "0001",
"bank_code": "329"
},
"amount_type": "percentage",
"fee_type": "spread"
}
]
},
"simplified": true,
"collaterals": [
{
"collateral_data": {
"employer_document_number": "07940839000159",
"registration_number": "99999999999-A"
},
"collateral_type": "private_payroll"
}
],
"additional_data": {
"contract": {
"contract_number": "TST0000644799"
}
},
"purchaser_document_number": "32402502000135",
"disbursement_bank_accounts": [
{
"name": "NOME DEVEDOR",
"bank_code": "001",
"account_digit": "0",
"branch_number": "2874",
"account_number": "000057555",
"document_number": "14471835092",
"transfer_method": "pix",
"percentage_receivable": 100
}
]
}
{
"borrower": {
"name": "Nome devedor",
"phone": {
"number": "999538380",
"area_code": "84",
"country_code": "055"
},
"gender": "female",
"is_pep": false,
"address": {
"city": "Natal",
"state": "RN",
"number": "1984",
"street": "Rua",
"complement": "complemento",
"postal_code": "59065720",
"neighborhood": "bairro"
},
"role_type": "issuer",
"birth_date": "1959-07-08",
"mother_name": "NOME DA MAE",
"nationality": "Brasileiro",
"person_type": "natural",
"marital_status": "single",
"attached_documents_list": [],
"individual_document_number": "14471835092",
"document_identification_date": "2015-10-02",
"document_identification_type": "rg",
"document_identification_number": "003709888"
},
"related_parties": [
{
"name": "Representante legal",
"email": "teste@qitech.com.br",
"phone": {
"number": "991294043",
"area_code": "55",
"country_code": "055"
},
"address": {
"street": "AV LEONOR",
"state": "SP",
"city": "GUARULHOS",
"neighborhood": "",
"number": "1",
"postal_code": "07025200",
"complement": ""
},
"role_type": "issuer_legal_representative",
"person_type": "natural",
"is_pep": false,
"individual_document_number": "19125869086",
"birth_date": "1970-04-20",
"mother_name": " Ana Lúcia"
}
],
"financial": {
"interest_type": "pre_price_days",
"first_due_date": "2024-09-21",
"disbursement_date": "2024-11-07",
"fine_configuration": {
"monthly_rate": 0.01,
"interest_base": "calendar_days",
"contract_fine_rate": 0
},
"credit_operation_type": "ccb",
"interest_grace_period": 0,
"monthly_interest_rate": 0.0166,
"installment_face_value": 1000,
"limit_days_to_disburse": 7,
"number_of_installments": 84,
"principal_grace_period": 0,
"rebates": [ // Opcional
{
"amount": 20,
"rebate_bank_account": {
"name": "Teste Ltda",
"document_number": "18533555000164",
"account_digit": "0",
"account_number": "4290001",
"branch_number": "0001",
"bank_code": "329"
},
"amount_type": "percentage",
"fee_type": "spread"
}
]
},
"simplified": true,
"collaterals": [
{
"collateral_data": {
"employer_document_number": "07940839000159",
"registration_number": "99999999999-A"
},
"collateral_type": "private_payroll"
}
],
"additional_data": {
"contract": {
"contract_number": "TST0000644715"
}
},
"purchaser_document_number": "32402502000135",
"disbursement_bank_accounts": [
{
"name": "NOME DEVEDOR",
"bank_code": "001",
"account_digit": "0",
"branch_number": "2874",
"account_number": "000057555",
"document_number": "14471835092",
"transfer_method": "pix",
"percentage_receivable": 100
}
]
}
Request Body
Se o tomador solicitar uma proposta antes do cliente criar a reserva, sua solicitação será enviada a todos os clientes e o leilão irá acontecer normalmente.
Criando uma nova Proposta no leilão
O cliente pode fazer uma única Proposta para uma dada solicitação de proposta.
Para incluir uma proposta no Leilão de Crédito, realize uma chamada via API com os dados pertinentes da Proposta conforme o exemplo abaixo:
/private_payroll_auction/issuer_proposal_request/{issuer_proposal_request_key}/auction_proposal
POST
Request Body: Incluindo uma AuctionProposal no leilão
{
"request_control_key" : "111e7ed3-4080-4cae-a853-8e12812817ea",
"disbursed_issue_amount": 15000,
"installment_face_value": 400.00,
"number_of_installments": 48,
}
Para os campos monthly_interest_rate e installment_face_value APENAS 1 destes 2 campos devem ser informados na requisição. O outro não precisa estar incluído dentro do Payload enviado, caso esteja, deve-se colocar valor nulo.
Erro:
{
"code" : "PPA000006",
"title" : "Conflict",
"description" : "Proposal already exists for Proposal Request and Requester",
"translation" : "Proposta para Solicitação de Proposta e Solicitante já existe."
}
e status 409.
Body Params
Campo | Tipo | Descrição | Obrigatório |
---|---|---|---|
issuer_proposal_request_key | string | Chave única de identificação da IssuerProposalRequest incluída no formato uuid v4. | Sim |
auction_proposal_key | string | Chave única de identificação da AuctionProposal incluída no formato uuid v4. | Sim |
disbursed_issue_amount | float | Valor de desembolso pretendido pela Proposta. | Sim |
monthly_interest_rate | float | Taxa de juros mensal da Proposta no intervalo de 0 a 1 (0% a 100%, respectivamente). | Não |
installment_face_value | float | Valor da parcela pretendida pela Proposta. | Não |
number_of_installments | integer | Número de parcelas da proposta. | Sim |
Response
Response Body: Proposta criada
{
"auction_proposal_key": "814e7ed3-4080-4cae-a853-8e12812817ea",
"issuer_proposal_request_key" : "100e7ed3-4080-4cae-a853-8e12812817ea",
"request_control_key" : "111e7ed3-4080-4cae-a853-8e12812817ea",
"status": "bid",
"proposal_score" : 0.4,
"inclusion_date" : "2025-03-18T14:52:07.123456",
"rank_position" : null,
"proposal_data": {
"simulation": {
"total_iof": 15.46,
"annual_cet": 0.0603,
"monthly_cet": 0.0049,
"issue_amount": 1015.46,
"annual_interest_rate": 0.0180272568,
"monthly_interest_rate": 0.00149,
"disbursed_issue_amount": 1000.0,
"installment_face_value": 102.25,
"number_of_installments" : 48
},
"monthly_interest_rate": null,
"disbursed_issue_amount": 15000,
"installment_face_value": 102.25,
"number_of_installments": 48
},
}
Response Body Params
Campo | Tipo | Descrição |
---|---|---|
auction_proposal_key | string | Chave única de identificação da AuctionProposal incluída no formato uuid v4. |
status | string | Status da Proposta |
Cancelando a Proposta
Caso queira excluir uma Proposta incluída no Leilão, basta realizar uma chamada via API, com os dados pertinentes da Proposta:
Apenas a última Proposta incluída no leilão para cada Solicitação de Proposta participa do leilão, as outras são automaticamente canceladas.
/private_payroll_auction/auction_proposal/{auction_proposal_key}/cancel
PATCH
Campo | Tipo | Descrição | Caracteres | Obrigatório |
---|---|---|---|---|
issuer_proposal_request_key | uuidv4 | Chave única de identificação da IssuerProposalRequest utilizada no formato uuid v4. | 36 | Sim |
auction_proposal_key | uuidv4 | Chave única de identificação da AuctionProposal incluída no formato uuid v4. | 36 | Sim |
Response
Response Body: Proposta cancelada
{
"auction_proposal_key": "814e7ed3-4080-4cae-a853-8e12812817ea",
"status": "cancelled"
}
Caso o leilão já tenha encerrado a proposta não pode mais ser cancelada.
Response no caso de proposta já enviada
Response Body: Leilão encerrado e Proposta não pode ser cancelada
{
"auction_proposal_key": "814e7ed3-4080-4cae-a853-8e12812817ea",
"status": "won"
}
Response Body Params
Campo | Tipo | Descrição |
---|---|---|
auction_proposal_key | string | Chave única de identificação da AuctionProposal incluída no formato uuid v4. |
status | string | Status da Proposta |
Consultando a Proposta
Caso queira consultar a sua Proposta, basta apenas realizar uma chamada via API utilizando o ID retornado na hora da criação da Proposta:
/private_payroll_auction/auction_proposal/{auction_proposal_key}
GET
Path Params
Campo | Tipo | Descrição | Caracteres | Obrigatório |
---|---|---|---|---|
auction_proposal_key | uuidv4 | Chave única de identificação da AuctionProposal incluída no formato uuid v4. | 36 | Sim |
Response
Response Body: Consulta da Proposta
{
"auction_proposal_key": "814e7ed3-4080-4cae-a853-8e12812817ea",
"issuer_proposal_request_key" : "100e7ed3-4080-4cae-a853-8e12812817ea",
"request_control_key" : "111e7ed3-4080-4cae-a853-8e12812817ea",
"status": "bid",
"proposal_score" : 0.4,
"inclusion_date" : "2025-03-18T14:52:07.123456",
"rank_position" : null,
"proposal_data": {
"simulation": {
"total_iof": 15.46,
"annual_cet": 0.0603,
"monthly_cet": 0.0049,
"issue_amount": 1015.46,
"annual_interest_rate": 0.0180272568,
"monthly_interest_rate": 0.00149,
"disbursed_issue_amount": 1000.0,
"installment_face_value": 102.25,
"number_of_installments" : 48
},
"monthly_interest_rate": null,
"disbursed_issue_amount": 15000,
"installment_face_value": 102.25,
"number_of_installments": 48
}
}
Sendo o rank_position enviado tambem caso o leilão tenha encerrado.
OBS: O detalhamento dos campos devolvidos no Response Body
estão descritos na definição do Objeto AuctionProposal acima.
Caso a proposta seja do tipo "pre-auction", o campo "proposal_data" terá formato:
{
"proposal_data": {
"total_iof": 7.69,
"annual_cet": 0.2553,
"monthly_cet": 0.0191,
"issue_amount": 332.2,
"annual_interest_rate": 0.1984483148,
"monthly_interest_rate": 0.0152,
"disbursed_issue_amount": 322.85,
"number_of_installments": 12,
"installment_face_value": 31.0
}
}
Status HTTP
A API de assinatura utilizam a seguinte padronização nos status HTTP de retorno, de acordo com o RFC 7231:
Status HTTP | Significado | Descrição |
---|---|---|
400 | Bad Request | A requisição enviada possui algum erro de formatação. Na maioria dos casos, retornamos no corpo da mensagem uma explicação de onde está o erro. |
401 | Unauthorized | Houve algum problema na autenticação, verifique se a API Key está correta e no header correto, de acordo com a seção Autenticação. |
403 | Forbidden | O endpoint acessado é de uso interno e não está disponível para esta API Key. |
404 | Not Found | O dado requisitado não foi encontrado usando a chave utilizada. Este status também é retornado quando um endpoint inválido é requisitado. |
405 | Method Not Allowed | O método HTTP utilizado não se aplica ao endpoint utilizado. |
406 | Not Acceptable | Os dados enviados no corpo da requisição são inválidos. Em geral, isso significa que os dados enviados não são um JSON válido. |
409 | Conflict | O id da requisição corresponde a um id já processado anteriormente. Este status é retornado no caso de requisições duplicadas enviadas ao servidor. |
500 | Internal Server Error | Tivemos um problema para processar esta requisição, ao encontrarmos esse erro nossos especialistas são automaticamente notificados e iniciam a análise e solução imediatamente. |
503 | Service Unavailable | Você se deparou com uma indisponibilidade, planejada ou não, de infraestrutura dos nossos servidores. |