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

qBCProd em PISQtde: quantidade fracionária e unidade da base

<qBCProd>det › imposto › PIS › PISQtde › qBCProd

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

qBCProd em PISQtde é a quantidade que serve de base para o cálculo do PIS, Programa de Integração Social, por unidade. Está em /nfeProc/NFe/infNFe/det/imposto/PIS/PISQtde/qBCProd, após CST 03 e antes de vAliqProd.

É uma quantidade, não um valor em reais. Sua unidade precisa corresponder à unidade do parâmetro monetário por unidade.

A quantidade que entra na conta

O grupo PISQtde exige CST 03, qBCProd, vAliqProd e vPIS. A relação é qBCProd × vAliqProd = vPIS; não existe divisão por 100. MOC 7.0, Anexo I, página 52.

A origem da quantidade deve ser a operação com a unidade de base confirmada. Não copie qCom ou qTrib automaticamente: verifique a correspondência das unidades e eventual fator documental de conversão. Uma embalagem comercial não define, sozinha, a unidade do cálculo do PIS.

A tag qBCProd não contém um rótulo de unidade. Essa relação precisa ser verificável nos dados do produto e na memória de cálculo, sem inserir texto como “litros” dentro do valor XML.

Uma base fracionária muda o resultado

Hipótese sintética: CST 03 e método por quantidade já definidos para uma operação fictícia, com 12,5 unidades de base e R$ 0,8000 por unidade:

12,5 × 0,8000 = R$ 10,00.

<PISQtde xmlns="http://www.portalfiscal.inf.br/nfe">
  <CST>03</CST>
  <qBCProd>12.5000</qBCProd>
  <vAliqProd>0.8000</vAliqProd>
  <vPIS>10.00</vPIS>
</PISQtde>

O trecho é sintético e parcial em relação à nota, não pronto para transmissão. A quantidade, unidade, parâmetro e código são hipóteses de representação, sem sugestão tributária.

Se a integração truncar a quantidade para 12, mantendo o parâmetro, obterá R$ 9,60. A diferença de R$ 0,40 decorre da perda de meia unidade na entrada; não é uma mera diferença de exibição do imposto. O resultado monetário com duas casas não exige que a quantidade seja inteira.

No XSD real PL_010d_v1.03, referência histórica, qBCProd usa TDec_1204v: até 12 inteiros e de uma a quatro casas se houver fração; zero e inteiros também são aceitos. 12.5, 12.50 e 12.5000 seguem a faceta; 12.50000 e vírgula decimal não seguem. Schemas 010d v1.03, tipos básicos.

Zero estrutural não é autorização para zerar base desconhecida. Em PISST/qBCProd, o pacote histórico usa TDec_1204: positivos com parte inteira não nula têm quatro casas quando há fração. Não aplique a flexibilidade de PISQtde a esse caminho por ter o mesmo nome.

Rastreio de unidade, fator e serialização

Para quantidade divergente, compare a quantidade registrada, unidade comercial, unidade de base confirmada, fator documental, resultado da conversão e literal do XML. Se a diferença coincide com tamanho de embalagem, confira o fator; não o presuma.

Quando o valor interno é 12,5 e o XML envia 12, a evidência aponta para perda fracionária na serialização. Se o XML mantém 12,5 mas o cálculo usa outra quantidade, investigue a etapa da conta. Se o fator não tem suporte documental, falta confirmar a origem antes de regenerar.

Para falha estrutural, verifique a posição depois de CST 03, a presença de vAliqProd e vPIS e a ausência de vBC/pPIS. qBCProd isolado não completa PISQtde. Uma validação de formato não confirma que a unidade escolhida está correta.

A decisão sobre método, unidade e conversão real precisa dos dados da operação para confirmação com o responsável contábil. Depois corrija a causa comprovada, gere e valide novamente, sem alterar XML assinado ou ajustar quantidade para fechar o imposto.

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

Referência técnica para integração

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