CEI

Cadastro Específico do INSS, para empregadores sem CNPJ (obras, produtores rurais), substituído pelo CNO e pelo CAEPF.

  • Matriz de paridade

Validar

Valida um CEI: 12 dígitos, sendo 11 dígitos de base e um dígito verificador.

  • O dígito verificador aplica à base os pesos 7, 4, 1, 8, 5, 2, 1, 6, 3, 7, 4. Soma a dezena da soma à sua unidade. Depois, toma o complemento a 10 do dígito das unidades resultante (10 vira 0).
  • Um valor com todos os dígitos iguais é rejeitado.
  • Aceita um número ou uma string, sem máscara ou dividida nos grupos impressos (2, 3, 5 e 2 dígitos) por qualquer sequência de espaços, ., - ou / entre dois grupos. Os espaços nas pontas do valor são ignorados. Qualquer outra forma, como outro separador, uma letra ou um agrupamento diferente, é rejeitada.
  • Um número só é lido se for um inteiro seguro não negativo. Número negativo, fracionário, não finito ou inseguro é inválido.
  • Nenhuma fonte oficial publica a regra do dígito verificador. Só as 12 posições e a manutenção do número do CEI no CNO (Manual de Orientação do eSocial S-1.3, item 9.1) são oficiais. A IN RFB 2.061/2021 não traz dígito verificador, e o eSocial só verifica se o número existe na base da Receita. A regra vem de implementações de referência de terceiros, conferidas com os dados abertos do CNO e com o exemplo do SERPRO, 000000336854.
  • Um número perde os zeros à esquerda, então um valor que começa com 0 só é aceito como string: "000000336854" é válido e 336854 não é.
ParâmetroTipoObrigatório
valuestring | numbersim
retornaboolean

Valida um número de CEI (Cadastro Específico do INSS). O CEI identifica o empregador sem CNPJ, como uma obra ou um produtor rural.

  • Layout: 12 dígitos impressos como 00.000.00000/00, 11 dígitos de base e um dígito verificador.
  • Um número perde os zeros à esquerda, então um valor que começa com 0 só é aceito como string: isValidCei('000000336854') é true e isValidCei(336854) é false.
  • Só os 12 dígitos são oficiais: nenhuma norma, leiaute ou manual da Receita Federal publica o dígito verificador, que segue as referências da comunidade abaixo e confere com a base aberta do CNO e com o exemplo 000000336854 do SERPRO.
import { isValidCei } from '@brazilian-utils/brazilian-utils';

isValidCei('11.583.00249/85'); // true
isValidCei('277297118187'); // true
isValidCei(249859674386); // true
isValidCei(-249859674386); // false (não é um inteiro seguro não negativo)
isValidCei('24.985.96743/68'); // false (dígito verificador inválido)
isValidCei('000000000000'); // false (dígitos repetidos)

Fonte: SERPRO, cadastro CNO (12 posições), MOS do eSocial S-1.3, item 9.1 (o CNO mantém o número do CEI); dígito verificador conforme o yii2-br-validator, Bigai.Documentos.Brasil e a base de dados aberta do CNO.

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

Formatar

Formata um CEI com a máscara usual 00.000.00000/00.

As implementações de referência do dígito verificador concordam com essa máscara (a Receita Federal não a imprime).

  • A máscara é aplicada até onde os dígitos vão, então um valor em digitação é mascarado progressivamente, e os dígitos além do 12º são descartados. options.pad primeiro completa com zeros à esquerda até 12 dígitos.
  • 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).
  • options.pad num valor sem dígitos ("", "---", null) continua retornando uma string vazia. Até a 2.4.0 "" e "---" retornavam a máscara inteira de zeros.
ParâmetroTipoObrigatório
valuestring | numbersim
optionsFormatCeiOptionsnão
options.padbooleannão
retornastring

Formata um número de CEI (Cadastro Específico do INSS) na máscara usual 00.000.00000/00.

  • Opções (FormatCeiOptions): pad completa o valor com zeros à esquerda até 12 dígitos (padrão false). Um valor vazio, ou sem dígitos, devolve '' mesmo com pad.
import { formatCei } from '@brazilian-utils/brazilian-utils';

formatCei('277297118187'); // 27.729.71181/87
formatCei(249859674386); // 24.985.96743/86
formatCei('249', { pad: true }); // 00.000.00002/49
Código: brazilian-utils/javascript
Teste com JavaScript formatCei
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 (20) e o resultado em cada biblioteca cei.format

Interpretar

Remove a formatação do CEI e mantém somente os dígitos, limitados a 12 dígitos.

  • 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 CEI (Cadastro Específico do INSS), mantém apenas os dígitos e limita o resultado a 12 dígitos.

import { parseCei } from '@brazilian-utils/brazilian-utils';

parseCei('27.729.71181/87'); // '277297118187'
Código: brazilian-utils/javascript
Teste com JavaScript parseCei
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 (9) e o resultado em cada biblioteca cei.parse

Fontes oficiais

Veja também CNO, CAEPF

Atualizado em

Nesta página