Pular para o conteúdo
Fiscal ProBiblioteca
NF-e e NFC-e · PIS e PIS-ST

vAliqProd em PISOutr: valor por unidade e precisão do cálculo

<vAliqProd>det › imposto › PIS › PISOutr › vAliqProd

Revisão editorial em 27 de set. de 2026. As versões e condições das regras estão indicadas ao longo do artigo.

vAliqProd em PISOutr é a alíquota do PIS, Programa de Integração Social, expressa em reais por unidade da base. O caminho é /nfeProc/NFe/infNFe/det/imposto/PIS/PISOutr/vAliqProd. Seu parceiro é qBCProd; o resultado da multiplicação é vPIS.

Preservar as casas decimais do parâmetro é diferente de apresentar o imposto final em reais e centavos.

Reais por unidade, não percentual

A fórmula da alternativa por quantidade é vPIS = qBCProd × vAliqProd. A unidade de qBCProd precisa coincidir com aquela a que se refere o valor por unidade. Não há divisão por 100 nessa conta.

vAliqProd não é pPIS, que expressa percentual sobre base monetária. Também não é o preço comercial de uma unidade do produto: é um parâmetro tributário específico do cálculo. O preço da mercadoria não determina esse campo. MOC 7.0, Anexo I, Q10/Q11 e alternativa de PISOutr, páginas 52–54.

Quatro casas podem alterar o resultado

Hipótese sintética: método por quantidade e CST 99 previamente assumidos, 250 unidades de base e parâmetro R$ 0,1234 por unidade. O resultado é:

250 × 0,1234 = R$ 30,85.

<PISOutr xmlns="http://www.portalfiscal.inf.br/nfe">
  <CST>99</CST>
  <qBCProd>250.0000</qBCProd>
  <vAliqProd>0.1234</vAliqProd>
  <vPIS>30.85</vPIS>
</PISOutr>

O fragmento é sintético, parcial em relação à nota e não pronto para transmissão. Código, unidade e parâmetro não recomendam tributação.

Se a integração reduzir o parâmetro para 0.12 antes de multiplicar, obterá R$ 30,00. A diferença de R$ 0,85 vem da perda de precisão na entrada, não de arredondar o valor final de R$ 30,85. Os resultados são exatos; o exemplo não pressupõe uma regra universal de arredondamento fiscal.

A escala também importa: 0.1234 significa R$ 0,1234 por unidade, e não 0,1234%. Dividir por 100 indevidamente altera o resultado.

Alternativa e faceta de PISOutr

PISOutr exige CST, um único par de cálculo e vPIS. Seu domínio de CST é 49, 50–56, 60–67, 70–75, 98 e 99; não é uma faixa contínua nem um código livre. Se o método definido é quantidade, o par é qBCProd/vAliqProd; a alternativa vBC/pPIS não é enviada junto. A presença de vAliqProd não autoriza trocar o grupo para PISQtde, que tem outro domínio de CST. MOC, página 54.

No XSD real PL_010d_v1.03, referência histórica, este campo usa TDec_1104v: até 11 inteiros e de uma a quatro casas se houver fração, com aceitação de zero e inteiros. 0.1234, 0.12 e 1 seguem a faceta; 0,1234, símbolos monetários e cinco casas não seguem. Valor permitido não é necessariamente valor correto para a operação. Schemas 010d v1.03, tipos básicos.

Não transporte essa flexibilidade a PISST/vAliqProd: o 010d histórico usa ali TDec_1104, cuja parte fracionária tem exatamente quatro casas. Mesmo nome não garante mesma faceta.

Rastrear unidade e parâmetro

Para divergência, compare o valor confirmado na origem, sua unidade, a quantidade de base, o parâmetro interno antes da conta e o literal do XML. Confira perda de casas decimais, conversão entre centavos/reais e divisão indevida por 100.

Para falha estrutural, confira se qBCProd acompanha vAliqProd e se o gerador não inseriu também vBC/pPIS. Campo ausente não deve virar zero por padrão. Uma falha de formato pode ser corrigida na serialização preservando o valor confirmado; não justifica escolher uma alíquota diferente.

A alíquota unitária real e a unidade aplicável precisam ser confirmadas com o responsável contábil usando operação, produto, regime e fundamento. Depois corrija a origem comprovadamente errada, gere e valide novamente, sem editar XML assinado.

Veja qBCProd, vPIS e o contexto distinto de vAliqProd em PISST.

Referência técnica para integração

XPath completo
/nfeProc/NFe/infNFe/det/imposto/PIS/PISOutr/vAliqProd
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_1104v · 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]{1,4}|[1-9]{1}[0-9]{0,10}|[1-9]{1}[0-9]{0,10}(\.[0-9]{1,4})?
whiteSpace
preserve