🛠️

Whiz Tools

Build • Create • Innovate

Generador i validador de CNPJ brasiler per a proves

Genera números de CNPJ brasiler vàlids i valida'n els existents amb aquesta eina senzilla dissenyada per a desenvolupadors i provadors que treballen amb identificadors d'empreses brasileres.

Generador i validador de CNPJ brasiler

Generador de CNPJ

Genera un número de CNPJ brasiler vàlid per a fins de prova.

Validador de CNPJ

Comprova si un número de CNPJ brasiler és vàlid.

📚

Documentació

Generador i validador de CNPJ brasiler

Introducció

El CNPJ brasiler (Cadastro Nacional da Pessoa Jurídica) és un número d'identificació únic assignat a empreses i entitats legals al Brasil. Aquesta eina de generació i validació de CNPJ brasiler proporciona una manera senzilla i eficient de generar números de CNPJ vàlids per a fins de prova i validar números de CNPJ existents d'acord amb l'algorisme oficial brasiler. Tant si sou un desenvolupador que prova aplicacions que gestionen dades empresarials brasileres, un professional de QA que crea casos de prova, o qualsevol persona que treballi amb informació d'empreses brasileres, aquesta eina simplifica el procés de treballar amb números de CNPJ.

A diferència dels números de CNPJ reals que són emesos oficialment pel Servei Federal d'Hisenda brasiler (Receita Federal), els CNPJ generats per aquesta eina són matemàticament vàlids però no estan registrats a empreses reals. Això els fa perfectes per a escenaris de prova, dades d'exemple i entorns de desenvolupament on necessiteu números de CNPJ correctament formats i vàlids sense utilitzar identificadors d'empreses reals.

Què és un CNPJ?

Un CNPJ (Cadastro Nacional da Pessoa Jurídica) és un número d'identificació de 14 dígits assignat a empreses i entitats legals pel Servei Federal d'Hisenda brasiler. Serveix com l'equivalent brasiler d'un número d'inscripció d'empresa o d'ID fiscal. Cada empresa que opera legalment al Brasil ha de tenir un CNPJ, que s'utilitza per a:

  • Informes fiscals i compliment
  • Inscripció d'empreses davant d'agències governamentals
  • Obertura de comptes bancaris
  • Emissió de factures i rebuts
  • Participació en licitacions governamentals
  • Importació i exportació de béns

El CNPJ és un identificador essencial en l'ecosistema empresarial brasiler i apareix en documents oficials, contractes i registres financers.

Estructura i format del CNPJ

Un CNPJ brasiler consisteix en 14 dígits, normalment formatats com: XX.XXX.XXX/YYYY-ZZ

L'estructura es desglossa de la següent manera:

  1. Primeres 8 xifres (XX.XXX.XXX): Número base assignat a l'empresa
  2. 4 dígits després de la barra (YYYY): Identificador de sucursal (0001 per a la seu, altres números per a sucursals)
  3. Últims 2 dígits (ZZ): Dígits de control per a la validació

Per exemple, un CNPJ correctament format podria semblar: 12.345.678/0001-95

Els dígits de control (els dos últims números) es calculen mitjançant un algorisme matemàtic específic que valida l'autenticitat del CNPJ. Aquest algorisme assegura que els números generats aleatòriament no poden passar la validació sense seguir el mètode de càlcul adequat.

Com funciona la validació del CNPJ

L'algorisme de validació del CNPJ utilitza un càlcul ponderat per determinar els dígits de control. Així és com funciona:

Càlcul del primer dígit de control

  1. Multipliqueu cadascun dels primers 12 dígits per una seqüència de pes: 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2
  2. Sumeu els resultats d'aquestes multiplicacions
  3. Calculeu el residu d'aquesta suma dividida per 11
  4. Si el residu és menor que 2, el primer dígit de control és 0; d'altra manera, és 11 menys el residu

Càlcul del segon dígit de control

  1. Multipliqueu cadascun dels primers 13 dígits (incloent el primer dígit de control) per una seqüència de pes: 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2
  2. Sumeu els resultats d'aquestes multiplicacions
  3. Calculeu el residu d'aquesta suma dividida per 11
  4. Si el residu és menor que 2, el segon dígit de control és 0; d'altra manera, és 11 menys el residu

Perquè un CNPJ sigui vàlid, ambdós dígits de control han de coincidir amb els valors calculats.

Com utilitzar aquesta eina

La nostra eina de generador i validador de CNPJ brasiler ofereix dues funcions principals: generar CNPJs vàlids i validar números de CNPJ existents.

Generant un CNPJ

Per generar un CNPJ vàlid per a fins de prova:

  1. Navegueu a la secció "Generador de CNPJ" de l'eina
  2. Feu clic al botó "Generar CNPJ"
  3. Apareixerà un CNPJ matemàticament vàlid a la visualització formatada
  4. Utilitzeu el botó "Copiar" per copiar el CNPJ generat al vostre porta-retalls

El CNPJ generat seguirà totes les regles de validació matemàtica d'un CNPJ real però no està registrat amb el Servei Federal d'Hisenda brasiler.

Validant un CNPJ

Per comprovar si un CNPJ és matemàticament vàlid:

  1. Navegueu a la secció "Validador de CNPJ" de l'eina
  2. Introduïu el CNPJ que voleu validar al camp d'entrada
    • L'eina accepta CNPJs amb o sense format (punts, barres i guions)
  3. Feu clic al botó "Validar"
  4. L'eina mostrarà si el CNPJ és vàlid o invàlid d'acord amb l'algorisme dels dígits de control

El validador comprova si el CNPJ segueix el format correcte i si els dígits de control coincideixen amb els valors esperats d'acord amb l'algorisme de validació.

Casos d'ús

Aquesta eina de generador i validador de CNPJ brasiler és particularment útil en els següents escenaris:

Desenvolupament de programari i proves

  • Creació de dades de prova: Generar CNPJs vàlids per omplir bases de dades de prova sense utilitzar identificadors d'empreses reals
  • Proves unitàries: Validar funcions de gestió de CNPJ al vostre codi amb exemples coneguts vàlids i invàlids
  • Proves de QA: Crear casos de prova per a formularis i interfícies que requereixen entrada de CNPJ
  • Proves d'integració: Provar sistemes que intercanvien dades amb serveis governamentals brasileres o institucions financeres

Educació i formació

  • Aprendre el format de CNPJ: Entendre com estan estructurats els identificadors d'empreses brasileres
  • Estudi de l'algorisme: Examinar com funciona la validació dels dígits de control en la pràctica
  • Tècniques de validació de dades: Estudiar exemples del món real dels requisits de validació de dades

Processament de dades

  • Neteja de dades: Validar CNPJs en conjunts de dades existents per identificar possibles errors
  • Validació de formularis: Implementar validació del costat del client o del servidor per a entrades de CNPJ
  • Anonimització de dades: Substituir CNPJs reals per generats vàlids quan es preparen conjunts de dades per a l'anàlisi

Negocis internacionals

  • Preparació per a l'entrada al mercat: Entendre els requisits d'identificació empresarial brasileres
  • Preparació de documents: Assegurar un format adequat en preparar documents empresarials per a Brasil
  • Comprovació de compliment: Verificar que els números de CNPJ recollits siguin almenys matemàticament vàlids

Alternatives

Si bé la nostra eina proporciona una solució senzilla basada en el navegador per generar i validar CNPJs, hi ha diverses alternatives segons les vostres necessitats específiques:

Llibreries de programació

Per a desenvolupadors que integren la validació de CNPJ directament a les aplicacions, hi ha diverses llibreries específiques per a llenguatges disponibles:

  • JavaScript: cpf_cnpj.js, validator.js
  • Python: python-cnpj, validate-docbr
  • PHP: brazilianutils, respect/validation
  • Java: caelum-stella, commons-validator
  • Ruby: cpf_cnpj, brazilian-rails

Aquestes llibreries sovint proporcionen funcionalitat addicional com ara formatatge, anàlisi i validació d'altres documents brasilers.

Serveis d'API

Per a aplicacions que requereixen validació sense implementar l'algorisme:

  • APIs del govern brasiler (requereix registre)
  • APIs de validació comercials que inclouen la comprovació de CNPJ
  • Serveis d'informació empresarial que validen contra la base de dades oficial

Càlcul manual

Per a fins educatius o validacions puntuals, podeu aplicar manualment l'algorisme:

  1. Extraieu els primers 12 dígits del CNPJ
  2. Realitzeu els càlculs ponderats tal com s'ha descrit anteriorment
  3. Compareu els dígits de control calculats amb els dígits de control reals

Tanmateix, el càlcul manual és propens a errors i ineficient per a un ús regular.

Implementació tècnica

El generador i validador de CNPJ en aquesta eina s'implementa mitjançant JavaScript, cosa que el fa ràpid i capaç d'executar-se completament al vostre navegador sense enviar les vostres dades a un servidor. Així és com funcionen les funcions principals:

Algorisme de generació de CNPJ

1function generateCNPJ() {
2  // Generar els primers 12 dígits aleatòriament
3  const digits = Array.from({ length: 12 }, () => Math.floor(Math.random() * 10));
4  
5  // Calcular el primer dígit de control
6  const firstCheckDigit = calculateCheckDigit(digits);
7  digits.push(firstCheckDigit);
8  
9  // Calcular el segon dígit de control
10  const secondCheckDigit = calculateCheckDigit(digits);
11  digits.push(secondCheckDigit);
12  
13  // Format del CNPJ
14  return formatCNPJ(digits.join(''));
15}
16
17function calculateCheckDigit(digits) {
18  const weights = digits.length < 13 
19    ? [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2] 
20    : [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];
21  
22  const sum = digits.reduce((acc, digit, index) => {
23    return acc + digit * weights[index];
24  }, 0);
25  
26  const remainder = sum % 11;
27  return remainder < 2 ? 0 : 11 - remainder;
28}
29

Algorisme de validació de CNPJ

1function validateCNPJ(cnpj) {
2  // Eliminar caràcters no numèrics
3  const cleanCNPJ = cnpj.replace(/\D/g, '');
4  
5  // Comprovar si té la longitud correcta
6  if (cleanCNPJ.length !== 14) return false;
7  
8  // Comprovar patrons invàlids coneguts (tots els mateixos dígits)
9  if (/^(\d)\1+$/.test(cleanCNPJ)) return false;
10  
11  // Convertir a una matriu de dígits
12  const digits = cleanCNPJ.split('').map(Number);
13  
14  // Comprovar el primer dígit de validació
15  const expectedFirstDigit = calculateCheckDigit(digits.slice(0, 12));
16  if (digits[12] !== expectedFirstDigit) return false;
17  
18  // Comprovar el segon dígit de validació
19  const expectedSecondDigit = calculateCheckDigit(digits.slice(0, 13));
20  if (digits[13] !== expectedSecondDigit) return false;
21  
22  return true;
23}
24

Funció de formatatge de CNPJ

1function formatCNPJ(cnpj) {
2  // Eliminar caràcters no numèrics
3  const cleanCNPJ = cnpj.replace(/\D/g, '');
4  
5  // Format segons la longitud
6  if (cleanCNPJ.length <= 2) {
7    return cleanCNPJ;
8  } else if (cleanCNPJ.length <= 5) {
9    return `${cleanCNPJ.slice(0, 2)}.${cleanCNPJ.slice(2)}`;
10  } else if (cleanCNPJ.length <= 8) {
11    return `${cleanCNPJ.slice(0, 2)}.${cleanCNPJ.slice(2, 5)}.${cleanCNPJ.slice(5)}`;
12  } else if (cleanCNPJ.length <= 12) {
13    return `${cleanCNPJ.slice(0, 2)}.${cleanCNPJ.slice(2, 5)}.${cleanCNPJ.slice(5, 8)}/${cleanCNPJ.slice(8)}`;
14  } else {
15    return `${cleanCNPJ.slice(0, 2)}.${cleanCNPJ.slice(2, 5)}.${cleanCNPJ.slice(5, 8)}/${cleanCNPJ.slice(8, 12)}-${cleanCNPJ.slice(12, 14)}`;
16  }
17}
18

Aquestes funcions principals es poden implementar en altres llenguatges de programació seguint la mateixa lògica. Aquí teniu exemples en Python i Java:

Implementació en Python

1import random
2
3def calculate_check_digit(digits):
4    weights = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2] if len(digits) < 13 else [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]
5    
6    total = 0
7    for i in range(len(digits)):
8        total += digits[i] * weights[i]
9    
10    remainder = total % 11
11    return 0 if remainder < 2 else 11 - remainder
12
13def generate_cnpj():
14    # Generar els primers 12 dígits aleatòriament
15    digits = [random.randint(0, 9) for _ in range(12)]
16    
17    # Calcular el primer dígit de control
18    first_check = calculate_check_digit(digits)
19    digits.append(first_check)
20    
21    # Calcular el segon dígit de control
22    second_check = calculate_check_digit(digits)
23    digits.append(second_check)
24    
25    # Format del CNPJ
26    cnpj = ''.join(map(str, digits))
27    return f"{cnpj[:2]}.{cnpj[2:5]}.{cnpj[5:8]}/{cnpj[8:12]}-{cnpj[12:]}"
28
29def validate_cnpj(cnpj):
30    # Eliminar caràcters no numèrics
31    cnpj = ''.join(filter(str.isdigit, cnpj))
32    
33    # Comprovar longitud
34    if len(cnpj) != 14:
35        return False
36    
37    # Comprovar si tots els dígits són els mateixos
38    if len(set(cnpj)) == 1:
39        return False
40    
41    # Convertir a una llista d'enters
42    digits = [int(d) for d in cnpj]
43    
44    # Validar el primer dígit de control
45    first_check = calculate_check_digit(digits[:12])
46    if digits[12] != first_check:
47        return False
48    
49    # Validar el segon dígit de control
50    second_check = calculate_check_digit(digits[:13])
51    if digits[13] != second_check:
52        return False
53    
54    return True
55

Implementació en Java

1import java.util.Random;
2
3public class CNPJUtils {
4    
5    public static String generateCNPJ() {
6        Random random = new Random();
7        int[] digits = new int[14];
8        
9        // Generar els primers 12 dígits aleatòriament
10        for (int i = 0; i < 12; i++) {
11            digits[i] = random.nextInt(10);
12        }
13        
14        // Calcular el primer dígit de control
15        digits[12] = calculateCheckDigit(digits, 12);
16        
17        // Calcular el segon dígit de control
18        digits[13] = calculateCheckDigit(digits, 13);
19        
20        // Format del CNPJ
21        return String.format("%02d.%03d.%03d/%04d-%02d",
22                digits[0] * 10 + digits[1],
23                digits[2] * 100 + digits[3] * 10 + digits[4],
24                digits[5] * 100 + digits[6] * 10 + digits[7],
25                digits[8] * 1000 + digits[9] * 100 + digits[10] * 10 + digits[11],
26                digits[12] * 10 + digits[13]);
27    }
28    
29    private static int calculateCheckDigit(int[] digits, int length) {
30        int[] weights = length < 13 
31            ? new int[]{5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2}
32            : new int[]{6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2};
33        
34        int sum = 0;
35        for (int i = 0; i < length; i++) {
36            sum += digits[i] * weights[i];
37        }
38        
39        int remainder = sum % 11;
40        return remainder < 2 ? 0 : 11 - remainder;
41    }
42    
43    public static boolean validateCNPJ(String cnpj) {
44        // Eliminar caràcters no numèrics
45        cnpj = cnpj.replaceAll("\\D", "");
46        
47        // Comprovar longitud
48        if (cnpj.length() != 14) {
49            return false;
50        }
51        
52        // Comprovar si tots els dígits són els mateixos
53        boolean allDigitsSame = true;
54        for (int i = 1; i < cnpj.length(); i++) {
55            if (cnpj.charAt(i) != cnpj.charAt(0)) {
56                allDigitsSame = false;
57                break;
58            }
59        }
60        if (allDigitsSame) {
61            return false;
62        }
63        
64        // Convertir a una matriu d'enters
65        int[] digits = new int[14];
66        for (int i = 0; i < 14; i++) {
67            digits[i] = Character.getNumericValue(cnpj.charAt(i));
68        }
69        
70        // Validar el primer dígit de control
71        int firstCheck = calculateCheckDigit(digits, 12);
72        if (digits[12] != firstCheck) {
73            return false;
74        }
75        
76        // Validar el segon dígit de control
77        int secondCheck = calculateCheckDigit(digits, 13);
78        if (digits[13] != secondCheck) {
79            return false;
80        }
81        
82        return true;
83    }
84}
85

Consideracions importants

Quan utilitzeu aquesta eina generadora i validadora de CNPJ, tingueu en compte les següents consideracions:

Consideracions legals i ètiques

  • No per a frau: Els CNPJ generats no s'han d'utilitzar mai per a fins fraudulents o de representació falsa
  • Només per a proves: Aquests CNPJ són només per a fins de prova i desenvolupament
  • No registrats: Els CNPJ generats són matemàticament vàlids però no estan registrats amb les autoritats brasileres
  • Sense validesa real: No poden ser utilitzats per a la inscripció d'empreses o fins fiscals

Limitacions tècniques

  • Sense informació empresarial: Els CNPJ generats no contenen codis de sector empresarial reals ni informació de localització
  • Sense verificació de base de dades: El validador només comprova la validesa matemàtica, no l'estat de registre
  • Variacions de format: Si bé l'eina gestiona les variacions de format comunes, alguns sistemes poden requerir formats específics

Consideracions de seguretat

  • Processament del costat del client: Tot el processament es realitza al vostre navegador; no s'envien dades a servidors
  • Sense emmagatzematge de dades: Els CNPJ generats no s'emmagatzemen ni es registren
  • Sense dades personals: L'eina no gestiona ni processa cap informació personal

Preguntes freqüents

Quina és la utilitat d'un CNPJ al Brasil?

Un CNPJ és el número d'inscripció nacional per a empreses i entitats legals al Brasil. S'utilitza per a fins fiscals, inscripció d'empreses, obertura de comptes bancaris i identificació d'empreses en transaccions oficials.

Són reals els CNPJ generats per aquesta eina?

No. Els CNPJ generats per aquesta eina són matemàticament vàlids d'acord amb l'algorisme dels dígits de control, però no estan registrats amb el Servei Federal d'Hisenda brasiler i no pertanyen a empreses reals.

Puc utilitzar CNPJ generats per la meva empresa?

No. Per obtenir un CNPJ legítim per a una empresa, heu de registrar-vos amb el Servei Federal d'Hisenda brasiler (Receita Federal) seguint el procés oficial. Els CNPJ generats són només per a proves.

Com puc saber si un CNPJ pertany a una empresa real?

Per verificar si un CNPJ està registrat a una empresa real, necessiteu consultar la base de dades del Servei Federal d'Hisenda brasiler. La nostra eina només comprova si un CNPJ és matemàticament vàlid, no si està registrat oficialment.

Per què el validador rebutja un CNPJ amb tots els mateixos dígits?

Els CNPJ amb tots els mateixos dígits (com 11.111.111/1111-11) es consideren automàticament invàlids, fins i tot si matemàticament passen l'algorisme dels dígits de control. Aquesta és una regla establerta pel Servei Federal d'Hisenda brasiler.

L'eina emmagatzema els CNPJ que genero o valido?

No. Tot el processament es realitza al vostre navegador, i no emmagatzemem ni transmetem cap dels CNPJ que genereu o valideu.

Puc generar múltiples CNPJ alhora?

La versió actual de l'eina genera un CNPJ a la vegada. Per a generació massiva, potser voldreu considerar utilitzar una de les llibreries de programació esmentades a la secció Alternatives.

Per què és important el format XX.XXX.XXX/XXXX-XX?

Aquest és el format oficial requerit per les autoritats brasileres. El grupament específic ajuda a identificar diferents components del CNPJ, com ara el número base i l'identificador de sucursal.

Com puc validar un CNPJ programàticament?

Podeu implementar l'algorisme de validació en el vostre llenguatge de programació preferit utilitzant els exemples de codi proporcionats a la secció d'Implementació tècnica, o utilitzar una de les llibreries esmentades a la secció Alternatives.

Hi ha CNPJ especials per a entitats governamentals?

Sí. Les entitats governamentals al Brasil tenen patrons de CNPJ específics. Per exemple, les entitats governamentals federals sovint comencen amb dígits específics. El nostre generador crea CNPJs aleatoris i no genera específicament CNPJs d'entitats governamentals.

Referències

  1. Servei Federal d'Hisenda brasiler (Receita Federal do Brasil) - Lloc web oficial
  2. "CNPJ - Cadastro Nacional da Pessoa Jurídica" - Viquipèdia
  3. Codi Civil brasiler (Llei núm. 10.406/2002) - Marc legal per a les entitats empresarials al Brasil
  4. Instrucció normativa de registre empresarial brasiler (IN RFB núm. 1863/2018) - Regulacions sobre el registre de CNPJ

Proveu-ho ara

La nostra eina de generador i validador de CNPJ brasiler fa que treballar amb aquests números d'identificació sigui senzill i eficient. Tant si esteu provant aplicacions, preparant dades d'exemple o validant CNPJs existents, aquesta eina proporciona una solució senzilla sense la complexitat de les integracions d'API o configuracions avançades.

Genera el teu primer CNPJ vàlid ara o valida'n un existent utilitzant la nostra interfície senzilla!