6.2. Simulação da Proposta¶
Especificação — em construção
Os serviços descritos nesta área ainda não estão disponíveis.
🔗 Endpoints¶
| Método | URL | Natureza |
|---|---|---|
/credito/propostas/{idProposta}/simulacao | Assíncrono | |
/credito/propostas/{idProposta}/simulacao | Síncrono |
🧾 Descrição¶
Grava as condições financeiras na proposta e gera o fluxo de parcelas.
Diferente da simulação avulsa, este endpoint persiste o resultado na proposta — e por isso é assíncrono: responde 202 e o cálculo é concluído em segundo plano pela bancarizadora.
Use a avulsa para negociar; use esta para registrar o que foi acordado.
Gravar a simulação¶
📤 Requisição¶
Mesmo payload da simulação avulsa, sem tipoPessoa (já vem do tomador da proposta):
{
"tipoSimulacao": 1,
"valor": 18000.00,
"taxa": 1.99,
"quantidadeParcelas": 24,
"dataPrimeiroVencimento": "2026-10-10",
"fluxoIrregular": false,
"valorSeguro": 120.00,
"valorOutrasDespesas": 0.00,
"valorOutrosServicos": 30.00
}
O detalhamento de cada campo está em 5.1. Simular.
🔹 Headers¶
Use Idempotency-Key.
🧪 Exemplo de cURL¶
curl -X POST "https://api.vehub.com.br/credito/propostas/1001/simulacao" \
-H "Authorization: Bearer {seu_token}" \
-H "GrupoEconomico: {seu_grupo_economico}" \
-H "Idempotency-Key: 3c9a1f77-2b58-4a1e-9f3d-71c2e4b8a501" \
-H "Content-Type: application/json" \
-d '{
"tipoSimulacao": 1,
"valor": 18000.00,
"taxa": 1.99,
"quantidadeParcelas": 24,
"dataPrimeiroVencimento": "2026-10-10"
}'
📥 Response — 202 Accepted¶
{
"sucesso": true,
"mensagem": "Simulação em processamento.",
"dados": {
"status": "processando",
"consultarEm": "/credito/propostas/1001/simulacao"
}
}
O resultado chega por webhook (credito.simulacao.concluida ou credito.simulacao.falhou) ou pela consulta abaixo.
Consultar a simulação¶
📥 Response — 200 OK, cálculo concluído¶
{
"sucesso": true,
"mensagem": null,
"dados": {
"status": { "id": 1, "nome": "Em digitação" },
"temErro": false,
"erros": null,
"dadosFinanceiros": {
"tipoSimulacao": 1,
"taxa": 1.99,
"valorSolicitado": 18000.00,
"quantidadeParcelas": 24,
"fluxoIrregular": false,
"nroDiasIntervaloPrazo": null,
"valorParcelaDesejada": null,
"dataPrimeiroVencimento": "2026-10-10",
"valorSeguro": 120.00,
"valorOutrasDespesas": 0.00,
"valorOutrosServicos": 30.00,
"cet": { "valor": 2563.20, "percentualMensal": 2.10, "percentualAnual": 28.30 },
"juros": { "valor": 2150.60, "percentualMensal": 1.99, "percentualAnual": 26.65 },
"iof": { "valor": 412.30, "percentual": 2.31 },
"totais": { "parcela": 850.00, "valorTotal": 20400.00, "valorDesembolso": 18000.00 },
"parcelas": [
{ "numero": 1, "dataVencimento": "2026-10-13", "valor": 850.00, "amortizacao": 495.28, "juros": 354.72, "saldoDevedor": 17325.17 }
]
}
}
}
📥 Response — 200 OK, ainda processando¶
{
"sucesso": true,
"dados": {
"status": { "id": 1, "nome": "Em digitação" },
"temErro": false,
"erros": null,
"dadosFinanceiros": null
}
}
dadosFinanceiros nulo com temErro: false significa em processamento. Continue consultando.
📥 Response — 200 OK, falha no cálculo¶
{
"sucesso": true,
"dados": {
"status": { "id": 10, "nome": "Falha na simulação" },
"temErro": true,
"erros": "Prazo informado é inválido para o produto.",
"dadosFinanceiros": null
}
}
A consulta responde 200 mesmo quando a simulação falhou
O 200 diz que a consulta funcionou. O que falhou foi o cálculo, e isso é dado, não erro de transporte. Sempre inspecione temErro e erros — um cliente HTTP que só olha o status code vai concluir que deu tudo certo.
Resimular¶
Basta chamar o POST novamente com os novos valores. A proposta aceita quantas simulações você precisar enquanto estiver em Em digitação (1).
Estados que bloqueiam nova simulação:
| Status | Como sair |
|---|---|
10 Falha na simulação | 6.12. Reabertura |
9 Falha na inclusão da proposta | 6.12. Reabertura |
13 Aguardando motor de crédito | aguardar o resultado da análise |
14 Enviando proposta | aguardar o registro na bancarizadora |
6 Finalizado / 7 Cancelado | estado terminal |
⚠️ Observações¶
- A simulação precisa estar concluída antes de submeter ao motor de crédito e antes de enviar a proposta. Sem valores calculados, as duas operações são recusadas.
- Ao resimular, os valores anteriores são substituídos. A última simulação é a que vale no envio da proposta.
- No modo por valor de parcela (
tipoSimulacao = 2), ovalorSolicitadosó é conhecido depois do cálculo — é ele que passa a valer como valor da operação.