Brasilapi.Utils.Cnpj (BrasilAPI v0.1.5)

View Source

Utilities for CNPJ (Cadastro Nacional da Pessoa Jurídica) handling.

This module provides functions to validate, sanitize, and format CNPJ numbers for use across the BrasilAPI client library.

CNPJ is the Brazilian national registry of legal entities, consisting of 14 digits.

Validation Approach

This module provides lightweight validation:

  • Only validates 14-digit length and numeric characters
  • Does NOT perform checksum validation
  • Accepts integers, formatted strings (11.000.000/0001-97), and plain strings
  • Automatically converts all inputs to clean 14-digit strings

For complete CNPJ validation with checksum verification, use a dedicated library such as brcpfcnpj before calling BrasilAPI functions.

Summary

Functions

Formats a CNPJ string with standard Brazilian formatting.

Removes all formatting from a CNPJ string, keeping only digits.

Sanitizes and validates a CNPJ number.

Validates if a CNPJ string contains only digits and has correct length.

Functions

format(cnpj)

@spec format(String.t()) :: String.t()

Formats a CNPJ string with standard Brazilian formatting.

Takes a 14-digit CNPJ string and applies the standard format: XX.XXX.XXX/XXXX-XX

Parameters

  • cnpj - 14-digit CNPJ string

Examples

iex> Brasilapi.Utils.Cnpj.format("11000000000197")
"11.000.000/0001-97"

iex> Brasilapi.Utils.Cnpj.format("00000000000191")
"00.000.000/0001-91"

remove_formatting(cnpj)

@spec remove_formatting(String.t()) :: String.t()

Removes all formatting from a CNPJ string, keeping only digits.

Parameters

  • cnpj - Formatted or unformatted CNPJ string

Examples

iex> Brasilapi.Utils.Cnpj.remove_formatting("11.000.000/0001-97")
"11000000000197"

iex> Brasilapi.Utils.Cnpj.remove_formatting("11000000000197")
"11000000000197"

sanitize_and_validate(cnpj)

@spec sanitize_and_validate(String.t() | integer()) ::
  {:ok, String.t()} | {:error, map()}

Sanitizes and validates a CNPJ number.

Accepts CNPJ as string (formatted or unformatted) or integer. Returns a sanitized 14-digit string if valid, or an error if invalid.

Parameters

  • cnpj - CNPJ as string or integer

Examples

iex> Brasilapi.Utils.Cnpj.sanitize_and_validate("11.000.000/0001-97")
{:ok, "11000000000197"}

iex> Brasilapi.Utils.Cnpj.sanitize_and_validate("11000000000197")
{:ok, "11000000000197"}

iex> Brasilapi.Utils.Cnpj.sanitize_and_validate(11000000000197)
{:ok, "11000000000197"}

iex> Brasilapi.Utils.Cnpj.sanitize_and_validate(197)
{:ok, "00000000000197"}

iex> Brasilapi.Utils.Cnpj.sanitize_and_validate("123")
{:error, %{message: "Invalid CNPJ format. Must be 14 digits."}}

iex> Brasilapi.Utils.Cnpj.sanitize_and_validate("1234567890123A")
{:error, %{message: "Invalid CNPJ format. Must be 14 digits."}}

valid_format?(cnpj)

@spec valid_format?(String.t()) :: boolean()

Validates if a CNPJ string contains only digits and has correct length.

This is a simpler validation that only checks format without sanitization.

Parameters

  • cnpj - CNPJ string to validate

Examples

iex> Brasilapi.Utils.Cnpj.valid_format?("11000000000197")
true

iex> Brasilapi.Utils.Cnpj.valid_format?("123")
false

iex> Brasilapi.Utils.Cnpj.valid_format?("1234567890123A")
false