Pular para o conteúdo
Fiscal ProBiblioteca
NF-e e NFC-e · Produtos e serviços

vDescDI na NF-e: desconto do item importado, formato e valor zero

<vDescDI>det › prod › DI › adi › vDescDI

Revisão editorial em 27 de set. de 2026. As versões e condições das regras estão indicadas ao longo do artigo.

vDescDI informa o valor do desconto do item no detalhamento DI/adi do produto da NF-e. É uma tag opcional, com no máximo uma ocorrência em cada adi. Quando existe, seu conteúdo deve ser um valor positivo no formato do tipo TDec_1302Opc; 0 e 0.00 não atendem ao padrão desse tipo. NT 2023.004 v1.11, p. 8, I29; schema, TDec_1302Opc

O desconto pertence ao detalhamento de importação

O valor deve vir das informações documentadas do item importado associado à declaração e ao detalhamento. Confira a relação entre o produto da NF-e, nDI, nAdicao quando aplicável e nSeqAdic, antes de comparar o desconto.

O leiaute não fornece aqui uma fórmula para calcular desconto, distribuí-lo entre itens ou convertê-lo a partir de outra informação comercial. Se o dado de origem não está disponível, não deduza um valor com base na diferença entre totais nem considere a ausência automaticamente um desconto zero.

No arquivo processado, o caminho é:

/nfeProc/NFe/infNFe/det/prod/DI/adi/vDescDI

O namespace é http://www.portalfiscal.inf.br/nfe. Em um arquivo que começa por NFe, sem o envoltório nfeProc, a navegação começa nesse elemento. A tag é filha de adi; não fica diretamente em DI ou em prod.

Formato: valor positivo e ponto decimal

O MOC e a NT documentam tamanho 13v2: até 13 dígitos inteiros e 2 decimais. O schema esclarece a representação lexical: aceita inteiro positivo sem fração e, quando há fração, exige ponto e exatamente duas casas. Valores menores que 1 seguem as alternativas que permitem 0.01 a 0.99. MOC, p. 20; NT, I29; tipo TDec_1302Opc

Conteúdo do XML Compatibilidade com o padrão
12.50 Aceito
12 Inteiro positivo aceito
0.01 Aceito
0 ou 0.00 Não aceito
12,50 Vírgula não aceita
12.5 ou 12.500 Fração diferente de duas casas
-12.50 ou +12.50 Sinais não aceitos
1.250,00 Formatação brasileira com milhar e vírgula não aceita

O limite superior de formato é 9999999999999.99. Isso é capacidade do tipo, não uma orientação de valor para uma operação.

A aceitação do inteiro 12 é um detalhe do schema: não deve ser descrito como inválido apenas porque não contém .00. Já um serializador que utiliza fração precisa gerar duas casas com ponto. Não acrescente símbolo monetário ou espaços nas extremidades.

vDescDI e vDesc têm contextos distintos

vDescDI descreve o desconto no detalhamento da importação. O XML também possui prod/vDesc, no produto, e total/ICMSTot/vDesc, no total. Ter “desconto” no nome não torna os valores intercambiáveis.

Antes de mapear um valor de um campo para outro, é necessário entender a origem e a composição definida para a operação. Este campo, sozinho, não autoriza reduzir bases de tributos, recalcular vNF ou somar novamente um desconto que já esteja representado em outro nível.

A página de adi explica a associação de vDescDI com sequência e fabricante do item importado.

Exemplo e diagnóstico do valor

Neste cenário sintético, a informação de origem relaciona o item 5 da adição 2 a um desconto de 12,50:

<adi>
  <nAdicao>2</nAdicao>
  <nSeqAdic>5</nSeqAdic>
  <cFabricante>FAB-205</cFabricante>
  <vDescDI>12.50</vDescDI>
</adi>

12.50 representa o valor positivo no formato do XML. O exemplo não calcula o desconto e não define seu efeito tributário. Omite a DI e a NF-e, e não está pronto para transmissão.

Se não existe desconto a representar, o caráter opcional do campo permite sua ausência. Uma tag vazia ou 0.00 não é a mesma representação estrutural. Antes de alterar uma integração que recebe zero, confirme se isso significa ausência efetiva de desconto ou falta de informação na origem; esses estados não devem ser confundidos.

Quando há falha de schema, confira:

  1. O conteúdo exato no arquivo gerado, não apenas o valor formatado na tela.
  2. Ponto decimal, quantidade de casas, sinais, espaços e zeros.
  3. O tipo TDec_1302Opc do schema utilizado.
  4. A posição da tag: depois de cFabricante e antes de nDraw, quando este existe.

Quando o formato está correto, mas o valor diverge, investigue a associação com a declaração e o item, possível cópia do desconto comercial e duplicação entre ocorrências. A validação estrutural não comprova o valor econômico nem sua aplicação fiscal.

Referências e limite

Data de corte: 26/09/2026. Significado conferido na NT 2023.004 v1.11 e no MOC 7.0; padrão decimal conferido no schema oficial 010d v1.03 arquivado e lido. O artigo não calcula desconto, rateio, total ou base tributária.

Referência técnica para integração

XPath completo
/nfeProc/NFe/infNFe/det/prod/DI/adi/vDescDI
Namespace
http://www.portalfiscal.inf.br/nfe
Leiaute
4.00 · PL_010e_v1.02
Ocorrências no XSD
0–1 no contexto do elemento pai
Tipo
TDec_1302Opc · string
Preenchimento no catálogo
Condicional

A ocorrência vale dentro da estrutura XML: um campo obrigatório em um grupo opcional não torna esse grupo obrigatório. A aplicação fiscal depende da operação e da versão da regra.

pattern
0\.[0-9]{1}[1-9]{1}|0\.[1-9]{1}[0-9]{1}|[1-9]{1}[0-9]{0,12}(\.[0-9]{2})?
whiteSpace
preserve