5.1. Simular Nota Comercial
🔗 Endpoint
| Método | URL |
 | /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": []
}
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."
]
}