Generátor a validátor CNPJ - Nástroj pro brazilská identifikační čísla firem
Generujte platná CNPJ čísla pro testování nebo okamžitě ověřujte brazilská identifikační čísla firem. Bezplatný nástroj s kontrolou ověřovacích číslic pro vývojáře pracující s Cadastro Nacional da Pessoa Jurídica.
Generátor a validátor brazilského CNPJ
Generátor CNPJ
Vygenerujte platné brazilské číslo CNPJ pro testovací účely.
Validátor CNPJ
Zkontrolujte, zda je brazilské číslo CNPJ platné.
Dokumentace
Porozumění brazilským číslům CNPJ
CNPJ (Cadastro Nacional da Pessoa Jurídica) je brazilská verze firemního daňového identifikátoru — 14-místné číslo, které identifikuje každý právní podnikatelský subjekt v zemi. Pokud vyvíjíte software, který zpracovává brazilská obchodní data, rychle narazíte na tato čísla ve formulářích registrace, fakturách a integracích API.
Zde je to, co tento nástroj činí praktickým: generuje matematicky platné CNPJ pro testování bez použití skutečných identifikátorů společností. Když nastavujete testovací databázi s 1 000 záznamy nebo ladíte validační rutinu ve 2 hodiny ráno, potřebujete CNPJ, které projdou algoritmickými kontrolami, ale náhodně neodpovídají skutečným podnikům. Přesně to tento nástroj generuje.
Čísla vytvořená zde dodržují oficiální validační algoritmus Receita Federal (brazilské federální daňové správy). Mají správné kontrolní číslice a správné formátování — jsou jen nezaregistrované vládní databázi. Můžete je chápat jako syntakticky správná testovací data, která nevytvoří problémy s dodržováním předpisů ve vývojovém prostředí.
Co je CNPJ a proč je důležitý
CNPJ slouží jako identifikátor společností v Brazílii – podobně jako EIN ve Spojených státech nebo registrační číslo společnosti ve Spojeném království. Každý podnikatelský subjekt, který v Brazílii legálně působí, musí mít jeden, vydaný Receita Federal (Federálním finančním úřadem).
Setkáte se s CNPJ v těchto situacích:
- Zpracování plateb: Brazilské platební brány vyžadují validaci CNPJ pro obchodní účty
- Daňová shoda: Každá faktura vydaná v Brazílii musí obsahovat platné CNPJ
- Obchodní registrace: Státní agentury používají CNPJ ke sledování právnických osob v systémech
- Bankovní operace: Otevírání firemních účtů nebo zpracování mezinárodních převodů
- Import/export: Celní dokumentace vyžaduje ověření CNPJ
- Vládní zakázky: Systémy veřejných výběrových řízení ověřují CNPJ před přijetím nabídek
Ze své zkušenosti s brazilskými e-commerce platformami vím, že jedním z nejběžnějších integračních bodů je tok pokladny, kde uživatelé zadávají své CNPJ pro firemní nákupy. Vaše validační logika musí zachytit formátové chyby ještě předtím, než je zachytí platební procesor – jinak uvidíte neúspěšné transakce, kterým by bylo možné předejít.
Struktura a formát CNPJ
CNPJ se skládá z 14 číslic formátovaných jako: XX.XXX.XXX/YYYY-ZZ
Rozložení struktury:
- Prvních 8 číslic (XX.XXX.XXX): Základní registrační číslo jedinečně přiřazené společnosti
- Další 4 číslice (/YYYY): Identifikátor pobočky nebo provozovny—
/0001označuje ústředí, zatímco/0002,/0003reprezentují pobočky - Poslední 2 číslice (-ZZ): Ověřovací číslice vypočítané pomocí váhového algoritmu
Příklad: 12.345.678/0001-95
Co je zajímavé na identifikátoru pobočky: když společnost otevře více poboček, každá dostane stejných prvních 8 číslic, ale jiné číslo pobočky. Takže pokud maloobchodní řetězec má 50 prodejen, budou mít CNPJ končící /0001 až /0050, všechny se sdíleným základním číslem. To usnadňuje identifikaci, že více CNPJ patří stejné mateřské organizaci.
Kontrolní číslice nejsou náhodné—jsou vypočítány pomocí algoritmu modulus-11 s konkrétními váhovými sekvencemi. Toto návrhové řešení, běžné v brazilských administrativních dokumentech, činí matematicky obtížným falšovat platná čísla nebo je náhodně vytvořit překlepy.
Jak funguje validace CNPJ
Validační algoritmus používá výpočet s váženým modulem 11. Zde je logika pozadí:
Výpočet prvního kontrolního čísla
- Vezměte prvních 12 číslic a vynásobte je vahami:
5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2 - Sečtěte všechny součiny
- Vydělte součet 11 a zjistěte zbytek
- Pokud je zbytek < 2, kontrolní číslo je 0; jinak je to
11 - zbytek
Výpočet druhého kontrolního čísla
- Vezměte prvních 13 číslic (včetně prvního kontrolního čísla) a vynásobte vahami:
6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2 - Sečtěte všechny součiny
- Vydělte 11 a zjistěte zbytek
- Pokud je zbytek < 2, kontrolní číslo je 0; jinak je to
11 - zbytek
Proč tento přístup funguje: Systém váženého násobení vytváří jedinečný vztah mezi všemi 12 základními číslicemi a výslednými kontrolními čísly. Změna jediné číslice v základním čísle vytváří odlišná kontrolní čísla, což zachytává běžné chyby při přepisu, jako je prohození dvou číslic (například psaní 12.345 místo 12.354).
Praktická poznámka: CNPJ se všemi identickými číslicemi (jako 11.111.111/1111-11) jsou automaticky neplatné, i když projdou matematickou kontrolou. Receita Federal tyto vzory výslovně vylučuje, aby zabránila triviálním případům.
Jak používat generátor a validátor CNPJ
Generování testovacích CNPJ
Potřebujete platné CNPJ pro testovací databázi? Zde je postup:
- Klikněte na "Generovat CNPJ"
- Nástroj okamžitě vytvoří matematicky platné číslo
- Klikněte na "Kopírovat" pro zkopírování do schránky
- Vložte do testovacích formulářů, databázových seedů nebo jednotkových testů
Každé vygenerované CNPJ projde všemi algoritmickými validačními kontrolami, ale není registrováno u Receita Federal. To znamená, že je můžete volně používat ve vývoji bez obav z náhodného použití identifikátoru skutečné společnosti.
Ověřování CNPJ čísel
Máte CNPJ, které potřebujete ověřit? Validátor to zvládne:
- Vložte nebo napište CNPJ do vstupního pole
- Nedělejte si starosti s formátováním—funguje s
12345678000195i12.345.678/0001-95 - Klikněte na "Ověřit"
- Okamžitě dostanete zpětnou vazbu o správnosti kontrolních číslic
Co validátor kontroluje: správnou délku (14 číslic), správné výpočty kontrolních číslic a vyloučení neplatných vzorů jako jsou čísla se všemi stejnými číslicemi. Co nekontroluje: zda je CNPJ registrováno v databázi vlády—to vyžaduje přímý dotaz na Receita Federal.
Reálné případy použití generátoru a validátoru CNPJ
Vývoj softwaru a testování
Osazení databáze: Při nastavování testovacího prostředí s realistickými testovacími daty potřebujete desítky nebo stovky platných CNPJ. Ruční vytváření je únavné a použití skutečných identifikátorů firem vyvolává obavy o soukromí. Generované CNPJ řeší oba problémy.
Jednotkové testování hraničních případů: Vaše validační funkce by měla zamítnout 00.000.000/0000-00, ale přijmout 11.222.333/0001-81. Mít generátor vám umožňuje rychle vytvářet jak platné, tak záměrně neplatné testovací případy pro ověření, zda vaše logika správně zpracovává hraniční podmínky.
Regresní testování QA: Při testování registračních formulářů nebo B2B platebních toků potřebují týmy QA čerstvá testovací data pro každý běh. Běžný problém, který jsem viděl: testovací prostředí se znečistí stejnými 5-6 CNPJ používanými opakovaně, což maskuje chyby, které se objevují pouze s konkrétními vzory číslic.
Testování integrace API: Pokud integrujete s brazilskými poskytovateli plateb jako PagSeguro nebo Mercado Pago, jejich sandboxová prostředí často vyžadují platný formát CNPJ. Matematika musí být správná, i když nezasahujete do produkčních databází.
Zpracování a validace dat
Čištění importovaných dat: Obdrželi jste CSV se 10 000 záznamy brazilských společností. Před zpracováním potřebujete identifikovat, které CNPJ jsou poškozené. Jejich průchodem validátorem označíte položky s překlepy, zkrácením nebo nesprávnými kontrolními číslicemi - ušetříte hodiny následného ladění.
Validace formuláře na straně klienta: Zachycení neplatných CNPJ před odesláním formuláře zlepšuje uživatelský zážitek. Nikdo nechce vyplňovat 20-ti polní registrační formulář jen proto, aby dostal chybu při odeslání, protože přehodil dvě číslice v CNPJ.
Anonymizace dat pro analýzu: Při přípravě produkčních dat pro sdílení s analytickými týmy nebo externími partnery potřebujete nahradit skutečné CNPJ platnými, ale falešnými. To zachová referenční integritu vašeho datového souboru a zároveň chrání skutečné identity podniků.
Mezinárodní obchodní operace
Porozumění brazilským požadavkům: Pokud expandujete na brazilský trh, setkáte se s požadavky na CNPJ ve smlouvách, fakturách a přepravních dokumentech. Mít nástroj pro experimentování s formátem vám pomůže pochopit, co vaše systémy potřebují zpracovávat.
Specifikace integrace třetích stran: Při kontrole dokumentace API brazilských poskytovatelů SaaS často uvidíte pole CNPJ v příkladech datových toků. Schopnost generovat platné testovací hodnoty vám pomůže rychleji prototypovat integrace.
Alternativní přístupy k ověřování CNPJ
Programovací knihovny
Pokud potřebujete ověřování CNPJ zabudované do logiky vaší aplikace, tyto knihovny implementují algoritmus kontrolního čísla:
- JavaScript/Node.js:
cpf-cnpj-validator(130k+ stažení týdně),validator.js(podporuje brazilské dokumenty) - Python:
validate-docbr(ověřuje CPF, CNPJ a další brazilské dokumenty),python-cnpj - PHP:
respect/validation(obsahuje pravidla pro CNPJ),brazilianutils - Java:
caelum-stella(komplexní ověřování brazilských dokumentů) - Ruby:
cpf_cnpjgem
Tyto knihovny typicky zpracovávají formátování, analýzu a ověřování pro více typů brazilských dokumentů (CPF, CNPJ atd.).
Oficiální ověřovací API
Pro produkční systémy, které potřebují ověřit skutečnou obchodní registraci:
- Veřejná služba Receita Federal: Konzultační CNPJ API umožňuje ověření proti oficiální databázi (vyžaduje řádné oprávnění a omezení rychlosti)
- Poskytovatelé dat třetích stran: Služby jako Serasa Experian a Boa Vista SCPC nabízejí komerční API, která vrací údaje o společnosti, registrační stav a úvěrové informace
Poznámka: Tyto služby kontrolují skutečnou registraci, ne jen matematickou platnost. Budete potřebovat řádné oprávnění a měli byste počítat s náklady API pro produkční použití.
Kdy použít který přístup
Použijte tento nástroj v prohlížeči, když: potřebujete rychlé ověření bez instalace závislostí, generování testovacích dat pro ukázky nebo učení se, jak ověřování CNPJ funguje.
Použijte knihovnu, když: vytváříte aplikaci, která potřebuje ověřování na straně klienta nebo serveru jako součást zpracování formuláře.
Použijte oficiální API, když: potřebujete ověřit, že CNPJ odpovídá skutečnému, aktivnímu obchodnímu subjektu s aktuálním registračním stavem.
Technické detaily implementace
Tento nástroj běží zcela ve vašem prohlížeči pomocí JavaScriptu — žádné serverové požadavky, žádná data neopouštějí váš počítač. Zde je popis algoritmů, které můžete přizpůsobit pro vlastní projekty:
Algoritmus generování CNPJ
1function generateCNPJ() {
2 // Náhodné vygenerování prvních 12 číslic
3 const digits = Array.from({ length: 12 }, () => Math.floor(Math.random() * 10));
4
5 // Výpočet první kontrolní číslice
6 const firstCheckDigit = calculateCheckDigit(digits);
7 digits.push(firstCheckDigit);
8
9 // Výpočet druhé kontrolní číslice
10 const secondCheckDigit = calculateCheckDigit(digits);
11 digits.push(secondCheckDigit);
12
13 // Formátování 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}
29Algoritmus validace CNPJ
1function validateCNPJ(cnpj) {
2 // Odstranění nečíselných znaků
3 const cleanCNPJ = cnpj.replace(/\D/g, '');
4
5 // Kontrola správné délky
6 if (cleanCNPJ.length !== 14) return false;
7
8 // Kontrola známých neplatných vzorů (všechny stejné číslice)
9 if (/^(\d)\1+$/.test(cleanCNPJ)) return false;
10
11 // Převod na pole číslic
12 const digits = cleanCNPJ.split('').map(Number);
13
14 // Kontrola první ověřovací číslice
15 const expectedFirstDigit = calculateCheckDigit(digits.slice(0, 12));
16 if (digits[12] !== expectedFirstDigit) return false;
17
18 // Kontrola druhé ověřovací číslice
19 const expectedSecondDigit = calculateCheckDigit(digits.slice(0, 13));
20 if (digits[13] !== expectedSecondDigit) return false;
21
22 return true;
23}
24Funkce formátování CNPJ
1function formatCNPJ(cnpj) {
2 // Odstranění nečíselných znaků
3 const cleanCNPJ = cnpj.replace(/\D/g, '');
4
5 // Formátování 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}
18Tyto 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ě:
Implementace v Pythonu
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é vygenerování prvních 12 číslic
15 digits = [random.randint(0, 9) for _ in range(12)]
16
17 # Výpočet první kontrolní číslice
18 first_check = calculate_check_digit(digits)
19 digits.append(first_check)
20
21 # Výpočet druhé kontrolní číslice
22 second_check = calculate_check_digit(digits)
23 digits.append(second_check)
24
25 # Formátování 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 # Odstranění nečíselných znaků
31 cnpj = ''.join(filter(str.isdigit, cnpj))
32
33 # Kontrola délky
34 if len(cnpj) != 14:
35 return False
36
37 # Kontrola, zda jsou všechny číslice stejné
38 if len(set(cnpj)) == 1:
39 return False
40
41 # Převod na seznam celých čísel
42 digits = [int(d) for d in cnpj]
43
44 # Validace první kontrolní číslice
45 first_check = calculate_check_digit(digits[:12])
46 if digits[12] != first_check:
47 return False
48
49 # Validace druhé kontrolní číslice
50 second_check = calculate_check_digit(digits[:13])
51 if digits[13] != second_check:
52 return False
53
54 return True
55Implementace v Javě
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é vygenerování prvních 12 číslic
10 for (int i = 0; i < 12; i++) {
11 digits[i] = random.nextInt(10);
12 }
13
14 // Výpočet první kontrolní číslice
15 digits[12] = calculateCheckDigit(digits, 12);
16
17 // Výpočet druhé kontrolní číslice
18 digits[13] = calculateCheckDigit(digits, 13);
19
20 // Formátování 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 // Odstranění nečíselných znaků
45 cnpj = cnpj.replaceAll("\\D", "");
46
47 // Kontrola délky
48 if (cnpj.length() != 14) {
49 return false;
50 }
51
52 // Kontrola, 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řevod 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 // Validace první kontrolní číslice
71 int firstCheck = calculateCheckDigit(digits, 12);
72 if (digits[12] != firstCheck) {
73 return false;
74 }
75
76 // Validace druhé kontrolní číslice
77 int secondCheck = calculateCheckDigit(digits, 13);
78 if (digits[13] != secondCheck) {
79 return false;
80 }
81
82 return true;
83 }
84}
85Důležitá omezení a úvahy
Co tento nástroj umí a neumí
Co ověřuje: Matematickou správnost – zda kontrolní číslice odpovídají výpočtu algoritmu.
Co neověřuje: Zda je CNPJ registrován u Receita Federal, zda patří aktivní společnosti nebo zda je spojen s názvem firmy, který očekáváte.
Představte si to jako kontrolu pravopisu versus kontrolu faktů. Tento nástroj vám řekne, zda je CNPJ "napsáno" správně podle matematických pravidel, ale nemůže vám říct, zda číslo odpovídá skutečné, aktivní obchodní entitě.
Zákonné a etické použití
Generované CNPJ jsou určeny pouze pro testování a vývoj. Jsou matematicky platné, ale nejsou registrovány u brazilských úřadů, což znamená:
- ✅ Bezpečné pro použití: Naplňování testovacích databází, unit testování validační logiky, QA prostředí, příklady kódu v dokumentaci
- ❌ Nikdy nepoužívat pro: Daňové přiznání, registraci společnosti, podepisování smluv, zpracování skutečných transakcí nebo falšování identity společnosti
Použití falešného CNPJ pro úřední účely není jen neetické – je to nezákonné podle brazilského práva a může vést k trestnímu stíhání za podvod.
Technická omezení, která je třeba znát
Náhodná generace má důsledky: Nástroj generuje prvních 12 číslic náhodně. Skutečné CNPJ vydávané Receita Federal následují interní vzory související s datem registrace, regionální kanceláří a typem podnikání. Generované čísla nebudou odpovídat těmto vzorům, což sofistikované validační systémy mohou označit.
Žádná sémantická validace: Platný formát CNPJ neznamená platný obchodní kontext. Například vládní subjekty mají specifické rozsahy CNPJ – tento generátor může náhodou vytvořit jeden, ale nebude významný.
Zpracování formátu: Validátor přijímá různé vstupní formáty (12345678000195, 12.345.678/0001-95), ale některé starší systémy očekávají přesné formátování. Vždy testujte s vašimi specifickými integračními požadavky.
Soukromí a bezpečnost
Veškeré zpracování probíhá na straně klienta ve vašem prohlížeči. Žádné CNPJ, které generujete nebo ověřujete, nejsou odesílány na servery, zaznamenávány nebo ukládány. Nástroj nevyžaduje, nezpracovává ani neuchovává žádné osobní údaje.
Často kladené dotazy k ověřování CNPJ
Jaký je rozdíl mezi validací a ověřováním CNPJ?
Validace kontroluje, zda je číslo matematicky správné - správný formát, správné kontrolní číslice, žádné neplatné vzory. Tento nástroj provádí validaci.
Ověřování kontroluje, zda je CNPJ registrováno v databázi Receita Federal. Ověřování vyžaduje dotaz do vládní databáze a není něco, co tento nástroj dělá.
Můžete mít zcela platné CNPJ, které není ověřeno (jako testovací čísla, která tento nástroj generuje), nebo neplatné CNPJ, které patří skutečné společnosti (protože někdo udělal překlep při zadávání).
Mohu použít generovaná CNPJ pro produkční testování?
Záleží na tom, co myslíte "produkčním testováním". Jsou v pořádku pro stagingové prostředí, zátěžové testování a předběžné QA. Ale pokud "produkčním testováním" myslíte testování se skutečnými transakcemi, vládními API nebo finančními systémy - pak ne, potřebujete skutečně registrovaná CNPJ.
Bezpečnější přístup: použijte generovaná CNPJ v izolovaném testovacím prostředí, poté přepněte na malou sadu skutečných testovacích CNPJ společností (které ovládáte) při testování produkčních integrací.
Proč validátor zamítá 11.111.111/1111-11?
I když CNPJ se všemi identickými číslicemi může matematicky vytvořit platné kontrolní číslice, Receita Federal tyto vzory výslovně vylučuje. Je to obchodní pravidlo, nikoli matematické. Totéž platí pro sekvenční vzory v některých validačních systémech.
Je to podobné tomu, jak mnoho systémů zamítá hesla jako "heslo123" i přesto, že splňují požadavky na délku - jsou technicky platná, ale prakticky nepřijatelná.
Jak zacházet s validací CNPJ v různých lokalizacích?
Brazilské společnosti podnikající mezinárodně někdy odstraní formátovací znaky při zadávání CNPJ do zahraničních systémů. Vaše validační logika by měla před kontrolou odstranit nečíselné znaky:
1const cleanCNPJ = input.replace(/\D/g, ''); // Odstraní vše kromě číslic
2Přijměte 12.345.678/0001-95, 12345678000195 a 12 345 678 0001 95 jako ekvivalentní vstupy.
Co CNPJ vs CPF validace?
CPF (Cadastro de Pessoas Físicas) je brazilské individuální daňové ID, zatímco CNPJ je pro společnosti. Používají různé algoritmy kontrolních číslic a délky (CPF má 11 číslic, CNPJ 14). Pokud vytváříte brazilskou aplikaci, která zpracovává obojí, budete potřebovat samostatné validační funkce - i když mnoho knihoven podporuje oba formáty.
Běžný vzor: umožněte uživatelům zadat CPF nebo CNPJ do stejného pole, poté detekujte typ podle délky po odstranění formátovacích znaků.
Funguje to pro zahraniční společnosti podnikající v Brazílii?
Zahraniční společnosti podnikající v Brazílii musí také získat CNPJ od Receita Federal. Jejich CNPJ dodržují stejný formát a validační pravidla jako domácí společnosti. Neexistuje žádný speciální formát CNPJ pro zahraniční společnosti.
Zahraniční společnosti však mohou mít dodatečné požadavky na dokumentaci a odlišné registrační procesy - poraďte se s brazilským obchodním advokátem pro konkrétnosti.
Mohu se dotázat vládní databáze na ověření registrace CNPJ?
Ano, Receita Federal poskytuje veřejný přístup k ověření základních informací o CNPJ prostřednictvím jejich Consulta Pública CNPJ služby. Můžete ručně vyhledávat CNPJ nebo s příslušným oprávněním používat jejich API pro programový přístup.
Poznámka: intenzivní využívání vyžaduje registraci a existují omezení rychlosti, aby se zabránilo zneužití.
Jak často se CNPJ mění?
CNPJ jsou trvalé identifikátory, které se nemění, když společnost změní název, adresu nebo vlastnickou strukturu. Pokud však společnost zavře a později se znovu zaregistruje, může obdržet nové CNPJ. Čísla poboček (část /XXXX) lze přidat při otevírání nových poboček, ale základní 8-místné číslo zůstává konstantní.
Reference a další zdroje
Oficiální vládní zdroje
- Receita Federal do Brasil - Oficiální portál - Oficiální webové stránky brazilské Federální daňové správy s registračními a ověřovacími službami CNPJ
- Consulta Pública CNPJ - Veřejné vyhledávání CNPJ - Oficiální vládní služba pro ověření stavu registrace CNPJ
- Normativní instrukce RFB č. 1863/2018 - Právní předpisy upravující registraci a používání CNPJ v Brazílii
Technické normy a dokumentace
- Algoritmy modulární aritmetiky - Výpočet kontrolní číslice používá modulární aritmetiku, standardní přístup pro validační číslice
- ISO/IEC 7064 - Mezinárodní standard pro systémy kontrolních číslic, který ovlivnil návrh brazilské validace dokumentů
- Brazilský občanský zákoník (Zákon č. 10.406/2002) - Právní rámec definující klasifikace obchodních subjektů vyžadujících registraci CNPJ
Zdroje pro vývojáře
- Registr balíčků NPM - npmjs.com - Úložiště knihoven JavaScript včetně validátorů brazilských dokumentů
- PyPI (Python Package Index) - pypi.org - Knihovny Python pro validaci CNPJ a zpracování brazilských dokumentů
- GitHub - Open-source implementace validace CNPJ v několika programovacích jazycích
Začněte generovat a ověřovat CNPJs
Ať už budujete brazilskou e-commerce platformu, testujete platební integrace s Mercado Pago, nebo jen potřebujete pochopit, jak funguje ověřování CNPJ, tento nástroj vám poskytuje okamžitý přístup k možnostem generování a ověřování.
Žádná instalace, žádné API klíče, žádné komplikované nastavení. Stačí otevřít prohlížeč a začít pracovat s platnými brazilskými identifikátory podnikatelských subjektů.