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

CST 20 no ICMS20: redução de base e condições do grupo

<CST>det › imposto › ICMS › ICMS20 › CST

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

CST dentro de ICMS20 é fixado em 20, que identifica tributação com redução da base de cálculo. Ele é separado da origem da mercadoria e não informa o percentual de redução nem concede benefício para a operação.

Neste artigo:

Como localizar o código e evitar 020 no XML?

O XPath é /nfeProc/NFe/infNFe/det/imposto/ICMS/ICMS20/CST. A origem vem em orig, um dígito; a situação em CST, dois dígitos. Se um cadastro apresenta 020 concatenado, a representação XML correspondente, somente quando os dados forem reais, é origem 0 e CST 20 em tags separadas. O schema deste ramo rejeita CST 70 ou 020 ou qualquer outro valor. XSD, ICMS20.

A ordem obrigatória é orig, CST, modBC, pRedBC, vBC, pICMS, vICMS. FCP e desoneração são sequências posteriores com condições próprias.

NF-e, NFC-e e Simples aceitam o mesmo contexto?

O leiaute é compartilhado por NF-e 55 e NFC-e 65. N12-30 inclui CST 20 entre os admitidos na NFC-e; isso não concede benefício nem dispensa CFOP e demais condições. N12-20 é facultativa e pode gerar 590 quando há CST para CRT 1 ou 4; sua exceção alcança os monofásicos 02, 15, 53, 61: CST 20 não está nessa exceção. A definição do enquadramento depende do regime real, produto, operação, UF, data e ato que prevê a redução. NT 2023.001, p.34; NT 2024.001, p.12.

Na NFC-e, N12-40/382 também relaciona CST 20 ao conjunto de CFOP permitido para os CST 00, 20, 40, 41, 90; o texto vigente consultado é o da NT 2024.001, p.12. Não se resolve uma mensagem trocando CFOP verdadeiro por um número da lista. Confirme a operação e o modelo antes de corrigir o mapeamento. A aceitação de CST 20 em N12-30 e a restrição de regime de N12-20 são verificações diferentes. NT 2024.001.

Na NF-e 55, a regra facultativa N12-10/527 verifica CFOP de exportação iniciado por 7 e informa incompatibilidade quando o CST difere de 41 ou o CSOSN difere de 300. A exceção documentada é a finalidade de devolução (finNFe=4). Assim, CST 20 não pode ser tratado como compatível com qualquer exportação apenas por existir no XSD. Essa é uma comparação técnica nas condições da regra; não recomenda enquadramento nem troca de CFOP/CST para uma operação real. MOC 7.0, p.99.

Na NFC-e 65, a N12-40/382 verifica, para CST 20, os CFOP 5.101, 5.102, 5.103, 5.104, 5.115 e 5.910. As observações de RS com 5.949 e de CE com 5.405 são para CST 90, não para 20. Essa lista descreve a validação; não orienta substituir o CFOP verdadeiro por outro número para autorizar. Confirme a natureza da operação e o contrato do emissor. NT 2024.001, p.12.

Qual é a diferença para outros CSTs?

CST 20 reduz a base do ICMS próprio. CST 70 reúne redução da base e cobrança de ICMS por substituição tributária em outro grupo. CST 40/41 representam isenção/não tributação; CST 51 trata diferimento. CSOSN pertence à codificação do Simples em ramos próprios e não se obtém acrescentando dígitos a 20.

No exemplo hipotético, base anterior 1000,00, redução 20%, base informada 800,00 e alíquota 18% produzem imposto 144,00. Não se substitui CST 20 por um código de isenção porque o imposto diminuiu; tampouco se altera pICMS para 14,4 só para mostrar a carga efetiva. Os números demonstram campos, sem recomendar enquadramento. MOC 7.0, Anexo I, pp.28–29 e XSD PL_010f_v1.04, ICMS20.

Como ler um exemplo e investigar divergências?

Grupo completo para demonstração, parcial em relação à NF-e, com parâmetros inteiramente sintéticos e sem sequências opcionais neste cenário:

<ICMS20 xmlns="http://www.portalfiscal.inf.br/nfe">
  <orig>0</orig>
  <CST>20</CST>
  <modBC>3</modBC>
  <pRedBC>20.0000</pRedBC>
  <vBC>800.00</vBC>
  <pICMS>18.0000</pICMS>
  <vICMS>144.00</vICMS>
</ICMS20>

Se o retorno indicar 590, confira CRT e contrato do emissor antes de escolher tratamento com o responsável contábil. Se indicar 382, verifique modelo 65, CFOP e CST reais. Em 528, confronte vBC × pICMS/100, finalidade normal e regra facultativa do modelo 55/65. Em 934, a exigência de desoneração depende de UF/modelo/CST e exceções, não somente do número 20. N12-90/934 verifica valor e motivo de desoneração para CST 20, 30, 40, 41, 50, 70 e 90, com implementação a critério da UF, por modelo e CST. A tabela 3.6.1 da NT 2019.001 v1.70 documenta especificamente para essa regra:

UF Modelos Marco documentado de produção Exceções estaduais indicadas
GO 55/65 D5: 01/07/2023; homologação 01/10/2022 E2 e E3
RJ 55/65 D2: 01/10/2019 E2 e E3
Demais linhas da tabela Conforme a linha D*: regra não aplicada nessa tabela Não inferir ativação por outra regra

A exceção E1, para devolução interestadual ou ao exterior (finNFe=4 e idDest=2 ou 3), vale para todas as UF e não precisa constar na linha. E2 afasta devoluções de mercadoria; E3, notas de ajuste. GO e RJ indicam essas duas exceções na coluna N12-90. E4 seria entrada, mas não consta nessa coluna para GO/RJ: não presuma sua aplicação só porque a exceção aparece no texto geral. A ressalva própria do CST 90 não se transporta ao CST 20. Os marcos são os documentados na versão citada; não substituem a confirmação de uma atualização estadual posterior nem comprovam resposta de um autorizador específico. NT 2019.001, pp.18, 21–22.

Leve para confirmação contábil produto, ato de redução, UF, data, regime, destinatário e natureza da operação. Após parâmetros definidos, revise o ramo escolhido, campos e serialização. Nem um número admitido no schema nem uma autorização isolada certificam o direito ao benefício.

Referência técnica para integração

XPath completo
/nfeProc/NFe/infNFe/det/imposto/ICMS/ICMS20/CST
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
20
whiteSpace
preserve