Generujte platná brazilská čísla CNPJ a validujte existující pomocí tohoto jednoduchého nástroje určeného pro vývojáře a testery pracující s brazilskými identifikačními čísly podniků.
Vygenerujte platné číslo CNPJ pro testovací účely.
Zkontrolujte, zda je číslo CNPJ platné.
CNPJ (Cadastro Nacional da Pessoa Jurídica) je jedinečné identifikační číslo přidělené podnikům a právnickým osobám v Brazílii. Tento generátor a validátor CNPJ pro Brazílii poskytuje jednoduchý a efektivní způsob, jak generovat platná čísla CNPJ pro testovací účely a validovat existující čísla CNPJ podle oficiálního brazilského algoritmu. Ať už jste vývojář testující aplikace, které zpracovávají brazilská podniková data, profesionál v oblasti QA vytvářející testovací případy, nebo kdokoli pracující s informacemi o brazilských společnostech, tento nástroj zjednodušuje práci s čísly CNPJ.
Na rozdíl od skutečných čísel CNPJ, která jsou oficiálně vydávána Brazilskou federální daňovou službou (Receita Federal), jsou CNPJ generované tímto nástrojem matematicky platné, ale nejsou registrovány na skutečné společnosti. To je činí ideálními pro testovací scénáře, vzorová data a vývojová prostředí, kde potřebujete správně formátovaná a platná čísla CNPJ, aniž byste používali skutečné identifikátory podniků.
CNPJ (Cadastro Nacional da Pessoa Jurídica) je 14místné identifikační číslo přidělené podnikům a právnickým osobám Brazilskou federální daňovou službou. Slouží jako brazilský ekvivalent registračního čísla společnosti nebo daňového identifikačního čísla. Každý podnik, který legálně působí v Brazílii, musí mít CNPJ, který se používá pro:
CNPJ je zásadním identifikátorem v brazilském podnikatelském ekosystému a objevuje se na oficiálních dokumentech, smlouvách a finančních záznamech.
Brazilsko CNPJ se skládá ze 14 číslic, obvykle formátovaných jako: XX.XXX.XXX/YYYY-ZZ
Struktura se rozpadá následovně:
Například správně formátované CNPJ může vypadat takto: 12.345.678/0001-95
Kontrolní číslice (poslední dvě číslice) se vypočítávají pomocí specifického matematického algoritmu, který ověřuje autentičnost CNPJ. Tento algoritmus zajišťuje, že náhodně generovaná čísla nemohou projít validací, pokud nebudou následovat správnou metodu výpočtu.
Algoritmus validace CNPJ používá vážený výpočet k určení kontrolních číslic. Zde je, jak to funguje:
Aby bylo CNPJ platné, obě kontrolní číslice musí odpovídat vypočítaným hodnotám.
Náš nástroj pro generování a validaci CNPJ nabízí dvě hlavní funkce: generování platných CNPJ a validaci existujících čísel CNPJ.
Chcete-li vygenerovat platné CNPJ pro testovací účely:
Vygenerované CNPJ bude dodržovat všechna pravidla matematické validace skutečného CNPJ, ale nebude registrováno u Brazilské federální daňové služby.
Chcete-li zkontrolovat, zda je CNPJ matematicky platný:
Validátor kontroluje, zda CNPJ dodržuje správný formát a zda kontrolní číslice odpovídají očekávaným hodnotám podle validačního algoritmu.
Tento nástroj pro generování a validaci CNPJ je obzvlášť užitečný v následujících scénářích:
Zatímco náš nástroj poskytuje jednoduché, webové řešení pro generování a validaci CNPJ, existuje několik alternativ v závislosti na vašich specifických potřebách:
Pro vývojáře, kteří integrují validaci CNPJ přímo do aplikací, je k dispozici několik knihoven specifických pro jazyk:
cpf_cnpj.js
, validator.js
python-cnpj
, validate-docbr
brazilianutils
, respect/validation
caelum-stella
, commons-validator
cpf_cnpj
, brazilian-rails
Tyto knihovny často poskytují další funkce, jako je formátování, analýza a validace dalších brazilských dokumentů.
Pro aplikace vyžadující validaci bez implementace algoritmu:
Pro vzdělávací účely nebo jednorázové validace můžete ručně aplikovat algoritmus:
Nicméně, ruční výpočet je náchylný k chybám a neefektivní pro pravidelné použití.
Generátor a validátor CNPJ v tomto nástroji jsou implementovány pomocí JavaScriptu, což zajišťuje rychlost a schopnost běžet zcela ve vašem prohlížeči bez odesílání vašich dat na server. Zde je, jak fungují základní funkce:
1function generateCNPJ() {
2 // Náhodně vygenerujte prvních 12 číslic
3 const digits = Array.from({ length: 12 }, () => Math.floor(Math.random() * 10));
4
5 // Vypočítejte první kontrolní číslici
6 const firstCheckDigit = calculateCheckDigit(digits);
7 digits.push(firstCheckDigit);
8
9 // Vypočítejte druhou kontrolní číslici
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 // Odstraňte nečíselné znaky
3 const cleanCNPJ = cnpj.replace(/\D/g, '');
4
5 // Zkontrolujte, zda má správnou délku
6 if (cleanCNPJ.length !== 14) return false;
7
8 // Zkontrolujte známé neplatné vzory (všechny stejné číslice)
9 if (/^(\d)\1+$/.test(cleanCNPJ)) return false;
10
11 // Převeďte na pole číslic
12 const digits = cleanCNPJ.split('').map(Number);
13
14 // Zkontrolujte první ověřovací číslici
15 const expectedFirstDigit = calculateCheckDigit(digits.slice(0, 12));
16 if (digits[12] !== expectedFirstDigit) return false;
17
18 // Zkontrolujte druhou ověřovací číslici
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 // Odstraňte nečíselné znaky
3 const cleanCNPJ = cnpj.replace(/\D/g, '');
4
5 // Formátujte podle délky
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
Tyto základní funkce mohou být implementovány v jiných programovacích jazycích podle stejné logiky. Zde jsou příklady v Pythonu a Javě:
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 # Náhodně vygenerujte prvních 12 číslic
15 digits = [random.randint(0, 9) for _ in range(12)]
16
17 # Vypočítejte první kontrolní číslici
18 first_check = calculate_check_digit(digits)
19 digits.append(first_check)
20
21 # Vypočítejte druhou kontrolní číslici
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 # Odstraňte nečíselné znaky
31 cnpj = ''.join(filter(str.isdigit, cnpj))
32
33 # Zkontrolujte délku
34 if len(cnpj) != 14:
35 return False
36
37 # Zkontrolujte, zda jsou všechny číslice stejné
38 if len(set(cnpj)) == 1:
39 return False
40
41 # Převeďte na seznam celých čísel
42 digits = [int(d) for d in cnpj]
43
44 # Validujte první kontrolní číslici
45 first_check = calculate_check_digit(digits[:12])
46 if digits[12] != first_check:
47 return False
48
49 # Validujte druhou kontrolní číslici
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 // Náhodně vygenerujte prvních 12 číslic
10 for (int i = 0; i < 12; i++) {
11 digits[i] = random.nextInt(10);
12 }
13
14 // Vypočítejte první kontrolní číslici
15 digits[12] = calculateCheckDigit(digits, 12);
16
17 // Vypočítejte druhou kontrolní číslici
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 // Odstraňte nečíselné znaky
45 cnpj = cnpj.replaceAll("\\D", "");
46
47 // Zkontrolujte délku
48 if (cnpj.length() != 14) {
49 return false;
50 }
51
52 // Zkontrolujte, zda jsou všechny číslice stejné
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 // Převeďte na pole celých čísel
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 // Validujte první kontrolní číslici
71 int firstCheck = calculateCheckDigit(digits, 12);
72 if (digits[12] != firstCheck) {
73 return false;
74 }
75
76 // Validujte druhou kontrolní číslici
77 int secondCheck = calculateCheckDigit(digits, 13);
78 if (digits[13] != secondCheck) {
79 return false;
80 }
81
82 return true;
83 }
84}
85
Při používání tohoto nástroje pro generování a validaci CNPJ mějte na paměti následující úvahy:
CNPJ je národní registrační číslo pro podniky a právnické osoby v Brazílii. Používá se pro daňové účely, registraci podniků, otevírání bankovních účtů a identifikaci společností v oficiálních transakcích.
Ne. CNPJ generované tímto nástrojem jsou matematicky platné podle algoritmu kontrolních číslic, ale nejsou registrovány u Brazilské federální daňové služby a nepatří skutečným společnostem.
Ne. Abyste získali legitimní CNPJ pro podnik, musíte se registrovat u Brazilské federální daňové služby (Receita Federal) podle oficiálního postupu. Vygenerované CNPJ jsou určeny pouze pro testovací účely.
Abyste ověřili, zda je CNPJ registrován na skutečnou společnost, musíte se obrátit na databázi Brazilské federální daňové služby. Náš nástroj pouze kontroluje, zda je CNPJ matematicky platný, nikoli zda je oficiálně registrován.
CNPJ se všemi stejnými číslicemi (například 11.111.111/1111-11) jsou automaticky považovány za neplatné, i když matematicky projdou algoritmem kontrolních číslic. To je pravidlo stanovené Brazilskou federální daňovou službou.
Ne. Všechny procesy probíhají ve vašem prohlížeči a my neukládáme ani nepřenášíme žádná CNPJ, která generujete nebo validujete.
Aktuální verze nástroje generuje jedno CNPJ najednou. Pro hromadné generování byste měli zvážit použití jedné z programovacích knihoven zmíněných v sekci Alternativy.
Toto je oficiální formát požadovaný brazilskými úřady. Specifické seskupení pomáhá identifikovat různé komponenty CNPJ, jako je základní číslo a identifikátor pobočky.
Můžete implementovat validační algoritmus ve svém preferovaném programovacím jazyce pomocí kódu uvedeného v sekci Technická implementace, nebo použít jednu z knihoven zmíněných v sekci Alternativy.
Ano. Vládní subjekty v Brazílii mají specifické vzory CNPJ. Například federální vládní subjekty často začínají na specifických číslicích. Náš generátor vytváří náhodné CNPJ a nevytváří specificky CNPJ pro vládní subjekty.
Náš nástroj pro generování a validaci CNPJ pro Brazílii činí práci s těmito identifikačními čísly jednoduchou a efektivní. Ať už testujete aplikace, připravujete vzorová data nebo validujete existující CNPJ, tento nástroj poskytuje přímé řešení bez složitosti integrací API nebo pokročilých konfigurací.
Vygenerujte své první platné CNPJ nyní nebo validujte existující pomocí našeho jednoduchého rozhraní!
Objevte další nástroje, které by mohly být užitečné pro vaši pracovní postup.