Generujte platné čísla CNPJ v Brazílii a overte existujúce pomocou tohto jednoduchého nástroja navrhnutého pre vývojárov a testerov pracujúcich s identifikačnými číslami firiem v Brazílii.
Vygenerujte platné číslo CNPJ pre testovacie účely.
Skontrolujte, či je číslo CNPJ platné.
Brazílsky CNPJ (Cadastro Nacional da Pessoa Jurídica) je jedinečné identifikačné číslo pridelené podnikateľom a právnickým osobám v Brazílii. Tento generátor a validátor CNPJ v Brazílii poskytuje jednoduchý a efektívny spôsob, ako generovať platné čísla CNPJ na testovacie účely a overiť existujúce čísla CNPJ podľa oficiálneho brazílskeho algoritmu. Či už ste vývojár testujúci aplikácie, ktoré spracovávajú údaje o brazílskych podnikoch, profesionál QA vytvárajúci testovacie prípady, alebo ktokoľvek pracujúci s informáciami o brazílskych spoločnostiach, tento nástroj zjednodušuje proces práce s číslami CNPJ.
Na rozdiel od skutočných čísel CNPJ, ktoré oficiálne vydáva Brazílska federálna daňová správa (Receita Federal), CNPJs generované týmto nástrojom sú matematicky platné, ale nie sú registrované na skutočné spoločnosti. To ich robí ideálnymi na testovacie scenáre, vzorové údaje a vývojové prostredia, kde potrebujete správne naformátované a platné čísla CNPJ bez použitia skutočných identifikátorov podnikov.
CNPJ (Cadastro Nacional da Pessoa Jurídica) je 14-ciferné identifikačné číslo, ktoré prideľuje podnikateľom a právnickým osobám Brazílska federálna daňová správa. Slúži ako brazílsky ekvivalent registračného čísla spoločnosti alebo daňového identifikačného čísla. Každý podnik, ktorý legálne pôsobí v Brazílii, musí mať CNPJ, ktorý sa používa na:
CNPJ je základným identifikátorom v brazílskom podnikateľskom ekosystéme a objavuje sa na oficiálnych dokumentoch, zmluvách a finančných záznamoch.
Brazílsky CNPJ pozostáva zo 14 číslic, zvyčajne formátovaných ako: XX.XXX.XXX/YYYY-ZZ
Štruktúra sa rozkladá nasledovne:
Napríklad, správne naformátovaný CNPJ by mohol vyzerať takto: 12.345.678/0001-95
Kontrolné číslice (posledné dve číslice) sa vypočítavajú pomocou špecifického matematického algoritmu, ktorý overuje pravosť CNPJ. Tento algoritmus zabezpečuje, že náhodne generované čísla nemôžu prejsť validáciou bez dodržania správnej metódy výpočtu.
Algoritmus validácie CNPJ používa vážené výpočty na určenie kontrolných číslic. Tu je, ako to funguje:
Aby bol CNPJ platný, obe kontrolné číslice musia zodpovedať vypočítaným hodnotám.
Náš nástroj na generovanie a validáciu CNPJ v Brazílii ponúka dve hlavné funkcie: generovanie platných CNPJ a validáciu existujúcich čísel CNPJ.
Ak chcete vygenerovať platný CNPJ na testovacie účely:
Vygenerovaný CNPJ bude dodržiavať všetky matematické pravidlá validácie skutočného CNPJ, ale nie je registrovaný u Brazílskej federálnej daňovej správy.
Ak chcete skontrolovať, či je CNPJ matematicky platný:
Validátor kontroluje, či CNPJ dodržiava správny formát a či kontrolné číslice zodpovedajú očakávaným hodnotám podľa validačného algoritmu.
Tento generátor a validátor CNPJ v Brazílii je obzvlášť užitočný v nasledujúcich scenároch:
Aj keď náš nástroj poskytuje jednoduché, webové riešenie na generovanie a validáciu CNPJ, existuje niekoľko alternatív v závislosti od vašich konkrétnych potrieb:
Pre vývojárov, ktorí integrujú validáciu CNPJ priamo do aplikácií, sú k dispozícii niektoré knižnice špecifické pre jazyk:
cpf_cnpj.js
, validator.js
python-cnpj
, validate-docbr
brazilianutils
, respect/validation
caelum-stella
, commons-validator
cpf_cnpj
, brazilian-rails
Tieto knižnice často poskytujú ďalšiu funkcionalitu, ako je formátovanie, analýza a validácia iných brazílskych dokumentov.
Pre aplikácie, ktoré vyžadujú validáciu bez implementácie algoritmu:
Na vzdelávacie účely alebo jednorazové validácie môžete ručne aplikovať algoritmus:
Avšak ručný výpočet je náchylný na chyby a neefektívny pre pravidelné použitie.
Generátor a validátor CNPJ v tomto nástroji sú implementované pomocou JavaScriptu, čo ho robí rýchlym a schopným fungovať úplne vo vašom prehliadači bez odosielania vašich údajov na server. Tu je, ako fungujú základné funkcie:
1function generateCNPJ() {
2 // Generujte prvých 12 číslic náhodne
3 const digits = Array.from({ length: 12 }, () => Math.floor(Math.random() * 10));
4
5 // Vypočítajte prvú kontrolnú číslicu
6 const firstCheckDigit = calculateCheckDigit(digits);
7 digits.push(firstCheckDigit);
8
9 // Vypočítajte druhú kontrolnú číslicu
10 const secondCheckDigit = calculateCheckDigit(digits);
11 digits.push(secondCheckDigit);
12
13 // Naformátujte 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
1function validateCNPJ(cnpj) {
2 // Odstráňte nečíselné znaky
3 const cleanCNPJ = cnpj.replace(/\D/g, '');
4
5 // Skontrolujte, či má správnu dĺžku
6 if (cleanCNPJ.length !== 14) return false;
7
8 // Skontrolujte známe neplatné vzory (všetky rovnaké číslice)
9 if (/^(\d)\1+$/.test(cleanCNPJ)) return false;
10
11 // Preveďte na pole číslic
12 const digits = cleanCNPJ.split('').map(Number);
13
14 // Skontrolujte prvú kontrolnú číslicu
15 const expectedFirstDigit = calculateCheckDigit(digits.slice(0, 12));
16 if (digits[12] !== expectedFirstDigit) return false;
17
18 // Skontrolujte druhú kontrolnú číslicu
19 const expectedSecondDigit = calculateCheckDigit(digits.slice(0, 13));
20 if (digits[13] !== expectedSecondDigit) return false;
21
22 return true;
23}
24
1function formatCNPJ(cnpj) {
2 // Odstráňte nečíselné znaky
3 const cleanCNPJ = cnpj.replace(/\D/g, '');
4
5 // Formátujte na základe dĺžky
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
Tieto základné funkcie môžu byť implementované v iných programovacích jazykoch podľa rovnakého logiky. Tu sú príklady v Pythone a Jave:
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 # Generujte prvých 12 číslic náhodne
15 digits = [random.randint(0, 9) for _ in range(12)]
16
17 # Vypočítajte prvú kontrolnú číslicu
18 first_check = calculate_check_digit(digits)
19 digits.append(first_check)
20
21 # Vypočítajte druhú kontrolnú číslicu
22 second_check = calculate_check_digit(digits)
23 digits.append(second_check)
24
25 # Naformátujte 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 # Odstráňte nečíselné znaky
31 cnpj = ''.join(filter(str.isdigit, cnpj))
32
33 # Skontrolujte dĺžku
34 if len(cnpj) != 14:
35 return False
36
37 # Skontrolujte, či sú všetky číslice rovnaké
38 if len(set(cnpj)) == 1:
39 return False
40
41 # Preveďte na pole číslic
42 digits = [int(d) for d in cnpj]
43
44 # Overte prvú kontrolnú číslicu
45 first_check = calculate_check_digit(digits[:12])
46 if digits[12] != first_check:
47 return False
48
49 # Overte druhú kontrolnú číslicu
50 second_check = calculate_check_digit(digits[:13])
51 if digits[13] != second_check:
52 return False
53
54 return True
55
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 // Generujte prvých 12 číslic náhodne
10 for (int i = 0; i < 12; i++) {
11 digits[i] = random.nextInt(10);
12 }
13
14 // Vypočítajte prvú kontrolnú číslicu
15 digits[12] = calculateCheckDigit(digits, 12);
16
17 // Vypočítajte druhú kontrolnú číslicu
18 digits[13] = calculateCheckDigit(digits, 13);
19
20 // Naformátujte 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 // Odstráňte nečíselné znaky
45 cnpj = cnpj.replaceAll("\\D", "");
46
47 // Skontrolujte dĺžku
48 if (cnpj.length() != 14) {
49 return false;
50 }
51
52 // Skontrolujte, či sú všetky číslice rovnaké
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 // Preveďte na pole číslic
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 // Overte prvú kontrolnú číslicu
71 int firstCheck = calculateCheckDigit(digits, 12);
72 if (digits[12] != firstCheck) {
73 return false;
74 }
75
76 // Overte druhú kontrolnú číslicu
77 int secondCheck = calculateCheckDigit(digits, 13);
78 if (digits[13] != secondCheck) {
79 return false;
80 }
81
82 return true;
83 }
84}
85
Pri používaní tohto generátora a validátora CNPJ majte na pamäti nasledujúce úvahy:
CNPJ je národné registračné číslo pre podniky a právnické osoby v Brazílii. Používa sa na daňové účely, registráciu podnikov, otváranie bankových účtov a identifikáciu spoločností v oficiálnych transakciách.
Nie. CNPJs generované týmto nástrojom sú matematicky platné podľa algoritmu kontrolnej číslice, ale nie sú registrované u Brazílskej federálnej daňovej správy a nepatria skutočným spoločnostiam.
Nie. Na získanie legitímneho CNPJ pre podnik musíte registrovať u Brazílskej federálnej daňovej správy (Receita Federal) podľa oficiálneho postupu. Vygenerované CNPJs sú určené iba na testovacie účely.
Aby ste overili, či je CNPJ registrované na skutočnú spoločnosť, musíte sa obrátiť na databázu Brazílskej federálnej daňovej správy. Náš nástroj kontroluje iba to, či je CNPJ matematicky platné, nie či je oficiálne registrované.
CNPJs so všetkými rovnakými číslicami (ako 11.111.111/1111-11) sú automaticky považované za neplatné, aj keď matematicky prejdú algoritmom kontrolnej číslice. Toto je pravidlo stanovené Brazílskou federálnou daňovou správou.
Nie. Všetko spracovanie prebieha vo vašom prehliadači a neukladáme ani neprenášame žiadne z CNPJ, ktoré generujete alebo validujete.
Aktuálna verzia nástroja generuje jeden CNPJ naraz. Pre hromadné generovanie by ste mali zvážiť použitie jednej z programovacích knižníc uvedených v sekcii Alternatívy.
Toto je oficiálny formát vyžadovaný brazílskymi úradmi. Špecifické skupiny pomáhajú identifikovať rôzne komponenty CNPJ, ako je základné číslo a identifikátor pobočky.
Môžete implementovať algoritmus validácie vo vašom preferovanom programovacom jazyku pomocou kódových príkladov uvedených v sekcii Technická implementácia, alebo použiť jednu z knižníc uvedených v sekcii Alternatívy.
Áno. Vládne subjekty v Brazílii majú špecifické vzory CNPJ. Napríklad, federálne vládne subjekty často začínajú špecifickými číslicami. Náš generátor vytvára náhodné CNPJs a nevytvára špecificky CNPJs vládnych subjektov.
Náš nástroj na generovanie a validáciu CNPJ v Brazílii robí prácu s týmito identifikačnými číslami jednoduchou a efektívnou. Či už testujete aplikácie, pripravujete vzorové údaje alebo overujete existujúce CNPJs, tento nástroj poskytuje priamy a jednoduchý spôsob bez zložitosti integrácie API alebo pokročilých konfigurácií.
Vygenerujte svoj prvý platný CNPJ teraz alebo overte existujúci pomocou nášho jednoduchého rozhrania!
Objavte ďalšie nástroje, ktoré by mohli byť užitočné pre vašu pracovnú postupnosť