Validando e Gerando CPFs e CNPJs com Go: Apresentando o pacote cpfcnpj

No Brasil, CPF (Cadastro de Pessoa Física) e CNPJ (Cadastro Nacional da Pessoa Jurídica) são identificadores essenciais para pessoas e empresas. Em sistemas que lidam com cadastros de clientes, emissão de notas fiscais e integração com APIs governamentais, validar corretamente esses documentos é fundamental para evitar fraudes e garantir a qualidade dos dados.

Para facilitar esse processo em aplicações escritas em Go, apresento o cpfcnpj, um pacote leve e eficiente que permite:

  • Validar CPFs e CNPJs (numéricos e alfanuméricos).
  • Gerar CPFs e CNPJs válidos, com ou sem formatação.
  • Suportar o novo formato alfanumérico de CNPJ, que entrará em vigor em julho de 2026.

Instalação

Para instalar a versão mais recente, basta rodar:

go get github.com/jfelipearaujo/cpfcnpj@latest

Validação de CPF

Importe o pacote:

import "github.com/jfelipearaujo/cpfcnpj/cpf"

Crie uma instância do serviço:

svc := cpf.New()

Valide o CPF:

if err := svc.IsValid("123.456.789-09"); err != nil {
    fmt.Println("CPF inválido:", err)
} else {
    fmt.Println("CPF válido!")
}

O método IsValid retorna um erro quando o CPF não segue as regras de formação ou tem dígitos verificadores incorretos.

Validação de CNPJ

Importe o pacote:

import "github.com/jfelipearaujo/cpfcnpj/cnpj"

Crie uma instância do serviço:

svc := cnpj.New()

Valide um CNPJ (suporta alfanuméricos):

// Exemplo de CNPJ alfanumérico (válido a partir de julho/2026)
exemplo := "12.ABC.345/01DE-35"

if err := svc.IsValid(exemplo); err != nil {
    fmt.Println("CNPJ inválido:", err)
} else {
    fmt.Println("CNPJ válido!")
}

Geração de CPF

Para gerar CPFs válidos, use o método Generate:

svc := cpf.New()

// Gera um CPF numérico puro
novoCPF := svc.Generate()
fmt.Println("CPF gerado:", novoCPF)

// Gera um CPF com máscara (formato pretty)
novoCPFFormatado := svc.Generate(cpf.WithPrettyFormat())
fmt.Println("CPF formatado:", novoCPFFormatado)

Geração de CNPJ

A geração de CNPJs funciona de forma similar:

svc := cnpj.New()

// Gera um CNPJ numérico (versão V1, padrão)
novoCNPJ := svc.Generate()
fmt.Println("CNPJ gerado:", novoCNPJ)

// Gera um CNPJ com máscara
novoCNPJFormatado := svc.Generate(cnpj.WithPrettyFormat())
fmt.Println("CNPJ formatado:", novoCNPJFormatado)

Escolhendo a versão do CNPJ

Por padrão, o pacote gera CNPJs na Versão 1 (somente dígitos). Para experimentar a Versão 2 (alfanumérica), basta fazer o seguinte:

novoCNPJv2 := svc.Generate(cnpj.WithVersion(cnpj.V2))
fmt.Println("CNPJ alfanumérico (V2):", novoCNPJv2)

Este comportamento garante que sua aplicação já esteja preparada para o novo padrão que entrará em vigor em julho de 2026.

Conclusão

O cpfcnpj é uma solução robusta e flexível para lidar com validação e geração de CPFs e CNPJs em Go. Com suporte tanto ao formato numérico tradicional quanto ao futuro padrão alfanumérico, você garante que sua aplicação esteja pronta para exigências atuais e futuras, evitando retrabalho. A capacidade de gerar dados válidos automatizados facilita testes, demos e populações de ambiente de desenvolvimento com dados realistas. Experimente as funções de validação e geração apresentadas neste post e integre o pacote ao seu projeto para elevar a qualidade do tratamento de documentos fiscais. Contribua para o projeto, reporte issues e ajude a tornar o cpfcnpj ainda mais completo!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *