vEncFin na NF-e: leitura final e rejeição 380 do encerrante
<vEncFin>det › prod › comb › encerrante › vEncFinRevisã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?
- O que a rejeição 380 significa?
- Como conferir o exemplo sem virada?
- Que formato e precisão são aceitos?
- Como tratar a virada do contador?
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