Ir para o conteúdo

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
POST /credito/propostas/{idProposta}/simulacao Assíncrono
GET /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), o valorSolicitado só é conhecido depois do cálculo — é ele que passa a valer como valor da operação.