---
title: "Valida e mostra o XML sem emitir"
method: POST
path: "/v1/nfe/previas"
tags: ["Emissão de NF-e"]
---

# Valida e mostra o XML sem emitir

`POST /v1/nfe/previas`

## Request

- Base URL: `https://api.sudrel.com.br/api`
- URL: `https://api.sudrel.com.br/api/v1/nfe/previas`
- Auth: HTTP bearer

Mesmo corpo de `POST /v1/nfe`. Lê, confere os totais, monta o XML e valida
no esquema oficial, **sem reservar número** e sem ir à SEFAZ. Responde 200
sempre que o corpo é JSON: `valida` diz se a emissão passaria.

É opcional: a emissão faz as mesmas conferências antes de reservar número.
Serve para ver o XML e os `ajustes` antes, ou para validar no seu sistema
sem criar nota.

## Request body

- NfeEntrada: Pedido de NF-e no modo `informado`: os tributos de cada item vêm prontos. Campos em português, `snake_case`. O que a Sudrel preencher aparece em `ajustes` na resposta.
  - `empresa_id` string, required
  - `referencia` string: Seu identificador, único por empresa e ambiente.
  - `modo` 'informado' | 'calcular' | 'conferir'
  - `operacao` 'venda' | 'venda_consumidor_final' | 'remessa' | 'transferencia' | 'bonificacao' | 'devolucao': Modos calcular e conferir. Padrão venda.
  - `subtipo` 'conserto' | 'demonstracao' | 'industrializacao' | 'outras' | 'comercializacao': Remessa e devolução.
  - `chave_referenciada` string: Chave de acesso da NF-e de origem (44 caracteres; pode ter letra com CNPJ alfanumérico). Obrigatória com `finalidade` `devolucao` ou `complementar` e com `operacao: devolucao`; aceita nas outras. Na devolução vai em cada item (`det/DFeReferenciado`); nas outras finalidades, em `NFref/refNFe`.
  - `serie` integer: Omitida: a série da API desta empresa.
  - `natureza_operacao` string, required
  - `tipo_operacao` 'saida' | 'entrada'
  - `finalidade` 'normal' | 'complementar' | 'ajuste' | 'devolucao'
  - `presenca` 'nao_se_aplica' | 'presencial' | 'internet' | 'telefone' | 'entrega_em_domicilio' | 'presencial_fora_do_estabelecimento' | 'outros', required
  - `consumidor_final` boolean
  - `intermediador` boolean: Só `false` nesta versão (venda pelo próprio canal).
  - `destinatario` object, required: Só o documento basta. Com CNPJ, a Sudrel completa `nome` e `endereco` pela consulta pública do CNPJ (base da Receita Federal) e `contribuinte` e `inscricao_estadual` pelo cadastro da SEFAZ da UF do destinatário. Com CPF, mande `nome` e, no `endereco`, só `cep` e `numero`: rua, bairro e cidade vêm do CEP, e o CPF é `nao_contribuinte`. O que você mandar prevalece; o que a Sudrel preencheu volta em `ajustes` (regras `nfe_destinatario_*`). Sem resposta da SEFAZ sobre a inscrição estadual, a nota é recusada com `destinatario_ie_indisponivel` (retentável), nunca emitida com um palpite.
    - `documento` string, required: CPF ou CNPJ.
    - `nome` string: Obrigatório com CPF. Com CNPJ, vem da Receita se faltar.
    - `contribuinte` 'contribuinte' | 'isento' | 'nao_contribuinte': Sem ele, a Sudrel consulta a SEFAZ (CNPJ) ou usa `nao_contribuinte` (CPF).
    - `inscricao_estadual` string: Obrigatória com `contribuinte`.
    - `optante_simples` boolean: Modo calcular: o destinatário é ME/EPP? Exigido na venda interna do fabricante a contribuinte (alíquota de 7% da Bahia).
    - `email` string
    - `endereco` object: Completo, ou só `cep` e `numero` (o resto vem do CEP). Com CNPJ, pode faltar inteiro (vem da Receita).
      - `logradouro` string
      - `numero` string
      - `complemento` string
      - `bairro` string
      - `municipio_ibge` string
      - `municipio` string
      - `uf` string: `EX` para exterior.
      - `cep` string
      - `telefone` string
  - `itens` union[], required
    - union
      - NfeItem
        - `codigo` string, required
        - `descricao` string, required
        - `gtin` string: Omitido: "SEM GTIN".
        - `ncm` string, required
        - `cest` string
        - `cfop` string, required
        - `origem` string, required: Origem da mercadoria, 0 a 8.
        - `unidade` string, required
        - `quantidade` number, required
        - `valor_unitario` number, required
        - `valor_total` number: Omitido: quantidade vezes valor unitário.
        - `desconto` number
        - `frete` number
        - `seguro` number
        - `outras_despesas` number
        - `icms` object, required: `cst` (00, 10, 20, 40, 41, 50, 60, 70) ou `csosn` (101, 102, 103, 300, 400, 500), com base, alíquota e valor quando o grupo pede. CST 10 e 70 exigem o grupo `st`.
          - `cst` string
          - `csosn` string
          - `modalidade_base_calculo` string
          - `base_calculo` number
          - `aliquota` number
          - `valor` number
          - `reducao_base_calculo` number: CST 20 e 70.
          - `fcp` object: FECP (CST 00, 10, 20 e 70).
            - `base_calculo` number
            - `aliquota` number
            - `valor` number
          - `st` object: ICMS-ST do substituto (CST 10 e 70).
            - `modalidade_base_calculo` string
            - `mva` number
            - `reducao_base_calculo` number
            - `base_calculo` number
            - `aliquota` number
            - `valor` number
            - `fcp` object
              - …
          - `st_retido` object: ICMS-ST retido anteriormente (CST 60 / CSOSN 500).
            - `base_calculo` number
            - `aliquota` number
            - `valor_substituto` number
            - `valor` number
        - `pis` NfePisCofins, required
          - `cst` string, required
          - `base_calculo` number
          - `aliquota` number
          - `valor` number
        - `cofins` NfePisCofins, required
          - `cst` string, required
          - `base_calculo` number
          - `aliquota` number
          - `valor` number
        - `ex_tipi` string: Exceção da TIPI (EXTIPI).
        - `item_referenciado` integer: Devolução: número deste item na nota de origem (`nItem`). Opcional; vai junto da chave da nota de origem no item.
        - `ipi` object: Grupo IPI (acréscimo da fase 3). IPITrib com CST 00, 49, 50 ou 99; IPINT com CST 01 a 05 ou 51 a 55.
          - `cst` string
          - `enquadramento` string
          - `base_calculo` number
          - `aliquota` number
          - `valor` number
        - `ibs_cbs` object
          - `cst` string
          - `classificacao_tributaria` string
          - `base_calculo` number
          - `ibs_uf` object
            - `aliquota` number
            - `valor` number
          - `ibs_municipio` object
            - `aliquota` number
            - `valor` number
          - `cbs` object
            - `aliquota` number
            - `valor` number
      - NfeItemCalculado: Item dos modos calcular e conferir (no conferir, mais os campos do item informado).
        - `produto` string, required: Código do produto em /v1/produtos.
        - `quantidade` number, required
        - `valor_unitario` number, required
        - `desconto` number
        - `frete` number
        - `seguro` number
        - `outras_despesas` number
        - `informacoes_adicionais` string
        - `st_retido` object: ICMS-ST retido anteriormente na revenda (CST 60 / CSOSN 500). Prevalece sobre o que viria das entradas vinculadas.
          - `base_calculo` number
          - `aliquota` number
          - `valor_substituto` number
          - `valor` number
  - `transporte` object
    - `modalidade` 'emitente' | 'destinatario' | 'terceiros' | 'proprio_emitente' | 'proprio_destinatario' | 'sem_frete'
  - `totais` object: Opcional. O que você mandar é conferido contra a soma dos itens; o que faltar é somado.
    - `valor_produtos` number
    - `valor_nota` number
    - `base_icms` number
    - `valor_icms` number
    - `valor_desconto` number
    - `valor_frete` number
    - `valor_seguro` number
    - `outras_despesas` number
    - `valor_pis` number
    - `valor_cofins` number
    - `ibs_cbs` object
      - `base_calculo` number
      - `ibs_uf` number
      - `ibs_municipio` number
      - `ibs` number
      - `cbs` number
  - `pagamentos` object[], required
    - `forma` 'dinheiro' | 'cheque' | 'cartao_credito' | 'cartao_debito' | 'credito_loja' | 'vale_alimentacao' | 'vale_refeicao' | 'vale_presente' | 'vale_combustivel' | 'boleto' | 'deposito' | 'pix' | 'pix_estatico' | 'transferencia' | 'programa_fidelidade' | 'sem_pagamento' | 'outros', required: `pix` é o Pix dinâmico (tPag 17); `pix_estatico` (tPag 20) é o QR fixo ou a chave.
    - `valor` number, required
  - `troco` number
  - `autorizados_xml` string[]: CPF/CNPJ autorizados a baixar o XML.
  - `informacoes_complementares` string
  - `informacoes_fisco` string

## Response `200`

Resultado da prévia.

- NfePrevia
  - `valida` boolean
  - `empresa_id` string, nullable
  - `referencia` string, nullable
  - `modo` string
  - `serie` integer, nullable
  - `numero_previsto` integer, nullable
  - `chave_prevista` string, nullable
  - `totais` object, nullable
    - `valor_produtos` string
    - `valor_nota` string
  - `xml` string, nullable: O XML que seria enviado, ainda sem assinatura.
  - `ajustes` object[]
  - `erros` ErroCampo[]
    - `type` string: `https://sudrel.com.br/docs/erros/<codigo>`. Não vem nos itens de `erros` do 422 de `POST /v1/lotes`.
    - `codigo` string: Estável: programe em cima dele.
    - `codigo_oficial` string, nullable: Regra do Sistema Nacional antecipada, quando houver (ex.: E0202).
    - `campo` string, nullable: JSON Pointer no payload.
    - `mensagem` string
    - `correcao` string, nullable
    - `retentavel` boolean: Repetir a MESMA requisição pode dar certo?
  - `prontidao` object, nullable
  - `fora_de_cobertura` ForaDeCobertura[]: Modos calcular e conferir.
    - `item` integer, nullable: Número do item (1 em diante); null = a nota inteira.
    - `tributo` 'operacao' | 'cfop' | 'icms' | 'ipi' | 'pis_cofins' | 'ibs_cbs' | 'perfil'
    - `motivo` string
    - `temporario` boolean: Tentar de novo resolve (calculadora oficial fora do ar).
  - `divergencias` object[]: Modo conferir.

## Other responses

- `401`: `nao_autenticado`: chave de API ausente, inválida ou revogada.
- `429`: `limite_de_requisicoes` (`retentavel: true`): 120 requisições por minuto por chave, janela fixa de 60 s. Sem `Retry-After`: espere a virada do minuto e repita a MESMA requisição (com a mesma `Idempotency-Key`).

---

[API](https://skmtc.dev/sudrel/apis/api-publica-sudrel-nfs-e-nf-e-e-ct-e.md) · [All operations](https://skmtc.dev/sudrel/apis/api-publica-sudrel-nfs-e-nf-e-e-ct-e/llms.txt) · [OpenAPI document](https://skmtc.dev/sudrel/apis/api-publica-sudrel-nfs-e-nf-e-e-ct-e/revisions/efd7baba9e37?raw)
