O conceito de validação de CNPJ existe desde a criação do próprio documento. No entanto, observa-se que a validação deste documento é replicada em várias aplicações, em classes idênticas, copiadas e coladas.
Com o objetivo de simplificar esse tipo de validação (seja em casos de teste ou em cenários de verificação de cadastro), a biblioteca Simple CNPJ Validator traz essa funcionalidade de uma vez, evitando assim boilerplate e possibilidade de erros no reuso de classe.
Para utilizar é bem simples. Primeiro importe no seu Gradle:
implementation("br.com.colman.simplecnpjvalidator:simple-cnpj-validator:{version}")
E utilize a função em qualquer String de seu código:
"12.345.678/9012-34".isCnpj()
Por padrão, os caracteres ., - e / são retirados da String (permitindo o formato 12.345.678/9012-34, por exemplo), mas isso pode ser modificado através do parâmetro charactersToIgnore:
"12.345.678/9012-34".isCnpj(charactersToIgnore = listOf('.', '/'))
Desde julho de 2026 o CNPJ é alfanumérico: os doze primeiros caracteres podem ser dígitos (0-9) ou letras maiúsculas (A-Z), e os dois últimos continuam sendo dígitos verificadores numéricos.
"12.ABC.345/01DE-35".isCnpj()
No cálculo dos dígitos verificadores cada caractere vale seu código ASCII menos 48, ou seja, 0 a 9 valem de 0 a 9 e A a Z valem de 17 a 42. Os pesos e o módulo 11 continuam os mesmos, então todo CNPJ puramente numérico continua válido — a mudança é retrocompatível.
Letras minúsculas são rejeitadas, já que a especificação define apenas letras maiúsculas. A função Long.isCnpj() segue funcionando somente para CNPJs numéricos, pois um CNPJ alfanumérico não é representável como número.
Referência: Cálculo dos dígitos verificadores de CNPJ alfanumérico (Serpro)
Sinta-se livre para abrir um pull request ou uma issue para contribuir com este projeto.