METODOLOGIA · BRASIL
Algoritmo do Dígito Verificador do CNPJ
O CNPJ brasileiro, identificador fiscal de pessoas jurídicas, usa Mod-11 em dois passes com pesos diferentes do CPF. Esta página explica os dois passes, inclui um exemplo numérico completo, e detalha 14 casos de borda de produção — incluindo o CNPJ alfanumérico que a Receita Federal está implementando em 2026.
O algoritmo
O CNPJ (Cadastro Nacional da Pessoa Jurídica) é o número de identificação fiscal brasileiro para pessoas jurídicas, emitido pela Receita Federal. Tem 14 dígitos no formato XX.XXX.XXX/XXXX-VV. Os dois últimos dígitos são verificadores calculados via Mod-11 em dois passes, com pesos diferentes dos do CPF.
Passe 1: pesos [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2] para os 12 primeiros dígitos. Resto = soma mod 11. Se resto < 2, dígito = 0; caso contrário, 11 − resto.
Passe 2: pesos [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2] para os 12 primeiros dígitos mais o primeiro dígito verificador. Mesma regra.
Exemplo numérico passo a passo
Calculamos os dígitos verificadores para o CNPJ base 11.222.333/0001-??.
Pseudocódigo
digits = strip_non_numeric(input) // 14 chars if all_same_digit(digits) → INVALID W1 = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2] W2 = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2] d1 = compute_check(digits[0..11], W1) d2 = compute_check(digits[0..12], W2) return d1 == digits[12] AND d2 == digits[13] // compute_check(d, w): sum = Σ d[i]×w[i]; rem = sum mod 11; return rem < 2 ? 0 : 11−rem
Casos de borda que uma implementação simples não trata
- CNPJs de dígitos todos iguais: passam o algoritmo matematicamente mas são rejeitados explicitamente pela Receita Federal. Diferente do CPF, existem 14 posições — a chance de passar inadvertidamente é menor, mas o caso ainda ocorre em dados sintéticos de teste.
- Dígitos de filial (posições 9–12): 0001 = matriz, 0002+ = filial. Validar apenas o CNPJ raiz (8 primeiros dígitos) sem considerar o número de filial é um erro comum em cadastros B2B que só verificam o CNPJ da empresa-mãe.
- CNPJ alfanumérico (Receita Federal 2026+): a Receita está migrando para um CNPJ que pode conter letras nas posições 1–12. Todo algoritmo legado baseado em isdigit() falhará. A nova especificação usa um Mod-97 adaptado para alfanuméricos.
- Pesos diferentes do CPF: erro frequente de copiar a implementação do CPF e esquecer de trocar os pesos. W1 do CNPJ é [5,4,3,2,9,8,7,6,5,4,3,2], não [10,9,8,7,6,5,4,3,2].
- CNPJ de instituições financeiras: bancos e financeiras têm CNPJs com padrões específicos regulados pelo Banco Central. Passam a validação de formato mas podem ter restrições adicionais de negócio.
- Formatos de entrada: 11.222.333/0001-81, 11222333000181, 11 222 333 0001 81 — normalizar todos os não-dígitos antes de validar. Barras, pontos, hífens e espaços são comuns.
- CNPJ cancelado ou inapto: um CNPJ pode ser válido em formato mas estar suspenso ou cancelado na Receita. Validação de formato não detecta esse estado.
- Resto < 2 → dígito = 0: mesma regra especial do CPF. Implementações que aplicam 11 − resto sem essa verificação rejeitam CNPJs válidos.
- CNPJ de entidades do governo: órgãos públicos têm CNPJs com prefixos específicos. Alguns sistemas de B2G precisam detectar e tratar esses casos separadamente.
- CNPJ em XML de NF-e: o campo CNPJ em NF-e deve ter exatamente 14 dígitos sem formatação. Enviar com máscara (pontos, barra, hífen) resulta em rejeição pela SEFAZ.
- Batch com múltiplos formatos misturados: lotes de dados reais contêm CNPJs com e sem máscara misturados. Normalizar antes de validar é obrigatório e o custo de normalização em batch pode surpreender.
- CNPJ de microempreendedor individual (MEI): MEIs têm CNPJ com sufixo /0001-XX como qualquer empresa. A distinção entre MEI e empresa regular não está no CNPJ — está no regime tributário cadastrado.
- Caracteres invisíveis e encoding: CNPJs extraídos de PDFs de contratos ou e-mails frequentemente contêm espaços non-breaking (U+00A0) que passam por um strip simples de espaços mas quebram a contagem de dígitos.
- Validação cruzada CNPJ + razão social: um CNPJ válido não garante que corresponda à razão social fornecida. Apenas uma consulta à API da Receita Federal faz esse cruzamento.
Quer pular tudo isso?
Tratar todos esses casos de borda em produção exige semanas de testes e manutenção contínua conforme as regras regulatórias mudam. A API da Normadata trata tudo isso — incluindo casos que nem listamos aqui — com uma única chamada REST.
Fontes
Receita Federal do Brasil — especificação pública do algoritmo de validação do CNPJ.