pRedutor: percentual e cálculo na compra governamental
<pRedutor>ide › gCompraGov › pRedutorRevisão editorial em 27 de set. de 2026. As versões e condições das regras estão indicadas ao longo do artigo.
pRedutor informa o percentual de redução da alíquota associado à compra governamental. Ele pertence a /nfeProc/NFe/infNFe/ide/gCompraGov/pRedutor e participa do cálculo das alíquotas efetivas dos itens. Seu conteúdo é um percentual, não um valor em reais nem o desconto comercial da mercadoria.
Para conferir uma divergência, separe duas tarefas: confirmar o percentual aplicável à operação e verificar como esse percentual foi representado e calculado no XML. Um número aceito pelo schema não comprova que a redução fiscal seja cabível.
Origem do percentual
A NT 2025.002 v1.51, página 17, identifica BB03 e remete aos arts. 472/370 da LC 214/2025. Essa referência não estabelece um valor único que possa ser copiado para todas as compras governamentais. O percentual depende do parâmetro fiscal aplicável ao período e à operação.
Solicite ao responsável contábil a confirmação desse parâmetro com sua base documental. Depois confira se o sistema o transportou corretamente para pRedutor. Não derive a redução do código do ente, do município do destinatário ou do percentual usado em um exemplo técnico.
O campo é obrigatório uma vez dentro de gCompraGov. Se o parâmetro confirmado é zero, zero é um conteúdo explícito; a ausência do campo não é outra maneira de representar o mesmo dado.
Representação no XML
O tipo histórico TDec_0302_04RTC do 010d v1.03, linhas 67–74 de DFeTiposBasicos_v1.00.xsd, admite zero ou número com até três dígitos inteiros; se houver fração, ela tem de duas a quatro casas decimais.
| Texto no campo | Conferência de formato |
|---|---|
0 ou 0.00 |
Representações aceitas de zero |
10, 10.00, 10.0000 |
Formatos aceitos de um percentual hipotético |
10.0 |
Uma casa decimal não atende ao tipo |
10,00 |
Vírgula não é o separador do XML |
-5.00 |
Sinal negativo não é admitido pelo tipo |
10% |
Símbolo de percentual não pertence ao conteúdo |
O padrão pode admitir, estruturalmente, valores com três dígitos inteiros. Não interprete isso como autorização fiscal para um percentual acima de 100 nem como confirmação de qualquer limite legal. A validação de formato e a determinação do parâmetro cumprem funções diferentes. O XSD lido é o 010d; não se atribuem facetas não verificadas ao pacote 010e.
Trecho sintético parcial, dentro do grupo governamental:
<pRedutor xmlns="http://www.portalfiscal.inf.br/nfe">5.00</pRedutor>
Ele representa 5% apenas para explicar a fórmula seguinte. Não recomenda esse percentual para uma operação real.
Como conferir a fórmula
As regras UB28-10, UB47-10 e UB66-10, páginas 46, 48 e 52 da NT, usam dois fatores de redução quando há compra governamental:
pAliqEfet = alíquota nominal × (1 − pRedAliq/100) × (1 − pRedutor/100)
A alíquota nominal é pIBSUF, pIBSMun ou pCBS, conforme o grupo. pRedAliq vem do grupo de redução do item; pRedutor vem da identificação da compra governamental.
O próprio exemplo técnico da NT usa alíquota nominal de 10%, redução do item de 40% e redutor governamental de 5%:
- Primeiro fator:
1 − 40/100 = 0,60. - Segundo fator:
1 − 5/100 = 0,95. - Resultado:
10 × 0,60 × 0,95 = 5,70%.
Com quatro casas, a alíquota efetiva é 5.7000. Somar 40% e 5% para reduzir 45% produziria 5,50%, resultado diferente. Os fatores incidem sucessivamente; não são pontos percentuais subtraídos da alíquota.
Com pRedutor=0, o fator governamental é 1. Isso mantém a alíquota que resulta do outro fator; não significa imposto inteiro igual a zero, ausência de compra governamental ou isenção.
Campos parecidos, papéis diferentes
pRedutor aparece na identificação e caracteriza a redução governamental. pRedAliq aparece em cada grupo de redução do item e se relaciona à classificação tributária. pAliqEfet é o resultado percentual da fórmula. vDesc é desconto monetário do produto. Não transportar um desses conteúdos para outro evita erros que o formato numérico sozinho não revela.
Na redação 1.51 de UB26-20, UB45-20 e UB64-20, a verificação de presença de gRed começa com gIBSCBS informado e considera CST que exige redução (ind_gRed=1) ou compra governamental. Esse antecedente foi acrescentado na alteração prevista para 05/10/2026; identifique a versão efetiva ao analisar um retorno anterior ao corte. A NT descreve exceção para ind_gIBSCBS=0 e a condição de pRedAliq=0 no contexto governamental quando ind_gRed=0. Isso não autoriza inventar uma redução do item para viabilizar o grupo.
Diagnóstico por item
Os retornos 1035, 1047 e 1064 apontam, respectivamente, alíquota efetiva de IBS da UF, IBS municipal e CBS calculada incorretamente. Capture o item indicado e os quatro números usados: alíquota nominal, pRedAliq, pRedutor e pAliqEfet. Refaça a fórmula com os valores efetivamente enviados, preservando precisão até o arredondamento final em quatro casas.
Se a fórmula confere, compare a origem dos parâmetros e o grupo em que foram colocados. Um redutor correto aplicado ao campo de outro tributo continua sendo um erro de integração. Não transforme tolerância de valor monetário de outra regra em tolerância livre da alíquota.
O corte desta página é 26/09/2026. O cronograma da versão 1.51 inclui alterações de UB26/45/64 para produção em 05/10/2026; preserve essa data futura ao investigar regras de presença e exceções no ambiente. A fórmula e o exemplo não determinam CST, incidência ou percentual legal para o leitor.
Referências
NT 2025.002 v1.51, páginas 6, 17, 46–48, 51–52; DFeTiposBasicos do 010d v1.03, tipo TDec_0302_04RTC, linhas 67–74. Fontes atuais conferidas no catálogo SVRS.
Referência técnica para integração
- XPath completo
/nfeProc/NFe/infNFe/ide/gCompraGov/pRedutor- 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_0302_04RTC · 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]{2,4}|[1-9]{1}[0-9]{0,2}(\.[0-9]{2,4})?- whiteSpace
preserve