vIRRF de retTrib: valor retido de Imposto de Renda na NF-e
<vIRRF>total › retTrib › vIRRFRevisão editorial em 14 de out. de 2026. As versões e condições das regras estão indicadas ao longo do artigo.
retTrib/vIRRF registra o valor retido de Imposto de Renda na Fonte. Ele é um montante monetário; a base de cálculo correspondente é vBCIRRF, e o grupo não contém um campo de alíquota de IRRF.
Qual campo representa a retenção efetiva
XPath completo: /nfeProc/NFe/infNFe/total/retTrib/vIRRF. Se o arquivo contém apenas a raiz NFe, retire /nfeProc do início. Em consultas XPath, associe um prefixo, por exemplo n, ao namespace http://www.portalfiscal.inf.br/nfe e use esse prefixo em cada elemento. Buscar apenas pelo nome da última tag pode misturar item e total ou grupos tributários diferentes.
O campo pertence às retenções federais da NF-e/NFC-e. Não é uma tag de NFS-e, nem um destaque de imposto próprio de item. Fonte: MOC 7 Anexo I — leiaute e regras de validação, grupo W02.
W28 é o valor retido; W27/vBCIRRF é base. Não copie a base para o imposto, não use PIS ou CSLL retidos no lugar de IRRF e não trate uma tag declarada como comprovante de recolhimento. Fonte: MOC 7 Anexo I — leiaute e regras de validação, p.60.
Como conferir o cálculo sem inventar uma taxa
Compare vIRRF com a memória específica de retenção, já definida para a operação. Se a tarefa for reproduzir uma conta, obtenha base, taxa e demais condições documentadas; a tag não informa todos esses parâmetros. Não adote uma alíquota padrão a partir do nome do serviço ou de um valor de exemplo.
Para uma verificação puramente aritmética, seria possível assumir explicitamente base de R$ 1.000,00 e taxa hipotética de 1,2%, sem qualquer outra parcela: 1000 × 1,2/100 = 12. O resultado seria R$ 12,00 somente sob essas premissas; não é regra de retenção para o leitor.
Exemplo de representação do valor retido
Fragmento completo do grupo informado, parcial em relação à nota, para a hipótese aritmética anterior:
<retTrib xmlns="http://www.portalfiscal.inf.br/nfe">
<vBCIRRF>1000.00</vBCIRRF>
<vIRRF>12.00</vIRRF>
</retTrib>
O XSD não exige que a base e o imposto sempre apareçam juntos por cardinalidade, pois ambos são opcionais. Isso não substitui a necessidade de suporte documental para o valor informado. Fonte: Schemas XML NF-e/NFC-e PL 010f.
Formato e posição de vIRRF
No PL 010f v1.04, o tipo TDec_1302Opc usa ponto como separador, sem R$, vírgula, espaço, sinal ou separador de milhar. Para valores com parte decimal, use duas casas, como 12.50. O padrão não aceita 0 ou 0.00: a ausência de uma tag opcional e o valor zero são estados diferentes. Preserve o zero conhecido na origem; a serialização deve seguir o tipo, sem inventar um valor positivo ou substituir informação desconhecida por zero. Fonte: Tipos básicos NF-e/NFC-e.
vIRRF vem depois de vBCIRRF e antes de vBCRetPrev, quando presentes. Não subtraia esse valor indiscriminadamente de vNF: representação fiscal da nota e valor líquido financeiro precisam ser conferidos segundo seus próprios contratos. Fonte: Schemas XML NF-e/NFC-e PL 010f.
Diagnóstico técnico do valor informado
O MOC 7, Anexo I, p.123, informa que não há regras de validação para o grupo retTrib. Isso se refere às regras de negócio daquela edição; o XSD continua exigindo sequência, tipo e cardinalidade. Não invente um código de rejeição de soma para este campo. Compare documento de origem, memória de retenção, valores armazenados e XML final; investigue separadamente formato, mapeamento e mérito fiscal. Corrija somente a origem comprovada, preservando XML autorizado. Fonte: MOC 7 Anexo I — leiaute e regras de validação.
Se o XML mostra R$ 1.000,00 no imposto quando a memória confirma R$ 12,00, há indício de troca base/valor a confirmar no mapper. Se memória e XML coincidem mas a retenção é questionada, identifique o parâmetro fiscal em dúvida antes de alterar a nota.
A base do IRRF em vBCIRRF completa a conferência dos dois valores sem presumir alíquota.
Referência técnica para integração
- XPath completo
/nfeProc/NFe/infNFe/total/retTrib/vIRRF- 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