--- title: 6.2. Simulação da Proposta url: https://docs.vehub.com.br/Emiss%C3%A3o%20de%20Ativos/API/Cr%C3%A9dito/6.%20Proposta/6.2.%20Simula%C3%A7%C3%A3o%20da%20Proposta/ --- # 6.2. Simulação da Proposta !!! warning "Especificação — em construção" Os serviços descritos nesta área ainda não estão disponíveis. ## 🔗 Endpoints | Método | URL | Natureza | |--------|-----|----------| | ![POST](https://img.shields.io/badge/POST-blue) | `/credito/propostas/{idProposta}/simulacao` | **Assíncrono** | | ![GET](https://img.shields.io/badge/GET-green) | `/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](../5.%20Simulação/5.1.%20Simular.md), 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): ```json { "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](../5.%20Simulação/5.1.%20Simular.md#detalhamento-dos-campos). ### 🔹 Headers Use **`Idempotency-Key`**. ### 🧪 Exemplo de cURL ```bash 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` ```json { "sucesso": true, "mensagem": "Simulação em processamento.", "dados": { "status": "processando", "consultarEm": "/credito/propostas/1001/simulacao" } } ``` O resultado chega por [webhook](../8.%20Notificações%20-%20WebHook/8.2.%20Eventos%20de%20Simulação.md) (`credito.simulacao.concluida` ou `credito.simulacao.falhou`) ou pela consulta abaixo. --- ## Consultar a simulação ### 📥 Response — `200 OK`, cálculo concluído ```json { "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 ```json { "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 ```json { "sucesso": true, "dados": { "status": { "id": 10, "nome": "Falha na simulação" }, "temErro": true, "erros": "Prazo informado é inválido para o produto.", "dadosFinanceiros": null } } ``` !!! danger "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](6.12.%20Reabertura.md) | | `9` Falha na inclusão da proposta | [6.12. Reabertura](6.12.%20Reabertura.md) | | `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`), o `valorSolicitado` só é conhecido **depois** do cálculo — é ele que passa a valer como valor da operação.