--- title: 5.1. Simular Nota Comercial url: https://docs.vehub.com.br/API/Nota%20Comercial/5.%20Nota%20Comercial/5.1.%20Simular/ --- # 5.1. Simular Nota Comercial ## 🔗 Endpoint | Método | URL | |--------|-----| | ![POST](https://img.shields.io/badge/POST-blue) | `/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) ```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. ```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": 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 ```bash 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 ```json { "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 ```json { "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." ] } ```