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

vEncFin na NF-e: leitura final e rejeição 380 do encerrante

<vEncFin>det › prod › comb › encerrante › vEncFin

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

vEncFin é a leitura do encerrante no término do abastecimento. Fica em /nfeProc/NFe/infNFe/det/prod/comb/encerrante/vEncFin, depois da leitura inicial vEncIni. Apesar da letra v, o campo não representa reais: representa o valor lido no contador do equipamento. MOC 7.0, Anexo I (7.00)

Como a leitura final se relaciona com o volume abastecido?

Em um evento sem virada do contador, a diferença entre as leituras final e inicial é a variação do contador. Se a unidade confirmada do equipamento é litro, essa variação expressa o volume medido em litros. É necessário usar leituras do mesmo contador e evento.

Não use o valor pago nem o preço por litro como leitura final. Também não reconstrua uma leitura presumida só somando a quantidade da venda a um número qualquer: o encerrante é informação de medição e deve preservar o registro real capturado.

O que a rejeição 380 significa?

A regra LA16-10, nos modelos 55/65, verifica se o encerrante final não é superior ao inicial. Sua mensagem é 380. Valores iguais também satisfazem a condição de rejeição; a regra exige superioridade, não apenas ausência de valor negativo. MOC 7.0, Anexo I (7.00)

Uma leitura final menor pode decorrer de inversão de campos, associação a outro abastecimento, erro de captura ou virada do contador. A mensagem sozinha não confirma qual causa ocorreu. Não acrescente 0.001 ao final apenas para superar a comparação.

Como conferir o exemplo sem virada?

Fragmento sintético do grupo, parcial em relação à nota inteira:

<encerrante xmlns="http://www.portalfiscal.inf.br/nfe">
  <nBico>3</nBico>
  <nTanque>1</nTanque>
  <vEncIni>1200.000</vEncIni>
  <vEncFin>1225.500</vEncFin>
</encerrante>

O final 1225,500 é maior que o inicial 1200,000; a diferença é 25,500 unidades. A bomba foi omitida porque é opcional no XSD, sem dispensar o bico, tanque e leituras. Se o contador mede litros, a diferença é 25,5 L. Isso não prova que qCom, qTrib ou qTemp devam ter exatamente o mesmo número em qualquer contexto de unidade ou temperatura.

Que formato e precisão são aceitos?

O tipo TDec_1203 admite até 12 algarismos inteiros. Aceita a forma inteira, inclusive 0; quando há parte decimal, exige três casas, como 1225.500. 1225.5, vírgula decimal, sinal negativo e separador de milhares não seguem esse padrão. Leiaute NF-e/NFC-e, pacote oficial PL 010f (PL_010f_v1.04) Tipos básicos NF-e/NFC-e, PL 010f (PL_010f_v1.04)

O XSD controla a forma do número. Um final 1190.000 pode ter formato válido e ainda ser rejeitado pela comparação com inicial 1200.000. Por isso, validar o esquema e conferir a regra de negócio são etapas diferentes.

Como tratar a virada do contador?

O MOC documenta informar o item que chegou ao limite com encerrante final 999... e incluir novo item a partir de encerrante inicial zero. A representação do limite deve corresponder ao contador real e aos limites do leiaute. Não invente a capacidade do contador, não deixe um único item com final menor e não substitua a leitura verdadeira por uma maior sem evidência. MOC 7.0, Anexo I (7.00)

Identifique a virada pelo evento do equipamento e separe as parcelas anterior e posterior ao limite, preservando sua rastreabilidade. Se o registro não comprovar virada, confronte vEncIni, bico, tanque e o evento capturado para descobrir a troca ou falha de origem. Corrija essa causa sem editar um XML já assinado.

Referência técnica para integração

XPath completo
/nfeProc/NFe/infNFe/det/prod/comb/encerrante/vEncFin
Namespace
http://www.portalfiscal.inf.br/nfe
Leiaute
4.00 · PL_010e_v1.02
Ocorrências no XSD
1–1 no contexto do elemento pai
Tipo
TDec_1203 · 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\.[0-9]{3}|[1-9]{1}[0-9]{0,11}(\.[0-9]{3})?
whiteSpace
preserve