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.
Validação de NCM: do regex ao lookup na TIPI
O NCM (Nomenclatura Comum do Mercosul) e a classificação fiscal de 8 dígitos que determina como um produto e tributado quando cruza as fronteiras brasileiras ou circula no mercado interno. Validar um NCM e um processo em camadas: não basta confirmar que a entrada tem 8 dígitos — o código precisa existir na TIPI vigente e ser hierarquicamente coerente.
Convencionalmente o NCM e exibido na mascara CC.CC.CC.CC, mas a Sefaz aceita tanto a forma com pontos quanto a sequência bruta de 8 dígitos. Um validador robusto normaliza a entrada, faz a checagem de regex e em seguida consulta a tabela oficial.
A hierarquia 6+2: Sistema Harmonizado da OMA mais Mercosul
Os 8 dígitos se decompoem em dois blocos semanticos:
- Dígitos 1-6 (SH): o Sistema Harmonizado, mantido pela Organização Mundial das Aduanas (OMA) e usado por mais de 200 paises. Os dígitos 1-2 são o Capítulo, 3-4 a Posição e 5-6 a Subposicao.
- Dígitos 7-8 (Mercosul): Item (dígito 7) e Subitem (dígito 8), criados pelo Mercosul para refinar a tributacao quando a granularidade do SH e insuficiente.
Exemplo: o NCM 87.03.23.10 significa Capítulo 87 (veículos), Posição 03 (automoveis de passeio), Subposicao 23 (motor de 1500 a 3000 cm3), Item 1 e Subitem 0 (detalhamento Mercosul para carros com ignicao por centelha e cilindrada de 1500 a 3000 cm3).
Três camadas de validação
Um validador sério submete a entrada a três testes sequenciais:
// 1. Formato
const re = /^\d{2}\.?\d{2}\.?\d{2}\.?\d{2}$/
if (!re.test(input)) return { ok: false, error: 'formato' }
const ncm = input.replace(/\./g, '')
// 2. Semantica (lookup na tabela)
const existe = await tabelaTipi.has(ncm)
if (!existe) return { ok: false, error: 'fora da TIPI' }
// 3. Coerencia hierarquica
const capitulo = ncm.slice(0, 2)
const posicao = ncm.slice(0, 4)
if (!capitulosValidos.has(capitulo)) return { ok: false, error: 'capitulo' }
if (!posicoesValidas.has(posicao)) return { ok: false, error: 'posicao' }
return { ok: true }
TIPI: a fonte da verdade e suas atualizacoes anuais
A TIPI (Tabela de Incidencia do Imposto sobre Produtos Industrializados) e a tabela oficial mantida pela Receita Federal. Lista todo NCM válido junto com a alíquota de IPI aplicavel. A versão atual e fixada pelo Decreto 11.158/2022 e e alterada por Resolucoes Camex ao longo do ano — geralmente consolidadas em um novo Decreto a cada ano. Códigos podem ser criados, modificados ou revogados em qualquer revisão, por isso a validação de NCM não pode depender de uma lista cravada no código.
A OMA revisa o Sistema Harmonizado a cada cinco anos (HS 2017, HS 2022, HS 2027), obrigando o Mercosul a realinhar o prefixo de 6 dígitos. A última grande revisão moveu centenas de produtos de e-commerce, veículos eletricos e biotecnologia para novas posições — fonte clássica de falhas de validação em catálogos que não foram migrados.
Casos de uso que exigem NCM válido
- Emissão de NF-e: a Sefaz rejeita qualquer nota cujo NCM não esteja na TIPI vigente (regra N16a do schema). O código de rejeicao
778e "NCM não encontrado na TIPI vigente". - Declaração de Importacao (DI / Duimp): o Siscomex bloqueia o registro se o NCM for inválido ou revogado, e calcula II, IPI, PIS-Importacao e COFINS-Importacao a partir do código.
- Declaração de Exportação (DU-E): obrigatória para o desembaraco; NCM errado pode gerar reclassificacao, multa e retenção da carga no porto.
- ICMS-ST e CEST: quando o produto esta sob substituição tributaria, o NCM e usado em conjunto com o CEST para definir o regime.
- Obrigacoes estatísticas: SECEX, MDIC e IBGE usam o NCM para compor as estatísticas de comercio exterior.
APIs gratuitas e bibliotecas brasileiras
A Receita Federal não expõe um endpoint público limpo para NCM, mas a comunidade preencheu a lacuna. A opção gratuita mais confiável e a BrasilAPI:
GET https://brasilapi.com.br/api/ncm/v1/{codigo}
GET https://brasilapi.com.br/api/ncm/v1?search={termo}
Alternativas comerciais como Soluctra, Mastersaf e SOVOS Taxweb entregam uma TIPI continuamente atualizada e o histórico de revisoes, indispensavel para auditorias retroativas. Não cravem listas de NCM no banco de produtos — configurem um job mensal que puxe a TIPI mais recente e concilie os SKUs.
Erros de validação mais comuns
- Erro de digitação: dígitos trocados ou ponto faltando — pego pelo regex.
- NCM revogada: o código era válido no ano passado mas não existe mais — pego pelo lookup na TIPI.
- Hierarquia inconsistente: os dígitos 7-8 apontam para um item Mercosul inexistente sob uma subposicao SH valida.
- Drift de migração HS: catálogo ainda referência códigos HS 2017 após a virada para HS 2022.
- Pseudo-código: placeholders internos como
9999.99.99que passam no regex mas falham na TIPI.
NCM vs HS vs TARIC: não são intercambiáveis
Mesmo que NCM, TARIC (UE) e HTS (EUA) estendam o mesmo Sistema Harmonizado, eles divergem a partir do sexto dígito. Um produto classificado como 8703.23.10 no Brasil pode virar 8703.23.19.10 (10 dígitos) na TARIC da UE e 8703.23.01.40 no HTS americano. Catálogos cross-border precisam manter o mapeamento por jurisdicao; reusar o NCM brasileiro em uma declaração europeia e reclassificacao na certa.
FAQ
De quanto em quanto tempo a TIPI e atualizada? O Decreto base costuma ser anual, mas resolucoes Camex podem altera-lo a qualquer momento. Planeje uma reconciliacao mensal contra a fonte oficial.
Existe forma gratuita de validar NCM contra a tabela oficial? Sim. A BrasilAPI faz proxy da lista oficial e e gratuita para uso moderado. Para alto volume, espelhe a tabela localmente e atualize semanalmente.
Um mesmo produto pode ter mais de um NCM? Não. Cada SKU deve ser classificado em um único NCM. Se o produto realmente se encaixa em duas posições, a Receita Federal aceita uma consulta de classificação e emite solucao de consulta vinculante.
O que a Sefaz retorna quando o NCM e inválido? O código de rejeicao 778 ("NCM não encontrado na TIPI vigente") ou 779 (quando o código e válido mas não pode ser usado no tipo de operação informado).
Este validador consulta a Receita Federal? Não. Ele faz checagens de formato e hierarquia localmente. Para confirmacao semântica na TIPI, aponte seu backend para a BrasilAPI ou um fornecedor de compliance fiscal licenciado.
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 Placa de Veículo
Valide placas de veículo brasileiras nos padrões antigo (ABC-1234) e Mercosul (ABC1D23). Detecta automaticamente qual padrão. Tudo no navegador.
Validador de Código de Município IBGE
Valida o formato do código IBGE de município (7 dígitos: UF + 5 internos). Verifica se os 2 primeiros são UF válida.
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 de CPF em Lote
Valida uma lista de CPFs (um por linha) e mostra quais são válidos e quais são inválidos. Sem envio para servidores.
Validador de Código IBGE de Cidade
Valida o formato de código IBGE de município brasileiro: 7 dígitos. Os 2 primeiros são UF (11=RO até 53=DF).