modBC no ICMS00: o que significam os códigos 0, 1, 2 e 3
<modBC>det › imposto › ICMS › ICMS00 › modBCRevisão editorial em 26 de set. de 2026. As versões e condições das regras estão indicadas ao longo do artigo.
modBC identifica a modalidade de determinação da base de cálculo do ICMS do item. Dentro de ICMS00, ele é obrigatório e aceita os códigos 0, 1, 2 e 3. A modalidade explica como a base foi determinada; o valor resultante fica em vBC. Nem a alíquota nem o valor do imposto são informados em modBC. Consulte o MOC 7.0, Anexo I, campo N13, p. 26.
Como interpretar cada código
| Código | Modalidade | Informação que deve sustentar a conferência |
|---|---|---|
0 |
Margem de valor agregado (%) | Critério e percentual de margem efetivamente aplicáveis, com memória de cálculo. O dígito zero é o código da modalidade, não uma margem de 0%. |
1 |
Pauta (valor) | Valor de pauta, referência oficial e vigência utilizados para apurar a base. O número 1 não é o valor de R$ 1,00. |
2 |
Preço tabelado máximo (valor) | Preço tabelado, produto/unidade correspondente e regra que determina seu emprego. |
3 |
Valor da operação | Componentes da operação que foram considerados na base, com inclusões e exclusões confirmadas. |
O domínio do schema não é uma recomendação de uso. Ele demonstra quais códigos essa ocorrência comporta. Para decidir a modalidade real, precisam estar confirmados os parâmetros fiscais da operação. O código não deve ser inferido por “ser uma venda”, pelo preço, por ser CST 00 ou pela modalidade de outra nota.
modBC vem da definição fiscal utilizada no cálculo. O emissor pode obtê-lo da parametrização, mas a coerência depende de essa definição corresponder à operação e à referência aplicável. Se a dúvida for qual modalidade empregar, reúna regime, produto, UF, operação e fundamento da base para confirmação com o responsável contábil. Depois verifique se o sistema utilizou o método confirmado e serializou seu código.
Por que mudar o código não recalcula a base
Suponha dois cenários puramente didáticos, já definidos por suas respectivas regras:
- Cenário A: a modalidade confirmada é valor da operação; a memória apurou base de R$ 1.000,00 e alíquota de 18%. O XML registra
modBC=3,vBC=1000.00evICMS=180.00. - Cenário B: a modalidade confirmada é pauta e a memória dessa pauta apurou base de R$ 1.200,00, com percentual sintético de 18%. O XML registra
modBC=1,vBC=1200.00evICMS=216.00.
O aumento do imposto vem da diferença entre as bases apuradas: 1.200 × 18 / 100 = 216. Não vem de multiplicar a base pelo código 1. Os números não propõem pauta ou alíquota para um produto real. No segundo cenário, o valor de pauta e sua relação com quantidade/unidade precisariam estar sustentados pela regra concreta antes da geração.
Se um integrador só troca 3 por 1 e mantém a memória do cenário A, não demonstra que adotou pauta. Há duas verificações separadas: o código deve identificar o método real; a base precisa resultar desse método.
Onde localizar e como representar
O caminho processado é nfeProc/NFe/infNFe/det/imposto/ICMS/ICMS00/modBC. Localize o det pelo seu nItem; não procure qualquer tag de mesmo nome no documento. O schema oficial usa enumerações de um dígito para essa ocorrência.
Fragmento sintético do cenário A, parcial em relação à nota, sem assinatura/protocolo e sem aptidão para transmissão:
<ICMS00 xmlns="http://www.portalfiscal.inf.br/nfe">
<orig>0</orig>
<CST>00</CST>
<modBC>3</modBC> <!-- identifica o método, não a alíquota -->
<vBC>1000.00</vBC> <!-- resultado monetário do método -->
<pICMS>18.00</pICMS>
<vICMS>180.00</vICMS>
</ICMS00>
Diferenças que evitam erros
modBCST é a modalidade da base de ICMS por substituição tributária, encontrada em alternativas que comportam ST. Tem seu próprio domínio e contexto. Não copie seus códigos para ICMS00/modBC. pMVAST é um percentual de margem de ST em grupos pertinentes; não é outro nome para modBC=0 e não pertence a ICMS00. pICMS é percentual; vBC é dinheiro; modBC é classificação do método.
O ICMS00 tampouco contém um campo de percentual de redução de base. Se a definição fiscal real envolve redução, a comparação com ICMS20 ajuda a reconhecer que a estrutura é outra; essa comparação não autoriza trocar o enquadramento por conta própria.
Como diagnosticar uma inconsistência
- Compare o código do XML enviado com o método registrado na memória de cálculo. Código divergente indica possível erro de mapeamento ou parâmetro aplicado à emissão.
- Confira a base com os valores e referências desse método. Uma base igual ao preço por coincidência não demonstra que foi usada a modalidade 3.
- Refaça
vBC × pICMS / 100para conferir o imposto. Em finalidade normal, a N17-20 pode retornar 528 sevICMSdivergir do produto, conforme condições e arredondamento do MOC. Essa validação aritmética não prova a escolha correta demodBC. - Corrija a origem comprovada e regenere o XML. Verifique código, base e imposto juntos; não force o total para esconder uma diferença.
Para continuar, vBC no ICMS00 aprofunda a reconstrução da base, e ICMS00 reúne todos os campos do grupo.
Referência técnica para integração
- XPath completo
/nfeProc/NFe/infNFe/det/imposto/ICMS/ICMS00/modBC- 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
- inline:xs:string · 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.
- enumeration
0- enumeration
1- enumeration
2- enumeration
3- whiteSpace
preserve