vTroco na NF-e: cálculo, limite e rejeições 866, 869 e 965
<vTroco>pag › vTrocoRevisão editorial em 26 de set. de 2026. As versões e condições das regras estão indicadas ao longo do artigo.
vTroco, em /nfeProc/NFe/infNFe/pag/vTroco, registra o valor do troco. Ele aparece uma vez no grupo pag, depois dos detalhes detPag. O cálculo documentado para conferência é soma(vPag) − vNF; o valor deve representar troco real, não um ajuste inventado para fechar valores inconsistentes.
Como calcular com mais de um pagamento
Some todos os vPag de pag/detPag e subtraia o total fiscal total/ICMSTot/vNF usado pela regra. Não subtraia o líquido da fatura vLiq, a soma das parcelas vDup ou um repasse bancário. Esses campos pertencem a outros conceitos e equações.
Suponha nota de R$ 150,00, entrega de R$ 100,00 em dinheiro e R$ 60,00 em cheque, com troco efetivo de R$ 10,00. A conta é 100,00 + 60,00 = 160,00 e 160,00 − 150,00 = 10,00. A conferência reversa será 160,00 − 10,00 = 150,00.
Fragmento parcial e sintético de pag, sem assinatura e sem os demais grupos da nota; não está pronto para transmissão:
<pag xmlns="http://www.portalfiscal.inf.br/nfe">
<detPag><tPag>01</tPag><vPag>100.00</vPag></detPag>
<detPag><tPag>02</tPag><vPag>60.00</vPag></detPag>
<vTroco>10.00</vTroco>
</pag>
O exemplo mostra dois meios e um único troco. Não coloque R$ 10,00 em cada detalhe nem repita vTroco. O formato monetário 13v2 usa ponto decimal, sem símbolo monetário ou separador de milhar. O campo é estruturalmente opcional e seu tipo admite zero, mas isso não dispensa informar corretamente um troco que existe.
Ausência, valor errado e limite são erros distintos
| Regra | Condição documentada | Código e aplicação |
|---|---|---|
| YA03-20 | Soma dos pagamentos maior que vNF, sem vTroco |
866, modelos 55/65, facultativa |
| YA09-10 | Troco informado diferente de soma(vPag) − vNF |
869, modelos 55/65, obrigatória |
| YA09-20 | Troco informado superior a R$ 300.000,00 | 965, modelos 55/65, obrigatória, limite da NT 2023.004 v1.20 |
Se o troco fosse R$ 9,00 no exemplo, a soma continuaria R$ 160,00 e a diferença esperada, R$ 10,00: seria uma divergência de valor da 869. Se o troco não fosse informado, a condição de ausência da 866 seria distinta. Não trate os dois retornos como uma tolerância genérica de arredondamento.
O limite atual não é R$ 1.000,00
A NT 2023.004 v1.20, de outubro/2024, elevou a YA09-20 de R$ 1.000,00 para R$ 300.000,00, com entrada imediata em homologação e produção. O valor R$ 1.000,00 aparece rasurado na página 15; a observação histórica de ativação da regra em 01/10/2024 não deve ser atribuída como data de criação do campo inteiro.
O limite é um teto de validação documentado, não recomendação para conceder troco elevado ou prova de pertinência operacional. A condição é “superior a”: R$ 300.000,00 não excede esse teto por esse critério isolado, mas a equação e os fatos da operação continuam obrigatórios. R$ 300.000,01 excede. Não altere pagamento ou total fiscal para encaixar um troco no limite.
Quando a soma menor não representa troco negativo
Se os detalhes somarem R$ 140,00 para uma nota de R$ 150,00, a diferença será −R$ 10,00. Isso não representa troco que deva ser informado com sinal negativo: investigue meio omitido, pagamento parcial, erro de valor ou condição da operação. No modelo 65, a YA03-10 trata soma menor que vNF, código 865, aplicação facultativa e exceções documentadas para ajuste/devolução e 90-Sem Pagamento.
Também não confunda desconto da venda ou da fatura com troco. Desconto altera uma condição comercial/valor conforme sua representação confirmada; troco devolve excesso real entregue na hipótese. Um valor excedente por duplicação de integração não se torna troco legítimo apenas porque a fórmula fecha.
Roteiro para 866, 869 ou 965
Preserve o XML e o retorno e compare os valores de cada meio com venda e comprovantes da mesma empresa. Na 866, confirme se houve excesso e devolução real ou se o total foi duplicado em mais de um detalhe. Na 869, refaça a equação usando exatamente os valores enviados e confira serialização decimal. Na 965, confira montante, teto atual e versão implementada, sem modificar fatos verdadeiros por tentativa.
Corrija a origem comercial ou o gerador do rascunho a partir da causa confirmada e revalide o XML regenerado. Não edite XML assinado, altere tributação ou invente descontos/trocos para obter autorização. Se há divergência no total fiscal, a composição precisa ser investigada separadamente com os documentos e parâmetros confirmados pelo responsável; este campo não define alíquotas ou incidência. Veja vPag por meio e pag e a conferência completa.
Fontes oficiais
- MOC 7.0 — Anexo I, 7.0; Grupo Y/YA, p. 61–62 e 125–126.
- NT 2023.004 — Informações de Pagamentos e Outros, 1.20; p. 3–6, 11–12, 14–15.
Referência técnica para integração
- XPath completo
/nfeProc/NFe/infNFe/pag/vTroco- 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_1302 · string
- Preenchimento no catálogo
- Opcional
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]{2}|[1-9]{1}[0-9]{0,12}(\.[0-9]{2})?- whiteSpace
preserve