pDevol na NF-e: percentual da mercadoria devolvida
<pDevol>det › impostoDevol › pDevolRevisão editorial em 14 de out. de 2026. As versões e condições das regras estão indicadas ao longo do artigo.
pDevol informa o percentual da mercadoria devolvida no grupo impostoDevol de um item. Ele mede a proporção da mercadoria, não a alíquota do IPI nem o percentual financeiro de todos os produtos da nota.
A estrutura descrita usa o pacote oficial PL_010f_v1.04, publicado em 31/08/2026. Esse pacote não altera a versão selecionada de um XML histórico na consulta; para arquivos de outra versão, confira a declaração correspondente e as regras vigentes na data e no ambiente do documento.
Neste artigo:
- Qual é o denominador do percentual
- Unidades, notas de origem e devoluções parciais
- Qual formato o XSD aceita e onde vai pDevol
- Como pDevol se relaciona com IPI devolvido
- Exemplo XML e verificações de aplicação
Qual é o denominador do percentual
O campo está em /nfeProc/NFe/infNFe/det/impostoDevol/pDevol, UA02. O MOC o define por mercadoria e indica o máximo de 100% na devolução total. Para conferir a proporção, identifique a mercadoria de origem à qual o item devolvido corresponde; não use como denominador o valor total de uma nota com outros produtos.
Em um cenário homogêneo e comparável, quantidade devolvida ÷ quantidade original correspondente × 100 demonstra a proporção. Se dez unidades foram documentadas e quatro são devolvidas, 4 ÷ 10 × 100 = 40%. Na devolução das dez, a proporção é 100%. Esses cálculos ilustram a semântica, sem definir a aplicação fiscal a uma operação concreta.
MOC 7.0 — Anexo I Schemas NF-e/NFC-e PL_010f_v1.04
Unidades, notas de origem e devoluções parciais
Se a origem usa caixa com dez unidades e a devolução usa unidade, comparar 1 caixa com 4 unidades sem conversão produziria um percentual sem sentido. Normalize as quantidades com a conversão documentada e confira a associação dos produtos. Não suponha que uma caixa sempre contenha a mesma quantidade entre produtos distintos.
Quando há múltiplos documentos de origem ou devoluções anteriores, reconcilie o que este item está devolvendo e os documentos a que se refere. pDevol não registra sozinho esse histórico e não substitui as referências da NF-e. Um percentual acima de 100 indica erro de correspondência, unidade ou quantidade a investigar; reduzi-lo artificialmente para 100 apenas esconde a causa.
O XML original e os registros da devolução são necessários para confirmar a quantidade correspondente. Não derive pDevol de um desconto comercial, de uma redução da base tributária ou de um percentual de IPI.
MOC 7.0 — Anexo I Schemas NF-e/NFC-e PL_010f_v1.04
Qual formato o XSD aceita e onde vai pDevol
pDevol é o primeiro filho obrigatório de impostoDevol, antes do grupo IPI. Seu tipo TDec_0302Max100 aceita valores de zero a 100, como inteiros ou com exatamente duas casas decimais quando há fração. 40.00 representa 40%; 100.00 representa 100%. O literal 0.40 representa 0,40%, não 40%.
Não inclua o símbolo %, não use vírgula decimal nem envie 100.01. Embora o tipo admita zero, isso não comprova a pertinência de declarar uma devolução sem quantidade. Informação ausente e percentual zero têm significados diferentes; um fallback não deve convertê-los na mesma coisa.
Schemas NF-e/NFC-e PL_010f_v1.04 Tipos básicos do leiaute NF-e
Como pDevol se relaciona com IPI devolvido
pDevol é percentual; IPI/vIPIDevol é moeda. Se, no cenário das dez unidades, R$ 50,00 de IPI de origem forem atribuíveis de modo proporcional, 40% correspondem a R$ 20,00. O primeiro número vai em pDevol e o segundo em vIPIDevol. A alíquota de IPI que originou R$ 50,00 não é informada em pDevol.
O leiaute não contém, nesse grupo, um campo separado para a quantidade original ou o valor original de IPI. Por isso, conferir só os dois números não prova a origem do cálculo. Conserve quantidade, unidade, XML de origem e memória de atribuição, e confirme com o responsável contábil o critério de proporção e a aplicabilidade do grupo.
MOC 7.0 — Anexo I Schemas NF-e/NFC-e PL_010f_v1.04
Exemplo XML e verificações de aplicação
Trecho sintético do grupo completo, parcial em relação à NF-e. Assume devolução de 40% de mercadoria homogênea e IPI atribuível de R$ 20,00, sem recomendar esse tratamento ao leitor.
<impostoDevol xmlns="http://www.portalfiscal.inf.br/nfe">
<pDevol>40.00</pDevol>
<IPI>
<vIPIDevol>20.00</vIPIDevol>
</IPI>
</impostoDevol>
O grupo exige tanto pDevol quanto IPI/vIPIDevol. UA01-10/354 trata sua presença em NF-e modelo 55 sem finalidade de devolução; UA01-20/390 trata sua presença em NFC-e modelo 65. São verificações do contexto, diferentes do limite numérico de 100%.
No total da NF-e soma-se vIPIDevol, não pDevol: dois itens com 40% e 100% não formam um percentual total de 140% a transmitir. Para corrigir um problema, confira primeiro item de origem, conversões, quantidades, finalidade e modelo; em seguida, formato, posição e valor gerado. O motivo da devolução é informação distinta, orientada pelo MOC para infAdProd.
Schemas NF-e/NFC-e PL_010f_v1.04 MOC 7.0 — Anexo I
Leitura relacionada
- impostoDevol — det/impostoDevol
- vIPIDevol — det/impostoDevol/IPI/vIPIDevol
- infAdProd — det/infAdProd
Fontes oficiais
- MOC 7.0 — Anexo I, 7.00, novembro/2020 — MOC 7.0 p.57 UA01–UA04; p.58 W12a; p.119 UA01-10/354; p.120 UA01-20/390; p.121 W12a-10/863; p.122 W16-10 e exceções.
- Schemas NF-e/NFC-e PL_010f_v1.04, 010f v1.04, publicado em 31/08/2026 — /infNFe/det/impostoDevol/pDevol; sequência e cardinalidade dos ancestrais.
- Tipos básicos do leiaute NF-e, PL_010f_v1.04 — TString; TDec_1302; TDec_0302Max100 conforme o campo.
Referência técnica para integração
- XPath completo
/nfeProc/NFe/infNFe/det/impostoDevol/pDevol- 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_0302Max100 · 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]{2})?|100(\.00)?|[1-9]{1}[0-9]{0,1}(\.[0-9]{2})?- whiteSpace
preserve