Exemplos de CNPJ alfanumérico válidos para teste
20 CNPJs alfanuméricos válidos para teste, com matriz e filiais, 5 inválidos com o motivo e a lista pronta em JSON para copiar nos seus testes.
Quem está adaptando um sistema para o CNPJ alfanumérico precisa, antes de qualquer coisa, de números para testar. Esta página reúne 20 CNPJs alfanuméricos válidos e 5 inválidos, com o motivo de cada falha, prontos para colar em testes unitários, fixtures e planilhas. Todos foram gerados e conferidos com a biblioteca de referência do site, a mesma usada pelo validador de CNPJ.
Os números são fictícios: foram sorteados, não copiados de um cadastro. Ainda assim, qualquer CNPJ gerado pode coincidir com um CNPJ real por acaso, então use-os só em ambientes de desenvolvimento e teste.
20 CNPJs alfanuméricos válidos para teste
Os 17 primeiros são independentes. O primeiro, 12.ABC.345/01DE-35, é o exemplo usado em toda a documentação do site para mostrar o cálculo passo a passo. Os três últimos compartilham a raiz MW1MUDZG: são a matriz (ordem 0001) e duas filiais (0002 e 0003) de um mesmo CNPJ fictício.
| # | Com máscara | Sem máscara | Observação |
|---|---|---|---|
| 1 | 12.ABC.345/01DE-35 |
12ABC34501DE35 |
exemplo da documentação |
| 2 | UD.35T.454/XZN3-31 |
UD35T454XZN331 |
|
| 3 | 6P.HGW.WUD/S8JS-09 |
6PHGWWUDS8JS09 |
dígitos 0 e 9 |
| 4 | FW.6C4.RYP/GR2G-70 |
FW6C4RYPGR2G70 |
|
| 5 | PM.OVX.SOD/RVEJ-00 |
PMOVXSODRVEJ00 |
dois dígitos 0 |
| 6 | QN.XK1.37Z/OJ0T-99 |
QNXK137ZOJ0T99 |
letra O e dígito 0 |
| 7 | 4X.CU5.1T9/8M5D-02 |
4XCU51T98M5D02 |
|
| 8 | NM.WPE.2LC/UWOU-47 |
NMWPE2LCUWOU47 |
|
| 9 | LM.135.8JA/QWU7-79 |
LM1358JAQWU779 |
|
| 10 | FU.24C.ZI0/7P1J-57 |
FU24CZI07P1J57 |
letra I e dígito 1 |
| 11 | BV.Z7R.3WD/C31J-92 |
BVZ7R3WDC31J92 |
|
| 12 | 7H.CWN.8MX/7I2P-65 |
7HCWN8MX7I2P65 |
|
| 13 | 5X.B70.2NJ/YFEL-94 |
5XB702NJYFEL94 |
|
| 14 | MT.D5I.EVC/0HLF-82 |
MTD5IEVC0HLF82 |
ordem começa com 0 |
| 15 | UD.ANE.EZA/31L1-99 |
UDANEEZA31L199 |
|
| 16 | E9.MHD.4PA/D2ID-86 |
E9MHD4PAD2ID86 |
|
| 17 | R3.1S5.JA3/DE9K-31 |
R31S5JA3DE9K31 |
|
| 18 | MW.1MU.DZG/0001-90 |
MW1MUDZG000190 |
matriz |
| 19 | MW.1MU.DZG/0002-71 |
MW1MUDZG000271 |
filial 0002 |
| 20 | MW.1MU.DZG/0003-52 |
MW1MUDZG000352 |
filial 0003 |
Alguns casos merecem atenção. Os números 6 e 10 misturam letras e dígitos parecidos (O e 0, I e 1), úteis para conferir fontes, OCR e digitação manual. O número 5 termina em 00, o que pega rotinas que tratam zeros finais como ausência de valor. E os três últimos testam relatórios e agrupamentos por raiz: uma consulta por LEFT(cnpj, 8) deve trazer os três juntos.
5 inválidos e por quê
Cada inválido falha num ponto diferente da validação, na ordem em que as checagens acontecem. O código do motivo é o mesmo que o validador e a API devolvem.
| CNPJ | Motivo | Explicação |
|---|---|---|
12.ABC.345/01D-35 |
tamanho |
Falta um caractere na ordem: depois de limpo, sobram 13. |
12.ABC.345/01DE-3X |
caracteres |
Letra na posição de dígito verificador. Os dois últimos são sempre numéricos. |
ZZ.ZZZ.ZZZ/ZZZZ-62 |
repetido |
Os 12 primeiros caracteres são iguais. A conta fecha (62), mas sequências repetidas não são consideradas válidas. |
12.ABC.345/01DE-45 |
dv1 |
O primeiro dígito verificador correto é 3, não 4. |
12.ABC.345/01DE-36 |
dv2 |
O primeiro confere; o segundo correto é 5, não 6. |
O caso repetido é o mais traiçoeiro: uma implementação que só faz a conta aceita ZZZZZZZZZZZZ62, assim como aceitaria 00000000000000. Se o seu validador não tem uma checagem explícita para isso, este é o teste que vai mostrar.
Copie em JSON
O mesmo conjunto, sem máscara, em formato JSON para fixtures. Os inválidos estão com a pontuação original, para testar também a limpeza da entrada.
{
"validos": [
"12ABC34501DE35", "UD35T454XZN331", "6PHGWWUDS8JS09", "FW6C4RYPGR2G70",
"PMOVXSODRVEJ00", "QNXK137ZOJ0T99", "4XCU51T98M5D02", "NMWPE2LCUWOU47",
"LM1358JAQWU779", "FU24CZI07P1J57", "BVZ7R3WDC31J92", "7HCWN8MX7I2P65",
"5XB702NJYFEL94", "MTD5IEVC0HLF82", "UDANEEZA31L199", "E9MHD4PAD2ID86",
"R31S5JA3DE9K31", "MW1MUDZG000190", "MW1MUDZG000271", "MW1MUDZG000352"
],
"invalidos": [
{ "cnpj": "12.ABC.345/01DE-3X", "motivo": "caracteres" },
{ "cnpj": "12.ABC.345/01D-35", "motivo": "tamanho" },
{ "cnpj": "ZZ.ZZZ.ZZZ/ZZZZ-62", "motivo": "repetido" },
{ "cnpj": "12.ABC.345/01DE-45", "motivo": "dv1" },
{ "cnpj": "12.ABC.345/01DE-36", "motivo": "dv2" }
]
}Num teste parametrizado, basta percorrer as duas listas:
import casos from './cnpj-alfanumerico-fixtures.json';
import { analisarCnpj } from './cnpj';
test.each(casos.validos)('%s é válido', (cnpj) => {
expect(analisarCnpj(cnpj).valido).toBe(true);
});
test.each(casos.invalidos)('$cnpj é inválido ($motivo)', ({ cnpj, motivo }) => {
expect(analisarCnpj(cnpj).motivo).toBe(motivo);
});Não se esqueça dos numéricos. Os CNPJs existentes não mudam, e um sistema adaptado precisa continuar aceitando 11.222.333/0001-81 e recusando 11.222.333/0001-82.
Como são calculados
O cálculo é o mesmo do CNPJ numérico, com uma diferença no valor de cada caractere: ele passa a ser o código ASCII menos 48. Dígitos continuam valendo 0 a 9; A vale 17, B vale 18 e assim por diante até Z, que vale 42.
- Multiplique os 12 primeiros caracteres pelos pesos 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2 e some.
- Divida a soma por 11. Se o resto for menor que 2, o primeiro dígito é 0; senão, é 11 menos o resto.
- Repita com os 13 primeiros caracteres (incluindo o dígito recém-calculado) e os pesos 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2.
Para 12ABC34501DE, a primeira soma é 459, com resto 8, o que dá o dígito 3; a segunda é 424, com resto 6, o que dá 5. A tabela completa, caractere por caractere, está no guia sobre a estrutura do CNPJ, e a calculadora de dígitos de CNPJ mostra a conta de qualquer base.
Gere os seus
Vinte números resolvem testes unitários, mas não uma carga de desempenho nem uma base de homologação. Para isso:
- O gerador de CNPJ cria um número por vez, numérico ou alfanumérico, e permite fixar a raiz para obter matriz e filiais.
- O gerador de CNPJ em lote cria até 10 mil de uma vez, com raiz fixa opcional, e baixa o resultado em CSV ou JSON.
- A API faz o mesmo por requisição HTTP, útil em pipelines de CI.
Se a sua base de teste vem de uma cópia da produção, o guia sobre CPF em massa de teste e LGPD explica por que trocar documentos reais por fictícios, e o raciocínio vale igualmente para o CNPJ de sócios e empresas. Para adaptar o sistema em si, siga o checklist em CNPJ alfanumérico: o que muda no seu sistema.
Perguntas frequentes
Esses CNPJs pertencem a empresas reais?
Foram gerados ao acaso para teste e não foram escolhidos a partir de nenhum cadastro. Como qualquer número gerado, podem coincidir com um CNPJ real por acaso. Use-os só em ambientes de desenvolvimento e teste.
Por que a lista é fixa e não gerada a cada visita?
Testes automatizados precisam de valores estáveis. Uma lista fixa permite copiar os casos para um arquivo de fixtures e comparar resultados entre execuções. Para valores novos a cada vez, use o gerador.
Posso usar letras minúsculas nos testes?
Use para testar a normalização. 12.abc.345/01de-35 deve ser aceito depois de convertido para maiúsculas, mas o valor gravado e exibido deve ser 12ABC34501DE35 ou 12.ABC.345/01DE-35.