Biblioteca multiplataforma para validação de CNPJ numérico e alfanumérico conforme Instrução Normativa RFB nº 2229, de 15 de outubro de 2024.
Este projeto oferece implementações da função de validação de CNPJ (Cadastro Nacional da Pessoa Jurídica) em múltiplas linguagens de programação. A validação suporta tanto CNPJs numéricos tradicionais quanto os novos CNPJs alfanuméricos, conforme as regras estabelecidas pela Receita Federal do Brasil.
A partir de 2024, a Receita Federal do Brasil passou a permitir CNPJs alfanuméricos para ampliar a capacidade de cadastros. As implementações neste repositório seguem as especificações técnicas oficiais para validação desses novos formatos.
- Python (
validar_cnpj.py) - JavaScript (
validar_cnpj.js) - PHP (
validar_cnpj.php) - Perl (
validar_cnpj.pl) - C# (
ValidarCNPJ.cs)
from validar_cnpj import validar_cnpj
# Validar CNPJ numérico
if validar_cnpj("11.222.333/0001-81"):
print("CNPJ válido")
# Validar CNPJ alfanumérico
if validar_cnpj("A1B2C3D4000195"):
print("CNPJ alfanumérico válido")// Validar CNPJ numérico
if (validar_cnpj("11.222.333/0001-81")) {
console.log("CNPJ válido");
}
// Validar CNPJ alfanumérico
if (validar_cnpj("A1B2C3D4000195")) {
console.log("CNPJ alfanumérico válido");
}<?php
require_once 'validar_cnpj.php';
// Validar CNPJ numérico
if (validar_cnpj("11.222.333/0001-81")) {
echo "CNPJ válido";
}
// Validar CNPJ alfanumérico
if (validar_cnpj("A1B2C3D4000195")) {
echo "CNPJ alfanumérico válido";
}
?>use validar_cnpj;
# Validar CNPJ numérico
if (validar_cnpj("11.222.333/0001-81")) {
print "CNPJ válido\n";
}
# Validar CNPJ alfanumérico
if (validar_cnpj("A1B2C3D4000195")) {
print "CNPJ alfanumérico válido\n";
}using System;
class Program
{
static void Main()
{
// Validar CNPJ numérico
if (CNPJValidator.ValidarCNPJ("11.222.333/0001-81"))
{
Console.WriteLine("CNPJ válido");
}
// Validar CNPJ alfanumérico
if (CNPJValidator.ValidarCNPJ("A1B2C3D4000195"))
{
Console.WriteLine("CNPJ alfanumérico válido");
}
}
}- Formato:
XX.XXX.XXX/XXXX-XX - Exemplo:
11.222.333/0001-81 - Total: 14 dígitos numéricos
- Formato:
XX.XXX.XXX/XXXX-XXonde os primeiros 12 caracteres podem ser letras (A-Z) ou números (0-9) - Os últimos 2 caracteres devem ser numéricos
- Exemplo:
A1.B2C.3D4/ABCD-95 - Total: 12 caracteres alfanuméricos + 2 dígitos numéricos
A validação do CNPJ segue o algoritmo de validação de dígitos verificadores definido pela Receita Federal:
- Limpeza: Remove todos os caracteres que não sejam números (0-9) ou letras maiúsculas (A-Z)
- Validação de Formato: Verifica se possui 12 caracteres alfanuméricos seguidos de 2 números
- Cálculo dos Dígitos Verificadores:
- Para caracteres alfanuméricos, utiliza o código ASCII:
- Números 0-9 mantêm seus valores (0-9)
- Letras A-Z são convertidas: A=17, B=18, C=19, ... Z=42
- Aplica o algoritmo de módulo 11 com multiplicadores de 2 a 9
- Calcula dois dígitos verificadores (12ª e 13ª posições)
- Para caracteres alfanuméricos, utiliza o código ASCII:
- Validação: Compara os dígitos calculados com os fornecidos
- Base Legal: Instrução Normativa RFB nº 2229, de 15 de outubro de 2024
- Algoritmo: Módulo 11 com pesos de 2 a 9
- Conversão ASCII: Caracteres numéricos e alfabéticos maiúsculos
- Dígitos Verificadores: Últimos 2 dígitos do CNPJ
Você pode testar as funções com os seguintes exemplos:
11222333000181(numérico)11.222.333/0001-81(formatado)A1B2C3D4000195(alfanumérico)A1.B2C.3D4/0001-95(alfanumérico formatado)
11222333000180(dígito verificador incorreto)12345678901234(sequência inválida)ABC1234500019X(caractere inválido na posição numérica)
Este projeto está licenciado sob a BSD 3-Clause License. Veja o arquivo LICENSE para mais detalhes.
- ✅ Uso comercial permitido
- ✅ Modificação permitida
- ✅ Distribuição permitida
- ✅ Uso privado permitido
⚠️ Sem garantias⚠️ Deve manter o aviso de copyright
Eng. Renato Monteiro Batista
- GitHub: @renatomb
- URL do Projeto: https://github.com/renatomb/validar_cnpj
Contribuições são bem-vindas! Sinta-se à vontade para:
- Fazer fork do projeto
- Criar uma branch para sua feature (
git checkout -b feature/NovaFuncionalidade) - Commit suas mudanças (
git commit -m 'Adiciona nova funcionalidade') - Push para a branch (
git push origin feature/NovaFuncionalidade) - Abrir um Pull Request
- Instrução Normativa RFB nº 2229, de 15 de outubro de 2024 - Especificação oficial do CNPJ alfanumérico
- Receita Federal do Brasil
Versão 1.1 - 18/06/2026
A Receita Federal implementou CNPJs alfanuméricos para expandir a capacidade de cadastros, evitando o esgotamento dos números disponíveis com o formato numérico tradicional.
Sim! Todas as implementações removem automaticamente caracteres de formatação (pontos, barras, hífens) antes da validação.
As funções validam ambos os formatos automaticamente. O algoritmo detecta e processa corretamente tanto CNPJs numéricos quanto alfanuméricos.
Não há problemas conhecidos no momento. Se encontrar algum bug, por favor abra uma issue.
Nota: Este projeto foi desenvolvido com base na documentação oficial da Receita Federal do Brasil e segue rigorosamente as especificações técnicas publicadas. Data de lançamento: 11/07/2024