NCM
Nomenclatura Comum do Mercosul: os códigos de classificação de mercadorias publicados pelo Siscomex.
Validar
- JavaScript, biblioteca
- Python, biblioteca
- Go, biblioteca1 caso falha
- Ruby, biblioteca1 caso falha
- Rust, biblioteca2 casos falham
- .NET, biblioteca1 caso falha
- Erlang, biblioteca
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áscaraNNNN.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 e2203..00.00era 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âmetro | Tipo | Obrigatório |
|---|---|---|
value | string | number | sim |
| retorna | boolean |
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áscaraNNNN.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/javascriptTeste com JavaScript isValidNcm
Casos de teste compartilhados (19) e o resultado em cada biblioteca ncm.isValid
Formatar
- JavaScript, biblioteca
- Python, biblioteca
- Go, biblioteca2 casos falham
- Ruby, biblioteca6 casos falham
- Rust, biblioteca
- .NET, biblioteca2 casos falham
- Erlang, biblioteca
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.padantes completa o valor com zeros à esquerda até 8 dígitos. Um valor sem dígitos, enullouundefined, retorna uma string vazia também compad; até a 2.4.0 opadtransformava 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âmetro | Tipo | Obrigatório |
|---|---|---|
value | string | number | sim |
options | FormatNcmOptions | não |
options.pad | boolean | não |
| retorna | string |
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ãofalse) 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 compad. - Mesmas regras de
formatCnae, com a máscaraNNNN.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)Teste com JavaScript formatNcm
Casos de teste compartilhados (31) e o resultado em cada biblioteca ncm.format
Interpretar
- JavaScript, biblioteca
- Python, biblioteca
- Go, biblioteca2 casos falham
- Ruby, biblioteca2 casos falham
- Rust, biblioteca
- .NET, biblioteca1 caso falha
- Erlang, biblioteca
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 (
nulleundefinedincluí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âmetro | Tipo | Obrigatório |
|---|---|---|
value | string | number | sim |
| retorna | string |
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á)Teste com JavaScript parseNcm
Casos de teste compartilhados (10) e o resultado em cada biblioteca ncm.parse
Fontes oficiais
Atualizado em
