vAliqProd em COFINSQtde: valor por unidade e cálculo específico
<vAliqProd>det › imposto › COFINS › COFINSQtde › vAliqProdRevisão editorial em 27 de set. de 2026. As versões e condições das regras estão indicadas ao longo do artigo.
A tag vAliqProd em COFINSQtde registra a alíquota da COFINS em reais por unidade da base quantitativa. Seu caminho é det/imposto/COFINS/COFINSQtde/vAliqProd. O resultado da conta fica em vCOFINS; a quantidade fica em qBCProd.
Um parâmetro tributário em reais por unidade
A conferência é qBCProd × vAliqProd. Não se divide por 100 porque o parâmetro é um valor específico, diferente de pCOFINS, que é percentual no ramo monetário. A quantidade e o valor específico precisam usar a mesma unidade de base. MOC 7.0, Anexo I, p. 54.
Também não se deve copiar vUnCom ou vUnTrib para vAliqProd. Os dois primeiros são preços unitários do produto; vAliqProd é um parâmetro tributário. Embora todos possam conter um número com casas decimais, suas funções são diferentes.
A definição da alíquota específica e da unidade depende de produto, operação, regime, data e fundamento fiscal. O CST 03 de COFINSQtde não escolhe o valor numérico da alíquota. Se o parâmetro está ausente, obtenha a definição documentada com o responsável contábil, sem inventar um valor ou recorrer ao preço.
Exemplo com valor específico de quatro casas
Assuma CST 03 previamente definido para um cenário fictício, base de 40 unidades e alíquota didática de R$ 0,1250 por unidade. A multiplicação 40 × 0,1250 resulta em R$ 5,00.
Fragmento sintético e parcial da nota, sem condições para transmissão ou recomendação fiscal:
<COFINSQtde xmlns="http://www.portalfiscal.inf.br/nfe">
<CST>03</CST>
<qBCProd>40</qBCProd>
<vAliqProd>0.1250</vAliqProd>
<vCOFINS>5.00</vCOFINS>
</COFINSQtde>
Reduzir antecipadamente a alíquota para R$ 0,12 gera R$ 4,80, diferença de R$ 0,20. O fato de vCOFINS ser uma informação monetária com duas casas quando fracionária não transforma a alíquota específica em parâmetro de apenas duas casas. Preserve sua precisão até o cálculo final.
Para outra conferência didática, 0,5 unidade de base e R$ 0,40 por unidade produzem R$ 0,20. Se o sistema usar “meia embalagem” como 0,5, mas a alíquota estiver definida por litro, essa conta só será adequada após confirmar a relação física e fiscal entre embalagem e litro. O exemplo não impõe a unidade de tributação.
Formato e investigação da origem
No XSD histórico PL_010d_v1.03, vAliqProd usa TDec_1104v: até 11 inteiros e de uma a quatro casas na parte fracionária, com alternativas para inteiro e zero no padrão. 0.125 e 0.1250 representam o mesmo número nessa referência. Use ponto decimal, sem moeda, unidade ou símbolo de porcentagem. PL_010d_v1.03, tipos básicos.
Não atribua essas facetas automaticamente ao campo homônimo de COFINSST, cujo tipo histórico é diferente. A validação precisa usar o pacote efetivamente exigido no ambiente.
Em COFINSQtde, vAliqProd é obrigatório e vem depois de qBCProd e antes de vCOFINS; CST vem primeiro. Não há escolha interna com vBC/pCOFINS. Um campo vazio ou ausente não equivale a alíquota zero, e zero estruturalmente aceito não confirma adequação fiscal.
Se a conta diverge, compare o valor definido, sua unidade, o qBCProd desse grupo, a precisão no cálculo e o texto efetivamente serializado. Procure conversão percentual indevida, cópia de preço ou arredondamento precoce como hipóteses verificáveis. A igualdade da conta não comprova, sozinha, a correção da tributação.
Corrija a causa confirmada, recalcule o resultado e gere nova prévia. Não ajuste a alíquota para compensar quantidade errada ou obter um valor esperado, e não edite XML assinado. A política de arredondamento e eventual tolerância precisam da regra aplicável; não são deduzidas apenas do número de casas do campo.
Referência técnica para integração
- XPath completo
/nfeProc/NFe/infNFe/det/imposto/COFINS/COFINSQtde/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