PHPackages                             renatomagalhaes/validador-cnpj - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Validation &amp; Sanitization](/categories/validation)
4. /
5. renatomagalhaes/validador-cnpj

ActiveLibrary[Validation &amp; Sanitization](/categories/validation)

renatomagalhaes/validador-cnpj
==============================

Biblioteca PHP pura, sem dependências, para validação e tipagem do CNPJ (Cadastro Nacional da Pessoa Jurídica) utilizando os recursos mais modernos do PHP 8.3+, com suporte ao novo formato alfanumérico (previsto para Julho de 2026) e ao formato legado (numérico).

v1.0.1(2mo ago)019MITPHPPHP &gt;=8.3

Since Apr 8Pushed 2mo agoCompare

[ Source](https://github.com/renatomagalhaes/validador-cnpj)[ Packagist](https://packagist.org/packages/renatomagalhaes/validador-cnpj)[ RSS](/packages/renatomagalhaes-validador-cnpj/feed)WikiDiscussions main Synced 2w ago

READMEChangelogDependencies (1)Versions (3)Used By (0)

Validador de CNPJ (Legado e Alfanumérico)
=========================================

[](#validador-de-cnpj-legado-e-alfanumérico)

[![PHP Version](https://camo.githubusercontent.com/5c8ce4571ddf4b6b8ca847e0c4c079de98fc6460eb7eae9c81ca63319c21f546/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7068702d253345253344382e332d626c75652e737667)](https://php.net)[![License](https://camo.githubusercontent.com/8bb50fd2278f18fc326bf71f6e88ca8f884f72f179d3e555e20ed30157190d0d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d677265656e2e737667)](LICENSE)[![Maintenance](https://camo.githubusercontent.com/778bbf9c34a97c4ea84b414d09845f88116df69b1a7fc0e6a53c0ffb5c77b3df/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4d61696e7461696e656425323062792d556e6f7765622d6f72616e67652e737667)](https://github.com/renatomagalhaes)

Biblioteca PHP pura, sem dependências, para validar e tipar o novo **CNPJ Alfanumérico** da Receita Federal utilizando os recursos mais modernos do **PHP 8.3+**, com suporte ao formato legado (numérico) e ao novo formato alfanumérico previsto para entrar em vigor em **julho de 2026**.

---

Sobre a Mudança
---------------

[](#sobre-a-mudança)

Com o crescimento acelerado de novas empresas no Brasil, o formato puramente numérico do CNPJ estava próximo do seu limite técnico. Em resposta, a Receita Federal publicou a **Instrução Normativa RFB nº 2.229/2024**, introduzindo o suporte a caracteres alfanuméricos (letras de A a Z e números de 0 a 9).

Os CNPJs numéricos atuais **continuarão válidos**. O novo formato será atribuído apenas para **novas inscrições a partir de julho de 2026**.

### Cronograma de Implantação

[](#cronograma-de-implantação)

DataEvento**15/10/2024**Publicação da Instrução Normativa RFB nº 2.229**Julho de 2026**Início das emissões do novo formato alfanumérico---

Estrutura do CNPJ Alfanumérico
------------------------------

[](#estrutura-do-cnpj-alfanumérico)

Um CNPJ tem sempre **14 caracteres** divididos em três partes principais:

```
X X . X X X . X X X / X X X X - D D
└───────────────────┘ └──────┘ └──┘
    Raiz (8 chars)    Ordem   Dígitos
                     (4 chars) Verificadores

```

PartePosiçõesConteúdoExemplo**Raiz**1 a 8Alfanumérico (A–Z, 0–9)`12ABC345`**Ordem**9 a 12Alfanumérico (A–Z, 0–9)`01AB`**Dígitos Verificadores**13 e 14**Sempre Numéricos (0-9)**`77`---

Como os Dígitos Verificadores são calculados
--------------------------------------------

[](#como-os-dígitos-verificadores-são-calculados)

O algoritmo segue o padrão **Módulo 11**, adaptado pela Receita Federal para aceitar caracteres alfanuméricos.

### 1. Conversão de Caracteres

[](#1-conversão-de-caracteres)

Cada caractere da base (posições 1 a 12) é convertido para um valor numérico subtraindo **48** do seu código ASCII:

- **Dígitos '0'–'9'** → valores **0 a 9**
    - Ex: `'5'` (ASCII 53) $53 - 48 =$ **5**
- **Letras 'A'–'Z'** → valores **17 a 42**
    - Ex: `'A'` (ASCII 65) $65 - 48 =$ **17**
    - Ex: `'B'` (ASCII 66) $66 - 48 =$ **18**
    - Ex: `'Z'` (ASCII 90) $90 - 48 =$ **42**

### 2. Cálculo do 1º Dígito Verificador (DV1)

[](#2-cálculo-do-1º-dígito-verificador-dv1)

Multiplicamos os 12 primeiros caracteres pelos pesos abaixo e somamos os resultados:

Posição123456789101112**Peso**5432987654321. Calcule o resto da divisão da soma por 11.
2. Se o resto for 0 ou **1** → o dígito é 0.
3. Caso contrário → o dígito é **11 - resto**.

### 3. Cálculo do 2º Dígito Verificador (DV2)

[](#3-cálculo-do-2º-dígito-verificador-dv2)

Repetimos o processo usando os **12 primeiros caracteres + o DV1** calculado:

Posição12345678910111213**Peso**6543298765432---

🛠️ Como Usar
------------

[](#️-como-usar)

### Instalação

[](#instalação)

```
composer require renatomagalhaes/validador-cnpj
```

### Exemplo de Uso

[](#exemplo-de-uso)

```
use Unoweb\Cnpj\Cnpj;

// Validação simples (Retorna bool)
Cnpj::validate('JR.32M.XJG/0001-69'); // true
Cnpj::validate('00.000.000/0001-91'); // true (Legado)

// O validador normaliza a entrada automaticamente (uppercase e sem máscara)
Cnpj::validate('jr32mxjg000169');     // true
```

---

🏗️ Integração com Laravel
-------------------------

[](#️-integração-com-laravel)

Esta biblioteca é 100% compatível com as versões mais recentes do Laravel (**10.x e 11.x+**), desde que o ambiente utilize **PHP 8.3**.

### Criando uma Custom Rule

[](#criando-uma-custom-rule)

Você pode integrar a validação facilmente criando uma Rule customizada:

```
// app/Rules/CnpjRule.php
namespace App\Rules;

use Closure;
use Illuminate\Contracts\Validation\ValidationRule;
use Unoweb\Cnpj\Cnpj;

class CnpjRule implements ValidationRule
{
    public function validate(string $attribute, mixed $value, Closure $fail): void
    {
        if (!Cnpj::validate((string) $value)) {
            $fail('O campo :attribute não é um CNPJ válido.');
        }
    }
}
```

E utilize-a em seu Controller ou FormRequest:

```
$request->validate([
    'documento' => ['required', new CnpjRule()],
]);
```

---

🌍 Compatibilidade Ampla (Framework Agnostic)
--------------------------------------------

[](#-compatibilidade-ampla-framework-agnostic)

Esta biblioteca foi desenhada para ser utilizada em qualquer ecossistema PHP.

- **Hyperf / Swoole:** Por não possuir estado interno e ser 100% CPU-bound, é totalmente segura para ambientes de alta performance e corrotinas.
- **PHP Puro / Legado:** Se o seu projeto utiliza Composer, basta realizar o `require` e utilizar a classe normalmente através do autoloader padrão (`vendor/autoload.php`).
- **Outros Frameworks:** Compatível com Symfony, Slim, Zend/Laminas e CakePHP.

---

🧪 Desenvolvimento e Testes
--------------------------

[](#-desenvolvimento-e-testes)

A biblioteca utiliza PHPUnit para garantir a integridade dos cálculos.

```
# Rodar os testes via Docker
make test
```

---

🔗 Referências Oficiais
----------------------

[](#-referências-oficiais)

- [Receita Federal - Perguntas e Respostas sobre CNPJ Alfanumérico](https://www.gov.br/receitafederal/pt-br/acesso-a-informacao/acoes-e-programas/programas-e-atividades/cnpj-alfanumerico)
- [Instrução Normativa RFB nº 2.229/2024](https://www.gov.br/receitafederal/pt-br/acesso-a-informacao/legislacao)

---

Desenvolvido e mantido por **[Unoweb](https://github.com/renatomagalhaes)**.

###  Health Score

40

—

FairBetter than 86% of packages

Maintenance85

Actively maintained with recent releases

Popularity9

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity50

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

2

Last Release

80d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/22924321?v=4)[Renato Magalhães](/maintainers/renatomagalhaes)[@renatomagalhaes](https://github.com/renatomagalhaes)

---

Top Contributors

[![renatomagalhaes](https://avatars.githubusercontent.com/u/22924321?v=4)](https://github.com/renatomagalhaes "renatomagalhaes (4 commits)")

---

Tags

alfanumericocnpjcomposer-packagehyperflaravelphpreceita-federalvalidadorzero-dependencieslaravelvalidatorhyperfbrazilcnpjvalidadorreceita-federalalfanuméricounoweb

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/renatomagalhaes-validador-cnpj/health.svg)

```
[![Health](https://phpackages.com/badges/renatomagalhaes-validador-cnpj/health.svg)](https://phpackages.com/packages/renatomagalhaes-validador-cnpj)
```

###  Alternatives

[illuminatech/validation-composite

Allows uniting several validation rules into a single one for easy re-usage

180517.4k](/packages/illuminatech-validation-composite)[bissolli/validador-cpf-cnpj

Classe em PHP para validação de CPF e CNPJ.

2093.2k](/packages/bissolli-validador-cpf-cnpj)[yiibr/yii2-br-validator

Provide validations and features for brazilian localization

14105.8k4](/packages/yiibr-yii2-br-validator)[stuyam/laravel-phone-validator

A phone validator for Laravel using the free Twilio phone lookup service.

2861.7k](/packages/stuyam-laravel-phone-validator)[laravel-validation-rules/us-state

Validate US States and Canada Provinces

16177.7k](/packages/laravel-validation-rules-us-state)[laravel-validation-rules/timezone

Validate that a given timezone is valid.

2119.0k](/packages/laravel-validation-rules-timezone)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
