Inscrição estadual

Números de inscrição estadual, validados conforme a regra de cada estado.

  • Matriz de paridade

Validar

Valida uma inscrição estadual para um estado informado. Usa o formato e a regra de dígito verificador que o estado publica (SINTEGRA).

  • params.value é a inscrição, uma string. Qualquer outro tipo, ou valor ausente, retorna false. params.stateCode é a sigla de duas letras do estado, sem diferenciar maiúsculas de minúsculas, e espaços nas pontas são ignorados (até a 2.4.0 o espaço tornava o estado desconhecido e o resultado false). Um estado desconhecido ou ausente retorna false.
  • Pontuação e espaços na inscrição são ignorados. Letras são descartadas antes da verificação em todos os estados, exceto SP, onde só o P é aceito.
  • O JavaScript ainda mantém a forma da 2.3.0, isValidIe(stateCode, ie), obsoleta. Ela responde como a forma com objeto. As outras linguagens recebem só o objeto de parâmetros.
  • Vários estados têm casos especiais: GO, PA, MS, MT, SP, TO, DF, PE, AL, AM, RR, MG e RO. São prefixos ou formatos extras, ou leituras onde a página do SINTEGRA é omissa ou diverge dos atos do próprio estado. Quando as fontes oficiais divergem, a biblioteca mantém o comportamento e documenta em que ele se apoia.
  • AL: o terceiro dígito é o tipo de empresa e precisa ser 0, 3, 5, 7 ou 8, os cinco que a página do SINTEGRA lista. A 2.4.0 aceitava qualquer terceiro dígito.
  • DF: 13 dígitos com prefixo 07 ou 08. O DF passou para 08 quando os números 07 acabaram. Nenhum ato da SEFAZ-DF anuncia isso; o prefixo se apoia no validador de CF/DF do portal da Receita DF e em notas de software. A 2.4.0 só aceitava 07.
  • GO: 9 dígitos com prefixo 10, 11, 15 ou de 20 a 29. A IN 946/09-GSF (na redação da IN 1.535/22-GSE) dá 10 e 20 para pessoa jurídica e 11 para pessoa física, e a Secretaria da Economia emite o 20 para empresas novas desde 13/01/2023. A página do SINTEGRA (2022) dá de 20 a 29, e só o roteiro de crítica de 2012 dá 15. O dígito verificador segue o roteiro de 2012, com a faixa especial 10103105 a 10119997 e a inscrição 11094402 de dois dígitos, então 101031050 é rejeitada. A 2.4.0 rejeitava os prefixos de 20 a 29. Nenhuma norma cita o 15 nem o 21 a 29, então as fontes oficiais divergem e todos os prefixos são aceitos. A regra do dígito verificador da página do SINTEGRA (2022) lê sempre o resto 0 ou 1 como 0; esta biblioteca segue o roteiro, como a 2.4.0.
  • MT: 9 dígitos, a forma que a Portaria SEFAZ-MT 59/2025 art. 8º § 1º prescreve, ou os 11 dígitos que a página do SINTEGRA mostra. A forma de 9 dígitos é verificada como a de 11 completada com dois zeros. A 2.4.0 só aceitava 11 dígitos.
  • PA: 9 dígitos com prefixo 15 ou de 75 a 79, os seis que a página do SINTEGRA lista. A SEFA-PA anunciou só o 75 (08/10/2024); 76 a 79 se apoiam na página. É o comportamento da 2.4.0.
  • PE: o número eFisco de 9 dígitos ou o antigo número CACEPE de 14 dígitos (13 dígitos e 1 verificador, pesos 5, 4, 3, 2, 1, 9 a 2, diferença acima de 9 menos 10). A Portaria SF 087/2007 converteu os números antigos, mas não fixou data a partir da qual eles deixam de valer. A 2.4.0 só aceitava 9 dígitos.
  • SP: uma inscrição de produtor rural é P seguido de 0MMMSSSSD000, então o caractere depois do P precisa ser 0 (P0 + 11 dígitos). O P pode ser minúsculo. Letras diferentes de P são rejeitadas. A 2.4.0 aceitava qualquer dígito depois do P.
  • MS: prefixos 28 e 50, os dois que a página do SINTEGRA (2024) dá. Um comunicado da SEFAZ-MS diz que as empresas novas começam com 50, enquanto a única norma, a Resolução/SEF 1.344/1999, dá só o 28. A regra do dígito verificador é a mesma para os dois.
  • RR: o prefixo 24 é obrigatório. A página do SINTEGRA nunca o escreve: ele é lido dos dez exemplos válidos da página, que começam todos com 24.
  • TO: a forma de 9 dígitos em vigor (Portaria SEFAZ-TO 676/2002, art. 3º; RICMS-TO, art. 90), sem verificação de prefixo, ou a antiga de 11 dígitos que a página do SINTEGRA documenta, cujos dígitos de tipo (3º e 4º, fora da soma do dígito verificador) precisam ser 01, 02, 03 ou 99.
  • AM: a página do SINTEGRA dá uma regra com dois ramos e deixa "Resto" indefinido. A biblioteca o lê como a soma módulo 11 e dá 0 a uma soma de 0 ou 1, que é a regra comum do módulo 11 (pesos de 9 a 2, resto 0 ou 1 dando 0).
  • RO: a forma de 14 dígitos (13 dígitos e o verificador) que a página do SINTEGRA dá para inscrições desde 01/08/2000. A de 9 dígitos que ela ainda mostra para a fórmula anterior (101.62521-3) é rejeitada: esses números foram convertidos em 0000000062521-3.
  • MG: um primeiro dígito verificador 10, vindo de uma soma que já é múltiplo de dez, é lido como 0.
  • Uma inscrição só com zeros é aceita sempre que a fórmula publicada dá dígito verificador 0 para ela: AM, CE, ES, MG, PB, PE (9 dígitos), PI, PR, RJ, RS, SC, SE e SP, além de BA com 8 ou 9 dígitos, MT com 9 ou 11 dígitos e TO com 9 dígitos. Diferente de cpf.isValid e cnpj.isValid, a IE não rejeita dígitos repetidos.
ParâmetroTipoObrigatório
paramsIsValidIeParamssim
params.valuestringsim
params.stateCodeStateCodesim
retornaboolean

Valida uma inscrição estadual para um estado. Descontinuada: a forma posicional isValidIe(stateCode, ie) continua funcionando, mas está descontinuada; use a forma com objeto isValidIe({ value, stateCode }).

  • Recebe um único objeto (IsValidIeParams): value é a inscrição e stateCode o estado ao qual ela pertence (um StateCode, sem diferenciar maiúsculas de minúsculas e ignorando espaços em volta).
  • Alguns estados têm casos especiais, um prefixo ou formato que a página do SINTEGRA não traz ou um desvio proposital dela (detalhes e fontes no JSDoc em src/is-valid-ie):
    • GO: os prefixos 10, 11, 15 e 20 a 29, a união de fontes que divergem: a norma (IN nº 946/09-GSF, art. 39, I, na redação da IN nº 1.535/22-GSE) traz 10, 20 e 11, a página do SINTEGRA 10, 11 e 20 a 29, o roteiro de crítica de 2012 10, 11 e 15. O dígito verificador segue o roteiro, como na 2.4.0: resto 1 dá 1 na faixa 10103105 a 10119997, e 11094402 aceita os dois dígitos, casos especiais que a página do SINTEGRA (2022) não tem.
    • MT: 11 dígitos, ou os 9 dígitos que a Portaria SEFAZ-MT nº 59/2025 (art. 8º, § 1º) prevê, lidos como a forma de 11 dígitos com dois zeros à esquerda (nenhum texto oficial traz a regra do dígito verificador da forma de 9 dígitos).
    • PA: os prefixos 15 e 75 a 79 que a página do SINTEGRA lista (a SEFA-PA atribui 75 desde 07/10/2024). MS: os prefixos 28 e 50 que a página do SINTEGRA traz (o 50 também está em um comunicado da SEFAZ-MS sobre o e-CCE; a única norma, a Resolução/SEF nº 1.344/1999, traz só o 28).
    • DF: a regra de 13 dígitos do AC com os prefixos 07 e 08. A página do SINTEGRA não diz que o 07 é fixo; a folha de regras da SEFAZ-DF o chama de "campo fixo". O DF passou a 08 quando os números iniciados por 07 acabaram.
    • RR: o prefixo 24, que a página do SINTEGRA não escreve como regra: ele vem dos dez exemplos da página.
    • SP: o formato de produtor rural P0MMMSSSSD000, com o zero depois do P; o P pode ser minúsculo.
    • TO: os 9 dígitos em vigor (Portaria SEFAZ-TO nº 676/2002, art. 3º; RICMS-TO, Decreto nº 2.912/2006, art. 90), ou os antigos 11 dígitos que a página do SINTEGRA documenta, com os dígitos de tipo 01, 02, 03 ou 99.
    • AM: a regra do dígito verificador da página tem dois ramos e não define "Resto"; a biblioteca o lê como a soma módulo 11 e dá 0 a uma soma 0 ou 1, a regra comum de módulo 11.
    • MG: um primeiro dígito verificador 10, de uma soma que já é múltiplo de dez, é lido como 0.
    • PE: o formato eFisco de 9 dígitos e o antigo formato CACEPE de 14 dígitos, ambos na página do SINTEGRA (a Portaria SF nº 087/2007 converteu os números antigos, mas não fixou data a partir da qual deixam de valer).
    • RO: o formato de 14 dígitos que a página do SINTEGRA dá para as inscrições desde 01/08/2000. O formato de 9 dígitos que ela ainda imprime para a fórmula anterior (101.62521-3) é rejeitado: esses números foram convertidos para 13 dígitos mais o dígito verificador (0000000062521-3).
    • AL: o terceiro dígito, o tipo de empresa, deve ser 0, 3, 5, 7 ou 8, os valores que a página do SINTEGRA lista.
  • Uma inscrição só de zeros é aceita em todo estado cuja fórmula publicada produz dígito verificador 0 para ela: AM, CE, ES, MG, PB, PE (9 dígitos), PI, PR, RJ, RS, SC, SE e SP, mais BA com 8 ou 9 dígitos, MT com 9 ou 11 dígitos e TO com 9 dígitos.
import { isValidIe } from '@brazilian-utils/brazilian-utils';

isValidIe({ value: '110042490114', stateCode: 'SP' }); // true
isValidIe({ value: 'P011004243002', stateCode: 'SP' }); // true (produtor rural)
isValidIe({ value: '0187634580933', stateCode: 'AC' }); // false
isValidIe({ value: '109161793', stateCode: 'go' }); // true (não diferencia maiúsculas de minúsculas)
isValidIe({ value: '109161793', stateCode: ' GO ' }); // true (espaços em volta são ignorados)
isValidIe({ value: '200000004', stateCode: 'GO' }); // true (prefixo 20)
isValidIe({ value: '130000019', stateCode: 'MT' }); // true (9 dígitos)

Fonte: páginas dos estados no SINTEGRA, o roteiro de crítica de Goiás e a IN nº 946/09-GSF.

Código: brazilian-utils/javascript
Teste com JavaScript isValidIe
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 (264) e o resultado em cada biblioteca ie.isValid

Guias

Fontes oficiais

Veja também CNPJ

Atualizado em

Nesta página