Biblioteca de utilitários para regras de negócio específicas do Brasil.
# dotnet CLI
dotnet add package BrazilianUtils
# Package Manager
PM> Install-Package BrazilianUtils- CPF
- CNPJ
- CAEPF
- Natureza Jurídica
- CEP
- Município
- Estado
- DDD
- Boleto
- Cartão de Crédito
- Banco
- Conta Bancária
- IBAN
- Chave Pix
- BR Code (Pix Copia e Cola)
- Telefone
- CNH
- Chassi (VIN)
- PIS
- RENAVAM
- CNO
- CEI
- Título de Eleitor
- Processo Jurídico
- Chave de Acesso da NF-e
- Certidão de Registro Civil
- Passaporte
- Registro Profissional
- CNS
- Placa de Veículo
- CBO
- CNAE
- NCM
- CFOP
- CST
- CSOSN
- Moeda
- Números por Extenso
- Data
- Utilitários
- Texto
O CPF (Cadastro de Pessoas Físicas) é o registro de identificação do contribuinte individual brasileiro.
using BrazilianUtils;
Cpf.IsValid("529.455.577-89"); // true
Cpf.IsValid("52945557789"); // true
Cpf.IsValid("cpf-invalido"); // false
Cpf.IsValid("111.111.111-11"); // false (dígitos repetidos)
Cpf.IsValid(""); // false
Cpf.IsValid(null); // falseCpf.Format("52945557789"); // "529.455.577-89"Cpf.RemoveSymbols("831.595.621-31"); // "83159562131"
Cpf.Parse("943.895.751-04"); // "94389575104"Cpf.Generate(); // "38041016588"O CNPJ (Cadastro Nacional da Pessoa Jurídica) é o número de identificação de entidades jurídicas no Brasil.
using BrazilianUtils;
Cnpj.IsValid("11.886.541/0001-85"); // true
Cnpj.IsValid("11886541000185"); // true
// CNPJ Alfanumérico (Instrução Normativa RFB nº 2.119)
Cnpj.IsValid("AA.BBB.CCC/DDDD-01"); // true (se os dígitos verificadores forem válidos)
Cnpj.IsValid("cnpj-invalido"); // false
Cnpj.IsValid(""); // false
Cnpj.IsValid(null); // falseCnpj.Format("11886541000185"); // "11.886.541/0001-85"Cnpj.RemoveSymbols("10.799.163/9892-71"); // "10799163989271"
Cnpj.Parse("46.843.485/0001-86"); // "46843485000186"// Gerar CNPJ numérico
Cnpj.Generate(); // "13401551551768"
// Gerar CNPJ alfanumérico
Cnpj.GenerateAlphanumeric(); // "AB12CD34EF5601"O CAEPF (Cadastro de Atividade Econômica da Pessoa Física) identifica a atividade econômica de uma pessoa física perante a Receita Federal.
using BrazilianUtils;
Caepf.IsValid("29311861000184"); // true
Caepf.IsValid("caepf-invalido"); // falseCaepf.Format("29311861000184"); // "293.118.610/001-84"A Natureza Jurídica identifica o tipo de constituição de uma entidade perante a tabela CONCLA (Comissão Nacional de Classificação) do IBGE.
using BrazilianUtils;
LegalNature.IsValid("2062"); // true
LegalNature.IsValid("9999"); // falseLegalNature.Format("2062"); // "206-2"LegalNature.GetDescription("2062"); // Some "Sociedade Empresária Limitada"O CEP (Código de Endereçamento Postal) é o código postal brasileiro.
using BrazilianUtils;
Cep.IsValid("92990-000"); // true
Cep.IsValid("92990000"); // true
Cep.IsValid("12345"); // false (tamanho incorreto)
Cep.IsValid("invalido"); // falseCep.Format("92990000"); // "92990-000"Cep.RemoveSymbols("91906-292"); // "91906292"
Cep.Parse("01001-000"); // "01001000"Cep.Generate(); // "06156069"Consulta municípios brasileiros publicados pelo IBGE pelo código de 7 dígitos, ou lista todos os municípios de um estado.
using BrazilianUtils;
Municipality.GetByCode("5200050"); // Some { Code = "5200050"; Name = "Abadia de Goiás"; StateCode = "GO" }
Municipality.List(Some "GO"); // todos os municípios de Goiás, ordenados por nomeAs 27 unidades federativas brasileiras, com região, código IBGE (cUF) e fuso horário.
using BrazilianUtils;
State.GetNameByCode("SP"); // Some "São Paulo"
State.GetCodeByName("São Paulo"); // Some "SP"
State.GetTimezone("SP"); // Some "America/Sao_Paulo"Consulta o estado e a região correspondentes a um DDD (código de área telefônico) brasileiro.
using BrazilianUtils;
AreaCode.GetInfo(11).Value.StateName; // "São Paulo"
AreaCode.ListByState("SP"); // [11; 12; 13; 14; 15; 16; 17; 18; 19]Valida boletos bancários brasileiros nos formatos de código de barras (44 dígitos) e linha digitável (47 dígitos).
using BrazilianUtils;
// Linha digitável (47 dígitos)
Boleto.IsValid("00198.10001 00030.212237 00217.236553 1 35742800321323"); // true
// Código de barras (44 dígitos)
Boleto.IsValid("00193357428003213230001000302122700021723655"); // true
Boleto.IsValid("boleto-invalido"); // falseBoleto.Format("03694928065284362782017695692230200005860034350");
// "03694.92806 52843.627820 17695.692230 2 00005860034350"Boleto.Generate(); // "03694928065284362782017695692230200005860034350"Valida um número de cartão de pagamento (crédito ou débito) pelo algoritmo de Luhn: 12 a 19 dígitos e dígito verificador correto.
using BrazilianUtils;
CreditCard.IsValid("4111 1111 1111 1111"); // true
CreditCard.IsValid("1234567890123456"); // false
CreditCard.IsValid("1111111111111111"); // false (dígitos repetidos)Consulta os bancos participantes do STR (Sistema de Transferência de Reservas) publicados pelo Banco Central, pelo código COMPE ou pelo ISPB.
using BrazilianUtils;
Bank.GetByCode("341"); // Some { Code = "341"; Ispb = "60701190"; Name = "ITAÚ UNIBANCO S.A." }
Bank.GetByIspb("60701190"); // Some { Code = "341"; Ispb = "60701190"; Name = "ITAÚ UNIBANCO S.A." }Valida uma conta bancária brasileira (banco, agência, conta e dígito verificador), reconhecendo os algoritmos específicos publicados para alguns bancos.
using BrazilianUtils;
// Fallback genérico (módulo 10 ou módulo 11)
BankAccount.IsValid({ BankCode = "341"; Agency = "1234"; Account = "12345"; Digit = "5" }); // true
// Nubank: dígito verificador pelo algoritmo de Verhoeff
BankAccount.IsValid({ BankCode = "260"; Agency = "0001"; Account = "1234567"; Digit = "9" }); // trueValida e formata um IBAN brasileiro: BR + dígitos verificadores (ISO 7064 MOD 97-10) + ISPB + agência + conta + tipo de conta + titular.
using BrazilianUtils;
Iban.IsValid("BR46 0000 0000 0000 1000 1234 567C 1"); // trueIban.Format("BR4600000000000010001234567C1");
// "BR46 0000 0000 0000 1000 1234 567C 1"Iban.GetInfo("BR4600000000000010001234567C1").Value.BankIspb; // "00000000"Identifica e valida uma chave Pix (CPF, CNPJ, e-mail, celular brasileiro ou chave aleatória EVP), conforme os formatos do DICT.
using BrazilianUtils;
PixKey.IsValid("11988887777", None); // true (celular)
PixKey.GetInfo("usuario@exemplo.com");
// Some { Type = "email"; Value = "usuario@exemplo.com" }Valida um payload de BR Code do Pix ("copia e cola"): estrutura TLV, CRC-16 e os campos obrigatórios do recebedor.
using BrazilianUtils;
var payload = "00020101021126380014br.gov.bcb.pix0116user@example.com5204000053039865802BR5910LOJA TESTE6009SAO PAULO6304C50B";
PixPayload.IsValid(payload); // true
PixPayload.GetInfo(payload).Value.MerchantName; // "LOJA TESTE"Valida números de telefone brasileiros, incluindo formatos de celular e telefone fixo.
using BrazilianUtils;
// Celular (11 dígitos com o nono dígito)
Phone.IsValid("(51) 99922-3344"); // true
Phone.IsValid("51999223344"); // true
// Telefone fixo (10 dígitos)
Phone.IsValid("(11) 3344-5566"); // true
Phone.IsValid("1133445566"); // true
Phone.IsValid("(11) 9000-0000"); // false (primeiro dígito inválido)
Phone.IsValid("1234567"); // false (tamanho incorreto)
// Validação específica por tipo
Phone.IsValidMobile("(51) 99922-3344"); // true
Phone.IsValidLandline("(11) 3344-5566"); // truePhone.RemoveSymbols("(11) 3000-0000"); // "1130000000"
Phone.Parse("+55 11 98888-7777"); // "11988887777"Phone.Format("988887777"); // "98888-7777"
Phone.Format("1130000000"); // "11300-0000"Phone.Generate(Some "mobile"); // "77955978581"
Phone.Generate(Some "landline"); // "8837470481"Valida um endereço de e-mail (subconjunto prático do padrão "valid e-mail address" do WHATWG HTML).
using BrazilianUtils;
Email.IsValid("usuario@exemplo.com"); // true
Email.IsValid("usuario@dominio"); // false (sem domínio de topo)
Email.IsValid(""); // falseA CNH (Carteira Nacional de Habilitação) é a carteira de motorista brasileira. Valida o formato de 2022 em diante.
using BrazilianUtils;
Cnh.isValidCnh("98765432100"); // true
Cnh.isValidCnh("987654321-00"); // true (símbolos são ignorados)
Cnh.isValidCnh("12345678901"); // false (dígitos verificadores inválidos)
Cnh.isValidCnh("00000000000"); // false (dígitos repetidos)
Cnh.isValidCnh("A2C45678901"); // false (não numérico)Cnh.Format("98765432100"); // "987654321-00"Cnh.Parse("987654321-00"); // "98765432100"Cnh.Generate(); // "04253983910"Valida estruturalmente um VIN (Vehicle Identification Number / chassi): 17 caracteres, nenhuma das letras excluídas I, O, Q, e o dígito verificador na posição 9 (regra norte-americana).
using BrazilianUtils;
Vin.IsValid("1HGCM82633A004352"); // true
Vin.IsValid("IO1CM82633A004352"); // false (letras I/O/Q não são permitidas)
Vin.IsValid("11111111111111111"); // false (caracteres repetidos)O PIS (Programa de Integração Social) é o número de identificação do programa de integração social brasileiro.
using BrazilianUtils;
Pis.isValid("82178537464"); // true
Pis.isValid("55550207753"); // true
Pis.isValid("12345678901"); // false (dígito verificador inválido)
Pis.isValid("1234567"); // false (tamanho incorreto)Pis.formatPis("12345678909"); // Some "123.45678.90-9"Pis.parse("123.45678.90-1"); // "12345678901"Pis.generate(); // "82178537464"O RENAVAM (Registro Nacional de Veículos Automotores) é o número de registro de veículos no Brasil.
using BrazilianUtils;
Renavam.isValidRenavam("86769597308"); // true
Renavam.isValidRenavam("12345678901"); // false (dígito verificador inválido)
Renavam.isValidRenavam("11111111111"); // false (dígitos repetidos)
Renavam.isValidRenavam("1234567"); // false (tamanho incorreto)Renavam.Generate(); // "61747177505"O CNO (Cadastro Nacional de Obras) substituiu o CEI para obras de construção civil e mantém a mesma numeração e regra de dígito verificador.
using BrazilianUtils;
Cno.IsValid("110840168062"); // trueCno.Format("111130137368"); // "11.113.01373/68"O CEI (Cadastro Específico do INSS) identifica um contribuinte perante a Previdência Social.
using BrazilianUtils;
Cei.IsValid("277297118187"); // trueCei.Format("277297118187"); // "27.729.71181/87"O Título de Eleitor é o documento de registro eleitoral brasileiro.
using BrazilianUtils;
VoterId.isValid("690847092828"); // true
VoterId.isValid("163204010922"); // true
VoterId.isValid("123456789012"); // false (dígitos verificadores inválidos)
VoterId.isValid("12345"); // false (tamanho incorreto)VoterId.formatVoterId("690847092828"); // Some "6908 4709 28 28"VoterId.Parse("690.8470.92.828"); // "690847092828"
VoterId.RemoveSymbols("6908 4709 28 28"); // "690847092828"VoterId.generate("SP"); // Some "123456780101" (São Paulo)
VoterId.generate("RJ"); // Some "987654320352" (Rio de Janeiro)
VoterId.generate("ZZ"); // Some "112233440028" (Estrangeiros)Valida números de processos jurídicos brasileiros seguindo o padrão de numeração única do CNJ (Conselho Nacional de Justiça).
Formato: NNNNNNN-DD.AAAA.J.TR.OOOO
NNNNNNN: Número sequencial de 7 dígitosDD: Dígitos verificadores de 2 dígitos (Módulo 97 Base 10, ISO 7064:2003)AAAA: Ano com 4 dígitosJ: Segmento de justiça de 1 dígito (1-9)TR: Tribunal de 2 dígitosOOOO: Unidade de origem de 4 dígitos
using BrazilianUtils;
LegalProcess.isValid("6847650-61.2023.3.03.0000"); // true
LegalProcess.isValid("68476506120233030000"); // true
LegalProcess.isValid("68476506020233030000"); // false (dígito verificador incorreto)
LegalProcess.isValid("123"); // false (tamanho incorreto)LegalProcess.formatLegalProcess("68476506120233030000"); // Some "6847650-61.2023.3.03.0000"LegalProcess.parse("0002080-25.2012.5.15.0049"); // "00020802520125150049"LegalProcess.generate(Some 2024, Some 5); // Some "12345678720245050000"
LegalProcess.generate(None, None); // ID de processo jurídico válido aleatórioValida e interpreta a chave de acesso de 44 dígitos de um DF-e: NF-e (55), NFC-e (65), CT-e (57), MDF-e (58), CT-e OS (67), GTV-e (64), BP-e (63), NF3e (66) e NFCom (62).
using BrazilianUtils;
NfeKey.IsValid("35240912345678000199570010000000011111111114"); // trueNfeKey.Format("35240912345678000199570010000000011111111114");
// "3524 0912 3456 7800 0199 5700 1000 0000 0111 1111 1114"NfeKey.GetInfo("35240912345678000199570010000000011111111114").Value.StateCode; // "SP"Valida a matrícula de 32 dígitos de uma certidão de registro civil (art. 473 do Código Nacional de Normas da Corregedoria Nacional de Justiça).
using BrazilianUtils;
Certidao.IsValid("104539 01 55 2013 1 00012 021 0000123 21", None); // trueCertidao.Format("10453901552013100012021000012321");
// "104539 01 55 2013 1 00012 021 0000123 21"Valida um número de passaporte brasileiro: 2 letras seguidas de 6 dígitos. Não há dígito verificador, então um número bem formado não é necessariamente real.
using BrazilianUtils;
Passport.IsValid("FZ123456"); // true
Passport.IsValid("12345678"); // false (a forma decimal nunca é válida)Passport.Generate(); // "IH753095"Verifica apenas a estrutura de um registro/inscrição profissional (OAB, CRM, CRO, CRP ou CRC) — quantidade de dígitos e UF —, nunca um dígito verificador.
using BrazilianUtils;
RegistroProfissional.IsValid({ Value = "123456/SP"; Council = "OAB"; State = None }); // true
RegistroProfissional.IsValid({ Value = "SP-123456/O-3"; Council = "CRC"; State = None }); // trueO CNS (Cartão Nacional de Saúde) identifica um usuário do SUS.
using BrazilianUtils;
Cns.IsValid("123456789010000"); // trueCns.Format("123456789010001"); // "123 4567 8901 0001"Valida e formata placas de veículos brasileiros no formato antigo (LLLNNNN) e no formato Mercosul (LLLNLNN).
using BrazilianUtils;
// Formato antigo (LLLNNNN)
LicensePlate.isValid("ABC1234", Some "old_format"); // true
LicensePlate.isValid("ABC1234", None); // true
// Formato Mercosul (LLLNLNN)
LicensePlate.isValid("ABC1D23", Some "mercosul"); // true
LicensePlate.isValid("ABC1D23", None); // true
LicensePlate.isValid("ABCD123", None); // falseLicensePlate.formatLicensePlate("ABC1234"); // Some "ABC-1234" (formato antigo)
LicensePlate.formatLicensePlate("abc1e34"); // Some "ABC1E34" (Mercosul)LicensePlate.convertToMercosul("ABC4567"); // Some "ABC4F67"LicensePlate.getFormat("ABC1234"); // Some "LLLNNNN"
LicensePlate.getFormat("ABC1D23"); // Some "LLLNLNN"LicensePlate.generate(None); // Some "ABC1D23" (Mercosul por padrão)
LicensePlate.generate(Some "LLLNLNN"); // Some "XYZ2E45" (Mercosul)
LicensePlate.generate(Some "LLLNNNN"); // Some "ABC1234" (Formato antigo)Consulta a tabela oficial CBO 2002 (Classificação Brasileira de Ocupações) por código de 6 dígitos.
using BrazilianUtils;
Cbo.IsValid("010105"); // true
Cbo.Get("010105"); // Some { Code = "010105"; Description = "Oficial general da aeronáutica" }Consulta a tabela oficial CNAE-Subclasses 2.3 (Classificação Nacional de Atividades Econômicas) por código de 7 dígitos.
using BrazilianUtils;
Cnae.IsValid("0111301"); // true
Cnae.Get("0111301"); // Some { Code = "0111301"; Description = "CULTIVO DE ARROZ" }Cnae.Format("0111301"); // "0111-3/01"Valida um código NCM (Nomenclatura Comum do Mercosul) de 8 dígitos na tabela vigente publicada pelo Siscomex.
using BrazilianUtils;
Ncm.IsValid("01012100"); // trueNcm.Format("01012100"); // "0101.21.00"Consulta a tabela oficial de CFOP (Código Fiscal de Operações e Prestações), excluindo cabeçalhos de grupo/subgrupo.
using BrazilianUtils;
Cfop.IsValid("1101"); // true
Cfop.Get("1101"); // Some { Code = "1101"; Description = "Compra para industrialização ou produção rural" }Valida um código CST (Código de Situação Tributária) de ICMS, IPI, PIS ou COFINS.
using BrazilianUtils;
Cst.IsValid("060", Some "icms"); // true
Cst.IsValid("01", Some "pis"); // true
Cst.IsValid("5", None); // false (um único dígito só serve para o ICMS, com origem "0")Valida um código CSOSN (Código de Situação da Operação no Simples Nacional) na tabela oficial (Ajuste SINIEF 07/2005).
using BrazilianUtils;
Csosn.IsValid("101"); // true
Csosn.IsValid("999"); // falseUtilitários para formatação e conversão de texto do Real brasileiro (BRL).
using BrazilianUtils;
Currency.formatCurrency(1234.56M); // Some "R$ 1.234,56"
Currency.formatCurrency(-1234.56M); // Some "R$ -1.234,56"
Currency.formatCurrency(0M); // Some "R$ 0,00"Currency.convertRealToText(1523.45M);
// Some "Mil, quinhentos e vinte e três reais e quarenta e cinco centavos"
Currency.convertRealToText(1.00M);
// Some "Um real"
Currency.convertRealToText(0.50M);
// Some "Cinquenta centavos"
Currency.convertRealToText(0.00M);
// Some "Zero reais"
Currency.convertRealToText(-100.00M);
// Some "Menos cem reais"
Currency.convertRealToText(1000000.00M);
// Some "Um milhão de reais"Converte um número inteiro (a parte fracionária é truncada) para sua representação por extenso em português brasileiro.
using BrazilianUtils;
Number.ConvertToWords(1235.0); // "mil duzentos e trinta e cinco"
Number.ConvertToWords(-3.0); // "menos três"Feriados nacionais brasileiros e cálculo de dias úteis (soma, subtração e diferença entre datas).
using BrazilianUtils;
Date.IsBusinessDay(DateTime(2026, 9, 29), None); // true
Date.IsHoliday(Some { Date = DateTime(2026, 1, 1); State = None }); // trueDate.AddBusinessDays(DateTime(2026, 9, 29), 5, None);
// Some 2026-10-06
Date.DifferenceInBusinessDays(DateTime(2026, 10, 10), DateTime(2026, 9, 29), None);
// Some 9Date.ConvertToWords("01/01/2024"); // "primeiro de janeiro de dois mil e vinte e quatro"Funções utilitárias gerais para manipulação de strings.
using BrazilianUtils;
Helpers.OnlyNumbers("123abc456"); // "123456"
Helpers.OnlyNumbers("(11) 9999-0000"); // "1199990000"
Helpers.OnlyNumbers("CPF: 529.455.577-89"); // "52945557789"Utilitários gerais para capitalização e remoção de acentos de textos brasileiros (nomes, razão social, endereços).
using BrazilianUtils;
Text.Capitalize("jose da silva"); // "Jose da Silva"
Text.Capitalize("empresa ltda"); // "Empresa LTDA"Text.RemoveAccents("São Paulo"); // "Sao Paulo"
Text.RemoveAccents("Açaí"); // "Acai"Contribuições são bem-vindas! Sinta-se à vontade para enviar um Pull Request. Para mudanças significativas, por favor abra uma issue primeiro para discutir o que você gostaria de alterar.
Este projeto é open source e está disponível sob a Licença MIT.