vBC no ICMS00: como conferir a base de cálculo do item
<vBC>det › imposto › ICMS › ICMS00 › vBCRevisão editorial em 26 de set. de 2026. As versões e condições das regras estão indicadas ao longo do artigo.
ICMS00/vBC contém a base monetária sobre a qual se aplica a alíquota do ICMS próprio daquele item. Não é automaticamente o preço do produto nem o total da nota. Para conferir a base, reconstrua a memória de cálculo com a modalidade e os componentes fiscais já definidos para a operação. O campo N15 é obrigatório dentro de ICMS00, segundo o MOC 7.0, Anexo I, p. 26.
De onde deve vir a base
modBC identifica o método: margem de valor agregado, pauta, preço tabelado máximo ou valor da operação. vBC é seu resultado em reais. Uma regra de pauta, por exemplo, exige conferir a referência e a quantidade/unidade correspondente; não se comprova a base olhando apenas o preço de venda.
Na modalidade de valor da operação, a conferência começa nos valores do item e no critério confirmado de participação de descontos e acréscimos. Produtos, frete, seguro, outras despesas e eventual IPI precisam ser examinados conforme o contexto fiscal; o fato de uma parcela existir no XML não significa que sempre entre na base. O leiaute da NF-e não fornece uma fórmula universal de incidência para qualquer mercadoria.
Uma memória útil mostra: componente de origem, valor antes do rateio, parcela atribuída ao item, inclusão ou exclusão na base e fundamento do critério. Isso permite distinguir uma decisão fiscal de uma falha técnica no rateio. Se não estiver definido como tratar uma parcela, o dado faltante é o critério fiscal dessa parcela na operação; não o substitua por zero. A confirmação deve levar ao responsável contábil documentos, produto, regime, UF, operação e composição de valores.
Exemplo de reconstrução, com hipóteses explícitas
Suponha, apenas para demonstrar a conta, modalidade 3 já confirmada e uma base que inclui frete e outra despesa e deduz o desconto. No item sintético:
| Parcela | Valor | Participação assumida |
|---|---|---|
| Mercadorias | R$ 500,00 | Soma |
| Desconto | R$ 20,00 | Subtrai |
| Frete rateado ao item | R$ 15,00 | Soma |
| Outra despesa rateada | R$ 5,00 | Soma |
- Valor após desconto:
500,00 − 20,00 = 480,00. - Acréscimos assumidos:
15,00 + 5,00 = 20,00. - Base:
480,00 + 20,00 = 500,00. - Com alíquota sintética de 18%, imposto:
500,00 × 18 / 100 = 90,00.
O resultado igual ao valor de mercadorias é uma coincidência dos números. Não demonstra que a base foi simplesmente copiada de vProd. Se o desconto fosse R$ 30,00, mantendo as demais hipóteses, a base seria R$ 490,00 e o imposto R$ 88,20.
Esse exemplo não determina se frete, despesas ou descontos de uma operação real integram a base. Demonstra como conferir a conta depois de confirmar os componentes.
Campo do item, total da base e base de FCP
| Campo | Contexto |
|---|---|
det/imposto/ICMS/ICMS00/vBC |
Base do item em CST 00. |
total/ICMSTot/vBC |
Consolidação das bases de ICMS da nota, sujeita à W03-10. Não se repete integralmente em cada item. |
prod/vProd |
Valor de produtos do item. Pode diferir da base, conforme componentes e método. |
ICMSTot/vNF |
Total da nota, com composição própria. Não é base de todos os itens. |
vBCFCP de outros grupos |
Base de FCP expressa em contextos que possuem esse campo. ICMS00 não tem vBCFCP; sua verificação de FCP usa vBC. |
Exemplo de totalização: item 1 com base sintética de R$ 500,00 e item 2 com base R$ 200,00 geram R$ 700,00 no total de bases, supondo somente esses itens e parcelas na consolidação. Não grave R$ 700,00 em ambos os itens. Confira a soma dos valores transmitidos; não conclua que todos têm a mesma alíquota.
XML e precisão
O XPath completo é nfeProc/NFe/infNFe/det/imposto/ICMS/ICMS00/vBC. Sem o envelope processado, comece em NFe. Identifique o nItem antes de ler o campo.
O tipo TDec_1302 do pacote oficial de schemas aceita valor não negativo de até 13 dígitos inteiros; quando houver fração, há duas casas decimais. O valor zero é estruturalmente possível, mas essa aceitação não demonstra base fiscal zero para qualquer operação.
Fragmento parcial e sintético, com origem e enquadramento assumidos, destinado à leitura, sem aptidão para transmissão:
<ICMS00 xmlns="http://www.portalfiscal.inf.br/nfe">
<orig>0</orig>
<CST>00</CST>
<modBC>3</modBC>
<vBC>500.00</vBC> <!-- base reconstruída, não total da nota -->
<pICMS>18.00</pICMS>
<vICMS>90.00</vICMS>
</ICMS00>
500,00, R$ 500.00, valor negativo e fração com três casas não representam o formato desse tipo. Preserve a precisão dos dados intermediários conforme sua origem, mas confira a representação monetária final; não invente uma tolerância para a formação fiscal da base.
Onde procurar quando o valor não bate
- Memória e XML divergem: verifique serialização, versão dos dados e eventual alteração manual no emissor. A origem do erro pode estar após o cálculo.
- Frete ou desconto difere entre itens: compare o rateio e seu total com os dados de origem. Um valor correto na nota pode ter sido atribuído ao item errado.
- ICMS não corresponde à base: refaça
vBC × pICMS / 100. A N17-20, em finalidade normal e CST 00 entre os códigos abrangidos, relaciona divergência a 528; o produto é arredondado para duas casas, com tolerância de R$ 0,01 na validação. - Rejeição 531: a W03-10 compara
ICMSTot/vBCcom o somatório das bases dos itens. Confira todos os itens abrangidos antes de mexer no total. É uma regra facultativa; conta de item e consolidação são testes diferentes.
As regras e a nota de arredondamento estão no MOC, p. 111, 117 e 120. Corrija a origem comprovada no emissor e reconcilie base do item, imposto e total; editar apenas o total ou o XML assinado não resolve a causa.
modBC aprofunda o método de formação, e vICMS explica a conferência do imposto resultante.
Referência técnica para integração
- XPath completo
/nfeProc/NFe/infNFe/det/imposto/ICMS/ICMS00/vBC- 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_1302 · 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}|[1-9]{1}[0-9]{0,12}(\.[0-9]{2})?- whiteSpace
preserve