Ir para o conteúdo

5.1. Simular Nota Comercial

🔗 Endpoint

Método URL
POST /public/v1/nota-comercial/simulacao

🧾 Descrição

Realiza a simulação financeira de uma Nota Comercial com os parâmetros informados. Retorna o fluxo completo de pagamento, totais calculados e indicadores como CET.

Este endpoint é de leitura apenas — não cria nenhum registro. Para criar uma NC a partir dos dados simulados, utilize 5.3. Criar com Dados da Simulação.


📤 Requisição

📋 Payload (JSON)

{
  "dataEmissao": "2025-10-01",
  "dataPrimeiraParcela": "2025-11-01",
  "valorSolicitado": 500000.00,
  "valorPartida": 1,
  "idIndice": 1,
  "idTabelaCalculo": 1,
  "idBaseCalculo": 1,
  "taxa": 1.25,
  "periodicidade": 1,
  "quantidadeParcelas": 12,
  "capitalizacao": 2,
  "intervaloAmortizacao": 1,
  "idIndexador": null,
  "percentualIndexador": null,
  "carenciaPrincipal": 0,
  "periodicidadeTaxa": 1,
  "valorSeguro": null,
  "valorGravame": null,
  "parcelasPersonalizadas": []
}

📋 Payload (JSON) — Com Fluxo Irregular (Parcelas Personalizadas)

Quando o fluxo de pagamento não segue um padrão regular (ex: parcelas com valores e datas específicas), utilize parcelasPersonalizadas. Nesse caso, quantidadeParcelas deve refletir o número total de parcelas informadas.

{
  "dataEmissao": "2025-10-01",
  "dataPrimeiraParcela": "2025-11-01",
  "valorSolicitado": 500000.00,
  "valorPartida": 1,
  "idIndice": 1,
  "idTabelaCalculo": 1,
  "idBaseCalculo": 1,
  "taxa": 1.25,
  "periodicidade": 1,
  "quantidadeParcelas": 3,
  "capitalizacao": 2,
  "intervaloAmortizacao": 1,
  "carenciaPrincipal": 0,
  "parcelasPersonalizadas": [
    {
      "numeroParcela": 1,
      "dataVencimento": "2025-11-01",
      "valorParcela": 100000.00
    },
    {
      "numeroParcela": 2,
      "dataVencimento": "2026-05-01",
      "valorParcela": 200000.00
    },
    {
      "numeroParcela": 3,
      "dataVencimento": "2026-10-01",
      "valorParcela": 200000.00
    }
  ]
}

🧾 Detalhamento dos Campos

Campo Tipo Obrigatório Descrição
dataEmissao string Sim Data de emissão da NC (YYYY-MM-DD)
dataPrimeiraParcela string Sim Data de vencimento da 1ª parcela (YYYY-MM-DD)
valorSolicitado number Sim Valor da operação
valorPartida integer Sim Define se valorSolicitado é líquido (1) ou bruto (2)
idIndice integer Sim Tipo de índice: 1 = Pré-fixado, 2 = Pós-fixado
idTabelaCalculo integer Sim Tabela de cálculo: 1 = PRICE, 2 = SAC
idBaseCalculo integer Sim Base de cálculo (ver Enumerações)
taxa number Sim Taxa de juros no período (ex: 1.25 para 1,25%)
periodicidade integer Sim Periodicidade das parcelas (ver Enumerações)
quantidadeParcelas integer Sim Número total de parcelas
capitalizacao integer Sim Tipo de capitalização: 1 = Diária, 2 = Mensal
intervaloAmortizacao integer Sim Intervalo de amortização em número de períodos
idIndexador integer Não Indexador (obrigatório quando idIndice = 2)
percentualIndexador number Não Percentual sobre o indexador (ex: 100 para 100% do CDI)
carenciaPrincipal integer Não Carência do principal em dias (padrão: 0)
periodicidadeTaxa integer Não Periodicidade da taxa (usa mesma tabela de Periodicidade)
valorSeguro number Não Custo de seguro a incluir na operação
valorGravame number Não Custo de gravame a incluir na operação
parcelasPersonalizadas array Não Parcelas com valores e datas customizadas para fluxo irregular

🔹 parcelasPersonalizadas[]

Campo Tipo Obrigatório Descrição
numeroParcela integer Sim Número sequencial da parcela
dataVencimento string Sim Data de vencimento (YYYY-MM-DD)
valorParcela number Sim Valor total desta parcela

Atenção: Quando idIndice = 2 (Pós-fixado), o campo idIndexador é obrigatório. Quando parcelasPersonalizadas é informado, os valores devem zerar o saldo devedor ao final da operação.


🧪 Exemplo de cURL

curl -X POST https://api.vehub.com.br/public/v1/nota-comercial/simulacao \
  -H "Authorization: Bearer {seu_token}" \
  -H "GrupoEconomico: {seu_grupo_economico}" \
  -H "Content-Type: application/json" \
  -d '{
    "dataEmissao": "2025-10-01",
    "dataPrimeiraParcela": "2025-11-01",
    "valorSolicitado": 500000.00,
    "valorPartida": 1,
    "idIndice": 1,
    "idTabelaCalculo": 1,
    "idBaseCalculo": 1,
    "taxa": 1.25,
    "periodicidade": 1,
    "quantidadeParcelas": 12,
    "capitalizacao": 2,
    "intervaloAmortizacao": 1,
    "carenciaPrincipal": 0
  }'

📥 Responses

✅ 200 OK

{
  "sucesso": true,
  "mensagem": "Simulação realizada com sucesso.",
  "dados": {
    "valorLiquido": 500000.00,
    "valorBruto": 515000.00,
    "taxa": 1.25,
    "cet": 1.52,
    "totalJuros": 38745.50,
    "custoEmissao": 15000.00,
    "quantidadeParcelas": 12,
    "fluxoPagamento": [
      {
        "numeroParcela": 1,
        "dataVencimento": "2025-11-01",
        "diasPeriodo": 31,
        "saldoDevedor": 500000.00,
        "amortizacao": 38503.62,
        "juros": 6250.00,
        "valorParcela": 44753.62,
        "taxaPeriodo": 1.25
      },
      {
        "numeroParcela": 2,
        "dataVencimento": "2025-12-01",
        "diasPeriodo": 30,
        "saldoDevedor": 461496.38,
        "amortizacao": 38984.92,
        "juros": 5768.70,
        "valorParcela": 44753.62,
        "taxaPeriodo": 1.25
      }
    ]
  }
}

Detalhamento dos Campos — dados

Campo Tipo Descrição
valorLiquido number Valor líquido da operação (descontados os custos)
valorBruto number Valor bruto financiado
taxa number Taxa de juros aplicada no período
cet number Custo Efetivo Total (%)
totalJuros number Total de juros ao longo da operação
custoEmissao number Custo de emissão e escrituração
quantidadeParcelas integer Número de parcelas calculadas
fluxoPagamento array Detalhamento parcela a parcela

Detalhamento dos Campos — fluxoPagamento[]

Campo Tipo Descrição
numeroParcela integer Número sequencial da parcela
dataVencimento string Data de vencimento (YYYY-MM-DD)
diasPeriodo integer Número de dias no período
saldoDevedor number Saldo devedor no início do período
amortizacao number Valor de amortização do principal
juros number Valor de juros do período
valorParcela number Valor total da parcela
taxaPeriodo number Taxa aplicada no período

❌ 400 Bad Request

{
  "tipo": "https://tools.ietf.org/html/rfc9110#section-15.5.1",
  "titulo": "Atenção",
  "status": 400,
  "erros": [
    "Campo 'dataEmissao' é obrigatório.",
    "Campo 'idIndexador' é obrigatório quando o índice for Pós-fixado.",
    "Campo 'dataPrimeiraParcela' deve ser posterior à data de emissão."
  ]
}