NCM

Nomenclatura Comum do Mercosul: os códigos de classificação de mercadorias publicados pelo Siscomex.

  • Matriz de paridade

Validar

Verifica se um código NCM existe na tabela vigente publicada pelo Siscomex.

  • Um valor escrito só com dígitos, como string ou como número, é completado com zeros à esquerda até 8: 1012100, "1012100" e "01012100" são o mesmo código. Um valor com máscara é lido como foi escrito (101.21.00 é inválido).
  • Mesmas regras de entrada de cbo.isValid, com 8 dígitos e a máscara NNNN.NN.NN, inclusive uma sequência de separadores entre os grupos: 2203..00.00 é válido. Até a 2.4.0 um único separador era aceito e 2203..00.00 era rejeitado.
  • A tabela é o arquivo "Vigente em 26/09/2026" do Portal Único Siscomex (Resolução Gecex nº 926/2026), com 10.515 códigos.
ParâmetroTipoObrigatório
valuestring | numbersim
retornaboolean

Valida um código NCM (Nomenclatura Comum do Mercosul) contra a tabela vigente publicada pelo Siscomex/MDIC.

  • Mesmas regras de isValidCbo, com 8 dígitos e a máscara NNNN.NN.NN.
import { isValidNcm } from '@brazilian-utils/brazilian-utils';

isValidNcm('8471.30.12'); // true
isValidNcm('84713012'); // true
isValidNcm(1012100); // true (completado para 8 dígitos, ou seja, '01012100')
isValidNcm('1012100'); // true (completado do mesmo jeito que um número)
isValidNcm('00000000'); // false
isValidNcm('abc01012100'); // false (não é uma forma documentada)
isValidNcm(-84713012); // false (não é um inteiro seguro não negativo)

Fonte: nomenclatura NCM publicada pelo Portal Único Siscomex; os 10.515 códigos embutidos são os do arquivo "Vigente em 26/09/2026" (Resolução Gecex nº 926/2026).

Código: brazilian-utils/javascript
Teste com JavaScript isValidNcm
As entradas começam com o primeiro caso compartilhado. Mude uma para ver o novo resultado.

Roda @brazilian-utils/brazilian-utils 2.5.0 no seu navegador.

Casos de teste compartilhados (19) e o resultado em cada biblioteca ncm.isValid

Formatar

Formata um código NCM com a máscara NNNN.NN.NN. Só a estrutura muda (use ncm.isValid para verificar o código).

  • Mesmas regras de cnae.format. options.pad antes completa o valor com zeros à esquerda até 8 dígitos. Um valor sem dígitos, e null ou undefined, retorna uma string vazia também com pad; até a 2.4.0 o pad transformava um valor vazio na máscara de zeros (0000.00.00).
  • Um número só é lido se for um inteiro seguro não negativo. Número negativo, fracionário, não finito ou inseguro retorna uma string vazia (a 2.4.0 lia os dígitos de qualquer número, descartando sinal e ponto decimal).
ParâmetroTipoObrigatório
valuestring | numbersim
optionsFormatNcmOptionsnão
options.padbooleannão
retornastring

Formata um código NCM (Nomenclatura Comum do Mercosul). Só a estrutura muda; use isValidNcm para conferir um código com a tabela.

  • Opções (FormatNcmOptions): pad (padrão false) completa antes o valor com zeros à esquerda até os 8 dígitos de um código completo. Um valor vazio, ou sem dígitos, devolve '' mesmo com pad.
  • Mesmas regras de formatCnae, com a máscara NNNN.NN.NN.
import { formatNcm } from '@brazilian-utils/brazilian-utils';

formatNcm('84713012'); // 8471.30.12
formatNcm('8471'); // 8471 (máscara aplicada até onde o valor vai)
formatNcm('847130'); // 8471.30
formatNcm('8471', { pad: true }); // 0000.84.71 (completado até 8 dígitos antes)
formatNcm('abc8471'); // 8471 (só os dígitos são lidos)
formatNcm(-84713012); // '' (não é um inteiro seguro não negativo)
Código: brazilian-utils/javascript
Teste com JavaScript formatNcm
As entradas começam com o primeiro caso compartilhado. Mude uma para ver o novo resultado.

Roda @brazilian-utils/brazilian-utils 2.5.0 no seu navegador.

Casos de teste compartilhados (31) e o resultado em cada biblioteca ncm.format

Interpretar

Remove a formatação do NCM e mantém apenas os dígitos, limitados a 8.

  • A função não completa o valor com zeros à esquerda. Ela mantém um código parcial como foi escrito.
  • Retorna uma string vazia quando não há nenhum dígito (null e undefined incluídos).
  • Um número só é lido se for um inteiro seguro não negativo. Número negativo, fracionário, não finito ou inseguro retorna uma string vazia (a 2.4.0 lia os dígitos de qualquer número, descartando sinal e ponto decimal).
ParâmetroTipoObrigatório
valuestring | numbersim
retornastring

Remove a formatação do NCM (Nomenclatura Comum do Mercosul), mantém apenas os dígitos e limita o resultado aos 8 dígitos de um código completo.

  • Mesmas regras de parseCbo: nada é completado com zeros à esquerda aqui.
import { parseNcm } from '@brazilian-utils/brazilian-utils';

parseNcm('8471.30.12'); // '84713012'
parseNcm('8471'); // '8471' (um código parcial é mantido como está)
Código: brazilian-utils/javascript
Teste com JavaScript parseNcm
As entradas começam com o primeiro caso compartilhado. Mude uma para ver o novo resultado.

Roda @brazilian-utils/brazilian-utils 2.5.0 no seu navegador.

Casos de teste compartilhados (10) e o resultado em cada biblioteca ncm.parse

Fontes oficiais

Atualizado em

Nesta página