Skip to content

Repository files navigation

go-cnpj

Biblioteca Go para validar, normalizar, formatar e gerar CNPJ numerico e alfanumerico.

Recursos

  • Validacao de CNPJ com digitos verificadores
  • Suporte a entrada numerica e alfanumerica
  • Normalizacao automatica (remove pontuacao e aplica uppercase)
  • Geracao de CNPJ valido
  • Formatacao no padrao 00.000.000/0000-00

Instalacao

go get github.com/thiagozs/go-cnpj

Uso rapido

package main

import (
	"fmt"

	"github.com/thiagozs/go-cnpj"
)

func main() {
	fmt.Println(cnpj.Validate("11444777000161"))
	fmt.Println(cnpj.GenerateFormatted())
}

Exemplo completo

Existe um exemplo executavel em examples/main.go.

go run ./examples

Referencia da API

Validate(c string) bool

Valida um CNPJ numerico ou alfanumerico.

  • Aceita entrada com ou sem pontuacao
  • Os dois ultimos caracteres devem ser digitos (DV)
  • Retorna true para CNPJ valido

Exemplo:

ok := cnpj.Validate("11.444.777/0001-61")
fmt.Println(ok) // true

Generate() string

Gera um CNPJ valido sem pontuacao (14 caracteres).

Exemplo:

raw := cnpj.Generate()
fmt.Println(raw) // ex: F6JQC0Z7R6J260

GenerateFormatted() string

Gera um CNPJ valido ja formatado.

Exemplo:

formatted := cnpj.GenerateFormatted()
fmt.Println(formatted) // ex: F6.JQC.0Z7/R6J2-60

Format(v string) (string, error)

Formata um CNPJ para o padrao visual 00.000.000/0000-00.

  • Retorna erro quando o valor normalizado nao possui 14 caracteres
  • Erro exposto: ErrInvalidLength

Exemplo:

v, err := cnpj.Format("11444777000161")
if err != nil {
	panic(err)
}
fmt.Println(v) // 11.444.777/0001-61

Normalize(v string) string

Remove caracteres que nao sejam letra ou digito e converte letras para maiusculo.

Exemplo:

v := cnpj.Normalize("f6.jqc.0z7/r6j2-60")
fmt.Println(v) // F6JQC0Z7R6J260

Alphabet

Constante exportada com os caracteres aceitos na geracao da base:

const Alphabet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"

Tratamento de erros

_, err := cnpj.Format("123")
if errors.Is(err, cnpj.ErrInvalidLength) {
	fmt.Println("tamanho invalido")
}

Compatibilidade

  • Go Modules
  • Linux, macOS e Windows

Licença

Este projeto é distribuído sob a Licença MIT. Veja o arquivo LICENSE para detalhes.

Autor

2026, Thiago Zilli Sarmento ❤️

About

Go library to validate, normalize, format, and generate numeric and alphanumeric CNPJs.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages