Dashboard / CNPJ

CNPJ

Ferramenta gratuita para validar e gerar números de CNPJ (Cadastro Nacional da Pessoa Jurídica). Valide a estrutura matemática do documento instantaneamente.

Como funciona?

O CNPJ é composto por 14 algarismos, divididos em três blocos: a inscrição (8 dígitos), a indicação de matriz ou filial (4 dígitos) e os dígitos verificadores (2 dígitos). Algoritmo de Validação (Módulo 11): O cálculo dos dígitos verificadores utiliza pesos específicos. Para o primeiro dígito, os pesos são 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2. Para o segundo, os pesos são 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2.

  1. Multiplica-se cada dígito pelo seu peso correspondente.
  2. Soma-se os resultados e divide-se por 11.
  3. O resto da divisão define o dígito: se for menor que 2, o dígito é 0. Caso contrário, subtrai-se o resto de 11.

Implementação

def validar_cnpj(cnpj: str) -> bool:
    cnpj = "".join(filter(str.isdigit, cnpj))
    if len(cnpj) != 14 or len(set(cnpj)) == 1:
        return False

    def calcular_digito(fatia, pesos):
        soma = sum(int(a) * b for a, b in zip(fatia, pesos))
        resto = soma % 11
        return "0" if resto < 2 else str(11 - resto)

    pesos1 = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]
    pesos2 = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]

    digito1 = calcular_digito(cnpj[:12], pesos1)
    digito2 = calcular_digito(cnpj[:13], pesos2)

    return cnpj[-2:] == digito1 + digito2