qBCProd em PISQtde: quantidade fracionária e unidade da base
<qBCProd>det › imposto › PIS › PISQtde › qBCProdRevisã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