Validador de Código CEST
Valida o formato de código CEST (XX.XXX.XX), 7 dígitos. Verifica se o segmento (XX) está entre 01-28 (oficiais).
Validação de CEST: formato, lookup e coerencia com o NCM
O CEST (Código Especificador da Substituição Tributaria) e um código de 7 dígitos que identifica produtos sujeitos a ICMS Substituição Tributaria (ICMS-ST). Foi criado pelo Convenio ICMS 92/2015 do Confaz (Conselho Nacional de Política Fazendaria) para uniformizar, em todos os estados, quais mercadorias estão no regime de ST e a qual segmento pertencem.
Validar um CEST e mais do que aplicar regex. O código precisa (i) seguir o formato canônico, (ii) existir no anexo do Convenio ICMS 142/2018 (a tabela consolidada que substituiu o 92/2015) e (iii) ser coerente com o NCM do produto. Um CEST sem NCM compatível e automaticamente rejeitado pela Sefaz.
Anatomia dos 7 dígitos: segmento + item + especificação
O CEST e exibido na forma canônica SS.III.EE e se decompoe assim:
- Dígitos 1-2 (SS): o segmento. O Confaz define 28 segmentos, numerados de 01 a 28.
- Dígitos 3-5 (III): o item dentro do segmento. São numerados sequencialmente conforme o Confaz adiciona produtos.
- Dígitos 6-7 (EE): a especificação. Distingue variantes de um mesmo item —
00quando não ha especificação adicional.
Exemplo: CEST 03.002.00 = segmento 03 (bebidas alcoolicas, exceto cerveja e chope) + item 002 (vinho) + especificação 00 (sem variante). Lendo o código da esquerda para a direita aparece a cadeia de classificação para ST.
Os 28 segmentos do Confaz
Cada segmento agrupa produtos tematicamente relacionados. Os mais frequentes no e-commerce do dia a dia:
- 01 Autopecas — 02 Bebidas alcoolicas, exceto cerveja e chope — 03 Bebidas alcoolicas (vinho, espumante, destilados)
- 04 Cervejas, chopes, refrigerantes, aguas e outras bebidas — 05 Cigarros e outros derivados do fumo — 06 Cimentos
- 07 Combustiveis e lubrificantes — 08 Energia elétrica — 09 Ferramentas — 10 Materiais de construção
- 11 Materiais de limpeza — 12 Materiais eletricos — 13 Medicamentos — 14 Papéis
- 15 Perfumaria e higiene pessoal — 16 Produtos alimenticios — 17 Produtos ceramicos — 20 Produtos de papelaria
- 21 Produtos eletrônicos, eletroeletronicos e eletrodomesticos — 22 Racoes para animais — 23 Sorvetes — 24 Tintas e vernizes
- 26 Veículos automotores — 27 Veículos de duas e três rodas — 28 Venda de mercadorias pelo sistema porta a porta
Três camadas de validação
// 1. Formato
const re = /^\d{2}\.?\d{3}\.?\d{2}$/
if (!re.test(input)) return { ok: false, error: 'formato' }
const cest = input.replace(/\./g, '')
// 2. Existencia no anexo do Convenio ICMS 142/2018
const linha = tabelaCest.get(cest)
if (!linha) return { ok: false, error: 'fora da tabela CEST' }
// 3. Coerencia com o NCM
if (!linha.ncms.some(n => ncmComecaCom(produtoNcm, n))) {
return { ok: false, error: 'CEST nao cobre este NCM' }
}
return { ok: true, segmento: linha.segmento, mva: linha.mvaPorUf }
ICMS-ST em linguagem direta
Substituição Tributaria significa que um contribuinte na cadeia — em geral o fabricante ou importador — paga o ICMS devido pelas operações seguintes (atacado e varejo) em nome de todos os revendedores. O CEST sinaliza que o produto esta sob ST, e a MVA (Margem de Valor Agregado) — percentual definido por cada estado — e usada para estimar o preço final de varejo e calcular o ICMS-ST devido.
Nem todo estado adota ST para todo CEST: cada UF escolhe (e altera) os protocolos. O mesmo CEST pode disparar ST em São Paulo e não no Para. Validadores production-grade também checam o protocolo da UF, não apenas a existência do CEST.
CEST exige NCM: o par inseparavel
A tabela Confaz associa cada CEST a uma lista de NCMs compatíveis (em geral prefixos de NCM). Um CEST não pode aparecer em nota fiscal eletrônica sem NCM, e o NCM precisa casar com ao menos um prefixo da lista do CEST. A rejeicao Sefaz mais frequente aqui e a 806: "CEST informado não corresponde ao NCM informado".
<det nItem="1">
<prod>
<NCM>22030000</NCM>
<CEST>0300200</CEST> <!-- vinho, segmento bebidas -->
</prod>
</det>
Erros comuns e edge cases
- Zeros a esquerda removidos: CEST
0100100digitado como100100falha no regex; normalize sempre para 7 dígitos. - CEST sem NCM: sistemas de emissão precisam exigir NCM sempre que houver CEST.
- Segmento errado: classificar um refrigerante no segmento 03 (alcoolicos) em vez do 04 (cervejas, chopes, refrigerantes) e erro frequente.
- Tabela desatualizada: o Confaz publica alteracoes por convenios ICMS; depender da versão de 2015 perde itens incluidos pelo 142/2018 e posteriores.
- Confusão com MEI: o MEI em geral esta fora do regime de ST, mas o CEST ainda precisa ser informado se o produto estiver na tabela; o ICMS-ST simplesmente não sera cobrado do MEI.
FAQ
E se meu produto não estiver na tabela CEST? Ele não esta sob ICMS-ST. A NF-e deve omitir a tag CEST por completo — não invente um placeholder.
O CEST e obrigatório em todo estado? O CEST e obrigatório sempre que o produto consta da tabela do convenio, em qualquer UF. Se o ICMS-ST de fato sera cobrado depende dos protocolos de cada estado.
O CEST altera a alíquota de ICMS? Não. O CEST apenas identifica o produto como sujeito a ST. A alíquota e a MVA são definidas pela legislacao de cada UF, não pelo CEST.
Como os marketplaces (Mercado Livre, Magalu, B2W) tratam o CEST? Eles exigem que o vendedor declare o CEST por SKU e validam server-side antes de emitir a NF-e. CEST errado bloqueia a venda.
Onde consigo a tabela oficial de CEST? No anexo do Convenio ICMS 142/2018 e suas alteracoes, publicado no portal do Confaz. A BrasilAPI também expõe um espelho mantido.
Ferramentas Relacionadas
Validador de Código Promocional
Verifica se um código promocional segue o formato configurado: tamanho, caracteres permitidos (alfanumérico, com ou sem hífens) e checksum opcional Luhn.
Validador de Código de Rastreio
Valida o formato de códigos de rastreio dos Correios brasileiros (AA123456789BR). Identifica prefixo do serviço e país.
Validador Código Banco FEBRABAN
Valide o código de um banco brasileiro no padrão FEBRABAN (3 dígitos, ex.: 001 Banco do Brasil, 341 Itaú). Útil para boletos, TEDs, DOCs e cadastros bancários.
Validador de ISRC
Valida o formato de códigos ISRC (International Standard Recording Code) usados em faixas musicais: CC-XXX-YY-NNNNN.
Validador de Código NCM
Valida o formato do NCM (8 dígitos numéricos). Decompõe em capítulo (2), posição (2), subposição (2) e item (2). Não valida tabela oficial.
Decodificador de Boleto (Linha Digitável e Código de Barras)
Decodifica a linha digitável ou o código de barras de boletos brasileiros, confere os dígitos verificadores e mostra banco, vencimento e valor.