Preskoči na sadržaj

Generator i Validator CNPJ-a - Alat za brazilski poslovni ID

Generirajte valjane CNPJ brojeve za testiranje ili trenutačno provjerite brazilske poslovne ID-ove. Besplatan alat s provjerom kontrolnih znamenki za razvojne programere koji rade s Nacionalnim registrom pravnih osoba.

Generator i validator brazilskog CNPJ-a

Generator CNPJ-a

Generiraj valjan brazilski CNPJ broj za testne svrhe.

Validator CNPJ-a

Provjerite je li brazilski CNPJ broj valjan.

Kalkulator učitavanja...
📚

Dokumentacija

Razumijevanje brazilskih CNPJ brojeva

CNPJ (Cadastro Nacional da Pessoa Jurídica) je brazilska verzija poreznog identifikacijskog broja pravnih osoba — 14-znamenkasti broj koji identificira svaki pravni poslovni subjekt u zemlji. Ako razvijate softver koji rukuje brazilskim poslovnim podacima, brzo ćete naići na ove brojeve u registracijskim obrascima, računima i API integracijama.

Evo što čini ovaj alat praktičnim: generira matematički valjane CNPJ brojeve za testiranje bez korištenja stvarnih identifikatora tvrtki. Kada postavljate testnu bazu podataka s 1.000 zapisa ili ispravljate rutinu validacije u 2 sata ujutro, trebate CNPJ brojeve koji prolaze algoritamske provjere, ali slučajno ne odgovaraju stvarnim tvrtkama. Upravo to ovaj alat generira.

Brojevi stvoreni ovdje slijede službeni algoritam Receita Federal (Brazilske federalne porezne službe) za validaciju. Imaju ispravne kontrolne znamenke i pravilno formatiranje — jednostavno nisu registrirani u vladnoj bazi podataka. Zamislite ih kao sintaktički ispravne testne podatke koji neće stvoriti probleme s usklađenošću u vašem razvojnom okruženju.

Što je CNPJ i zašto je važan

CNPJ služi kao identifikator pravnih osoba u Brazilu — sličan EIN-u u Sjedinjenim Državama ili broju registracije tvrtke u Ujedinjenom Kraljevstvu. Svaki poslovni subjekt koji legalno posluje u Brazilu mora imati CNPJ, koji izdaje Receita Federal (Federalna porezna služba).

Susreći ćete se s CNPJ-om kada:

  • Obrađujete plaćanja: brazilski gateway-i za plaćanje zahtijevaju CNPJ validaciju za račune prodavača
  • Porezno usklađivanje: svaki račun izdan u Brazilu mora uključivati valjan CNPJ
  • Registracija poslovanja: državne agencije koriste CNPJ za praćenje pravnih subjekata kroz sustave
  • Bankovne operacije: otvaranje poslovnih računa ili obrada međunarodnih transfera
  • Uvoz/izvoz: carinski dokumenti zahtijevaju provjeru CNPJ-a
  • Državni ugovori: sustavi javnih natječaja provjeravaju CNPJ prije prihvaćanja ponuda

U mom iskustvu rada s brazilskim platformama e-trgovine, jedna od najčešćih točaka integracije je tijek naplate gdje korisnici unose svoj CNPJ za poslovne kupnje. Vaša logika validacije treba uhvatiti formatske pogreške prije nego što to učini processor plaćanja — inače ćete vidjeti neuspjele transakcije koje su se mogle spriječiti.

Struktura i format CNPJ-a

CNPJ se sastoji od 14 znamenki formatiranih kao: XX.XXX.XXX/YYYY-ZZ

Raščlanjivanje strukture:

  1. Prvih 8 znamenki (XX.XXX.XXX): Osnovni registracijski broj jedinstveno dodijeljen tvrtki
  2. Sljedeće 4 znamenke (/YYYY): Identifikator podružnice ili poslovne jedinice—/0001 označava sjedište, dok /0002, /0003 predstavljaju lokacije podružnica
  3. Posljednje 2 znamenke (-ZZ): Kontrolne znamenke izračunate putem ponderiranog algoritma

Primjer: 12.345.678/0001-95

Zanimljivost o identifikatoru podružnice: kada tvrtka otvori više lokacija, svaka dobiva iste prve 8 znamenki, ali različit broj podružnice. Tako ako lanac maloprodaje ima 50 prodavaonica, imat će CNPJ-ove koji završavaju s /0001 do /0050, svi dijeleći isti osnovni broj. Ovo olakšava prepoznavanje da više CNPJ-ova pripada istoj matičnoj organizaciji.

Kontrolne znamenke nisu nasumične—računaju se koristeći modulus-11 algoritam sa specifičnim sekvencama ponderiranja. Ovaj dizajnerski pristup, uobičajen u brazilskim administrativnim dokumentima, čini matematički teškim krivotvorenje validnih brojeva ili slučajno stvaranje validnih brojeva putem tipfelera.

Kako zapravo radi CNPJ validacija

Algoritam validacije koristi izračun ponderiranog modula-11. Evo logike iza toga:

Izračun prvog kontrolnog broja

  1. Uzmite prvih 12 znamenki i pomnožite svaku ponderima: 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2
  2. Zbrojite sve produkte
  3. Podijelite zbroj s 11 i dobijte ostatak
  4. Ako je ostatak < 2, kontrolni broj je 0; inače je 11 - ostatak

Izračun drugog kontrolnog broja

  1. Uzmite prvih 13 znamenki (uključujući prvi kontrolni broj) i pomnožite ponderima: 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2
  2. Zbrojite sve produkte
  3. Podijelite s 11 i dobijte ostatak
  4. Ako je ostatak < 2, kontrolni broj je 0; inače je 11 - ostatak

Zašto ovaj pristup funkcionira: Sustav ponderiranog množenja stvara jedinstvenu vezu između svih 12 baznih znamenki i rezultirajućih kontrolnih brojeva. Promjena čak i jedne znamenke u baznom broju stvara različite kontrolne brojeve, što otkriva uobičajene pogreške pri prijenosu poput zamjene dviju znamenki (npr. upisivanje 12.345 umjesto 12.354).

Praktična napomena: CNPJ-ovi sa svim identičnim znamenkama (poput 11.111.111/1111-11) automatski su nevažeći, čak i ako prođu matematičku provjeru. Receita Federal izričito isključuje ove obrasce kako bi spriječila trivijalne slučajeve.

Kako koristiti CNPJ Generator i Validator

Generiranje testnih CNPJ-ova

Trebate valjan CNPJ za svoju testnu bazu podataka? Evo kako:

  1. Kliknite "Generiraj CNPJ"
  2. Alat trenutno stvara matematički valjan broj
  3. Kliknite "Kopiraj" da ga spremite u međuspremnik
  4. Zalijepite ga u svoje testne obrasce, sjemena baze podataka ili jedinične testove

Svaki generirani CNPJ prolazi sve algoritamske provjere valjanosti, ali nije registriran kod Receita Federala. To znači da ih možete slobodno koristiti u razvoju bez brige da biste slučajno koristili identifikator stvarne tvrtke.

Validacija CNPJ brojeva

Imate CNPJ koji trebate provjeriti? Validator to rješava:

  1. Zalijepite ili unesite CNPJ u polje za unos
  2. Ne brinite oko formatiranja—radi s 12345678000195 ili 12.345.678/0001-95
  3. Kliknite "Validiraj"
  4. Dobijte trenutačnu povratnu informaciju o ispravnosti kontrolnih znamenki

Što validator provjerava: pravilnu duljinu (14 znamenki), ispravne izračune kontrolnih znamenki i isključivanje nevažećih uzoraka poput brojeva s istim znamenkama. Što ne provjerava: je li CNPJ registriran u vladnoj bazi podataka—to zahtijeva izravno upitivanje Receita Federala.

Stvarni slučajevi upotrebe CNPJ generatora i validatora

Razvoj softvera i testiranje

Punjenje baze podataka: Prilikom postavljanja okruženja za testiranje s realnim podacima za testiranje, trebate deseci ili stotine važećih CNPJ-ova. Ručno stvaranje ovih je dosadno, a korištenje stvarnih identifikatora poduzeća predstavlja probleme privatnosti. Generirani CNPJ-ovi rješavaju oba problema.

Testiranje rubnih slučajeva jediničnih testova: Vaša funkcija validacije treba odbiti 00.000.000/0000-00, ali prihvatiti 11.222.333/0001-81. Posjedovanje generatora vam omogućava brzo stvaranje i važećih i namjerno nevažećih testnih slučajeva za provjeru ispravnosti logike u graničnim uvjetima.

QA regresijsko testiranje: Prilikom testiranja obrazaca registracije ili B2B tijekova plaćanja, QA timovi trebaju svježe testne podatke za svako pokretanje. Čest problem koji sam vidio: testna okruženja se onečiste istih 5-6 CNPJ-ova koji se ponavljaju, što maskira greške koje se pojavljuju samo s određenim uzorcima znamenki.

Testiranje API integracije: Ako integrirate s Brazilian payment processorima poput PagSegura ili Mercado Paga, njihova sandbox okruženja često zahtijevaju važeće CNPJ formatiranje. Matematika mora biti točna čak i kada ne pristupate produkcijskim bazama podataka.

Obrada i validacija podataka

Čišćenje uvezenih podataka: Primili ste CSV s 10.000 zapisa brazilskih poduzeća. Prije obrade, trebate identificirati koji su CNPJ-ovi neispravni. Prolaženje kroz validator označava unose s tipfaškim greškama, skraćivanjem ili netočnim kontrolnim znamenkama — štedi sate naknadnog ispravljanja pogrešaka.

Validacija forme na strani klijenta: Hvatanje nevažećih CNPJ-ova prije slanja obrasca poboljšava korisničko iskustvo. Nitko ne želi popunjavati registracijski obrazac s 20 polja samo da bi dobio pogrešku pri slanju jer je zamijenio dvije znamenke u svom CNPJ-u.

Anonimizacija podataka za analizu: Prilikom pripreme produkcijskih podataka za dijeljenje s analitičkim timovima ili vanjskim partnerima, trebate zamijeniti stvarne CNPJ-ove važećim, ali lažnim. Ovo zadržava referencijalnu cjelovitost vašeg skupa podataka dok štiti stvarne poslovne identitete.

Međunarodni poslovni poslovi

Razumijevanje brazilskih zahtjeva: Ako se širit na brazilsko tržište, susrest ćete se s CNPJ zahtjevima u ugovorima, računima i dokumentaciji za otpremu. Posjedovanje alata za eksperimentiranje s formatom pomaže vam razumjeti što vaši sustavi trebaju obrađivati.

Specifikacije integracije treće strane: Prilikom pregledavanja API dokumentacije brazilskih SaaS pružatelja, često ćete vidjeti CNPJ polja u primjerima payload-a. Mogućnost generiranja važećih testnih vrijednosti pomaže vam brže prototipirati integracije.

Alternativni pristupi validaciji CNPJ-a

Programske biblioteke

Ako vam je potrebna validacija CNPJ-a ugrađena u logiku vaše aplikacije, ove biblioteke implementiraju algoritam provjere brojeva:

Ove biblioteke tipično rukuju formatiranjem, parsiranjem i validacijom za više vrsta brazilskih dokumenata (CPF, CNPJ itd.).

Službene API-ji za provjeru

Za produkcijske sustave koji trebaju provjeriti stvarnu registraciju poslovanja:

  • Javna služba Receita Federal: Consulta CNPJ API omogućava provjeru prema službenoj bazi podataka (zahtijeva odgovarajuću autorizaciju i ograničavanje stope)
  • Pružatelji usluga treće strane: Usluge poput Serasa Experian i Boa Vista SCPC nude komercijalne API-je koji vraćaju detalje tvrtke, status registracije i informacije o kreditu

Napomena: Ove usluge provjeravaju stvarnu registraciju, a ne samo matematičku valjanost. Trebat ćete odgovarajuću autorizaciju i očekujte troškove API-ja za upotrebu u produkciji.

Kada koristiti koji pristup

Koristite ovaj alat u pregledniku kada: vam je potrebna brza validacija bez instaliranja ovisnosti, generiranje testnih podataka za demonstracije ili učenje kako funkcionira validacija CNPJ-a.

Koristite biblioteku kada: izrađujete aplikaciju koja treba validaciju na strani klijenta ili poslužitelja kao dio obrade obrasca.

Koristite službeni API kada: trebate provjeriti odgovara li CNPJ stvarnoj, aktivnoj poslovnoj entiteti s trenutnim statusom registracije.

Tehnički detalji implementacije

Ovaj alat se u potpunosti izvršava u vašem pregledniku pomoću JavaScripta — bez zahtjeva poslužitelja, bez slanja podataka izvan vašeg uređaja. Evo kako algoritmi rade ispod surface, sa kodom koji možete prilagoditi za vlastite projekte:

Algoritam generiranja CNPJ-a

1function generateCNPJ() {
2  // Generiraj prvih 12 znamenki nasumično
3  const digits = Array.from({ length: 12 }, () => Math.floor(Math.random() * 10));
4  
5  // Izračunaj prvu kontrolnu znamenku
6  const firstCheckDigit = calculateCheckDigit(digits);
7  digits.push(firstCheckDigit);
8  
9  // Izračunaj drugu kontrolnu znamenku
10  const secondCheckDigit = calculateCheckDigit(digits);
11  digits.push(secondCheckDigit);
12  
13  // Formatiraj 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

Algoritam validacije CNPJ-a

1function validateCNPJ(cnpj) {
2  // Ukloni ne-numeričke znakove
3  const cleanCNPJ = cnpj.replace(/\D/g, '');
4  
5  // Provjeri ima li ispravnu duljinu
6  if (cleanCNPJ.length !== 14) return false;
7  
8  // Provjeri poznate nevažeće uzorke (sve iste znamenke)
9  if (/^(\d)\1+$/.test(cleanCNPJ)) return false;
10  
11  // Pretvori u polje znamenki
12  const digits = cleanCNPJ.split('').map(Number);
13  
14  // Provjeri prvu verifikacijsku znamenku
15  const expectedFirstDigit = calculateCheckDigit(digits.slice(0, 12));
16  if (digits[12] !== expectedFirstDigit) return false;
17  
18  // Provjeri drugu verifikacijsku znamenku
19  const expectedSecondDigit = calculateCheckDigit(digits.slice(0, 13));
20  if (digits[13] !== expectedSecondDigit) return false;
21  
22  return true;
23}
24

Funkcija formatiranja CNPJ-a

1function formatCNPJ(cnpj) {
2  // Ukloni ne-numeričke znakove
3  const cleanCNPJ = cnpj.replace(/\D/g, '');
4  
5  // Formatiraj ovisno o duljini
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

Ove osnovne funkcije mogu se implementirati i u drugim programskim jezicima slijedeći istu logiku. Evo primjera u Pythonu i Javi:

Python implementacija

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    # Generiraj prvih 12 znamenki nasumično
15    digits = [random.randint(0, 9) for _ in range(12)]
16    
17    # Izračunaj prvu kontrolnu znamenku
18    first_check = calculate_check_digit(digits)
19    digits.append(first_check)
20    
21    # Izračunaj drugu kontrolnu znamenku
22    second_check = calculate_check_digit(digits)
23    digits.append(second_check)
24    
25    # Formatiraj 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    # Ukloni ne-numeričke znakove
31    cnpj = ''.join(filter(str.isdigit, cnpj))
32    
33    # Provjeri duljinu
34    if len(cnpj) != 14:
35        return False
36    
37    # Provjeri je li sve znamenke iste
38    if len(set(cnpj)) == 1:
39        return False
40    
41    # Pretvori u listu cijelih brojeva
42    digits = [int(d) for d in cnpj]
43    
44    # Validiraj prvu kontrolnu znamenku
45    first_check = calculate_check_digit(digits[:12])
46    if digits[12] != first_check:
47        return False
48    
49    # Validiraj drugu kontrolnu znamenku
50    second_check = calculate_check_digit(digits[:13])
51    if digits[13] != second_check:
52        return False
53    
54    return True
55

Java implementacija

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        // Generiraj prvih 12 znamenki nasumično
10        for (int i = 0; i < 12; i++) {
11            digits[i] = random.nextInt(10);
12        }
13        
14        // Izračunaj prvu kontrolnu znamenku
15        digits[12] = calculateCheckDigit(digits, 12);
16        
17        // Izračunaj drugu kontrolnu znamenku
18        digits[13] = calculateCheckDigit(digits, 13);
19        
20        // Formatiraj 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        // Ukloni ne-numeričke znakove
45        cnpj = cnpj.replaceAll("\\D", "");
46        
47        // Provjeri duljinu
48        if (cnpj.length() != 14) {
49            return false;
50        }
51        
52        // Provjeri je li sve znamenke iste
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        // Pretvori u polje cijelih brojeva
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        // Validiraj prvu kontrolnu znamenku
71        int firstCheck = calculateCheckDigit(digits, 12);
72        if (digits[12] != firstCheck) {
73            return false;
74        }
75        
76        // Validiraj drugu kontrolnu znamenku
77        int secondCheck = calculateCheckDigit(digits, 13);
78        if (digits[13] != secondCheck) {
79            return false;
80        }
81        
82        return true;
83    }
84}
85

Važna ograničenja i razmatranja

Što ovaj alat može i ne može napraviti

Što provjerava: Matematičku ispravnost — odgovaraju li kontrolne znamenke algoritmu izračuna.

Što ne provjerava: Je li CNPJ registriran kod Receite Federal, pripada li aktivnoj tvrtki ili je li povezan s nazivom tvrtke koji očekujete.

Zamislite to kao provjeru pravopisa nasuprot provjeri činjenica. Ovaj alat vam govori je li CNPJ "napisan" ispravno prema matematičkim pravilima, ali ne može reći odgovara li broju stvarne, aktivne poslovne jedinice.

Zakonska i etička upotreba

Generirani CNPJ-ovi su samo za testiranje i razvoj. Matematički su valjani, ali nisu registrirani kod brazilskih vlasti, što znači:

  • Sigurno za upotrebu: Popunjavanje testnih baza podataka, jedinično testiranje logike validacije, QA okruženja, primjeri koda u dokumentaciji
  • Nikada ne koristiti za: Podnošenje poreznih prijava, registraciju tvrtke, potpisivanje ugovora, obradu stvarnih transakcija ili lažno predstavljanje identiteta tvrtke

Korištenje lažnog CNPJ-a za službene svrhe nije samo neetično — već je nezakonito prema brazilskom zakonu i može rezultirati optužbama za prijevaru.

Tehničke limitations koje treba znati

Nasumično generiranje ima implikacije: Alat generira prvih 12 znamenki nasumično. Stvarni CNPJ-ovi koje izdaje Receita Federal slijede interne obrasce povezane s datumom registracije, regionalnom kancelarijom i vrstom tvrtke. Generirani brojevi neće odgovarati tim obrascima, što bi sofisticirani sustavi validacije mogli označiti.

Bez semantičke validacije: Valjan CNPJ format ne znači valjan poslovni kontekst. Na primjer, državne institucije imaju specifične CNPJ raspone — ovaj generator bi mogao slučajno stvoriti jedan, ali ne bi bio smislen.

Rukovanje formatom: Validator prihvaća različite ulazne formate (12345678000195, 12.345.678/0001-95), ali neki legacy sustavi očekuju točno formatiranje. Uvijek testirajte s vašim specifičnim zahtjevima integracije.

Privatnost i sigurnost

Sva obrada se odvija na klijentskoj strani u vašem pregledniku. Nijedan CNPJ koji generirate ili provjeravate nije poslan na poslužitelje, prijavljen ili pohranjen. Alat ne zahtijeva, ne rukuje niti obrađuje bilo koje osobne informacije.

Često postavljana pitanja o validaciji CNPJ-a

Koja je razlika između validacije i provjere CNPJ-a?

Validacija provjerava je li broj matematički ispravan — pravilnog formata, ispravnih kontrolnih znamenki, bez nevažećih uzoraka. Ovaj alat radi validaciju.

Provjera provjerava je li CNPJ registriran u bazi podataka Receita Federal. Provjera zahtijeva upit u vladinu bazu podataka i nije nešto što ovaj alat čini.

Možete imati potpuno valjan CNPJ koji nije verificiran (poput testnih brojeva koje ovaj alat generira), ili nevažeći CNPJ koji pripada stvarnoj tvrtki (jer je netko napravio pogrešku prilikom unosa).

Mogu li koristiti generirane CNPJ-ove za testiranje u produkciji?

Ovisi što mislite pod "testiranjem u produkciji." Oni su u redu za okruženja pripreme, opterećenjsko testiranje i testiranje prije lansiranja. Ali ako "testiranje u produkciji" znači testiranje sa stvarnim transakcijama, vladinim API-jima ili financijskim sustavima — onda ne, trebate stvarne registrirane CNPJ-ove.

Sigurniji pristup: koristite generirane CNPJ-ove u izoliranim testnim okruženjima, a zatim prebacite na mali skup stvarnih testnih CNPJ-ova tvrtki (koje kontrolirate) prilikom testiranja integracija u produkciji.

Zašto validator odbacuje 11.111.111/1111-11?

Čak i ako CNPJ sa svim identičnim znamenkama matematički može proizvesti valjane kontrolne znamenke, Receita Federal izričito isključuje ove uzorke. To je poslovno pravilo, ne matematičko. Isto vrijedi i za slijedne uzorke u nekim sustavima validacije.

Ovo je slično tome kako mnogi sustavi odbacuju lozinke poput "password123" čak i ako zadovoljavaju zahtjeve duljine — tehnički su valjane, ali praktički neprihvatljive.

Kako rukovati validacijom CNPJ-a u različitim lokalnim postavkama?

Brazilske tvrtke koje posluju međunarodno ponekad izbacuju formatne znakove prilikom unosa CNPJ-ova u strane sustave. Vaša logika validacije trebala bi ukloniti ne-numeričke znakove prije provjere:

1const cleanCNPJ = input.replace(/\D/g, ''); // Ukloni sve osim znamenki
2

Prihvatite 12.345.678/0001-95, 12345678000195 i 12 345 678 0001 95 kao ekvivalentne unose.

Što je s validacijom CNPJ-a u odnosu na CPF?

CPF (Cadastro de Pessoas Físicas) je brazilski osobni porezni identifikator, dok je CNPJ za tvrtke. Koriste različite algoritme kontrolnih znamenki i duljine (CPF ima 11 znamenki, CNPJ 14). Ako izrađujete brazilsku aplikaciju koja rukuje oboma, trebat ćete odvojene funkcije validacije — premda mnoge biblioteke podržavaju oba formata.

Uobičajeni uzorak: dopustite korisnicima unos CPF-a ili CNPJ-a u isto polje, zatim detektirajte koji tip na temelju duljine nakon uklanjanja formatnih znakova.

Vrijedi li ovo za strane tvrtke koje posluju u Brazilu?

Strane tvrtke koje posluju u Brazilu također moraju dobiti CNPJ od Receita Federal. Njihovi CNPJ-ovi slijede isti format i pravila validacije kao domaće tvrtke. Ne postoji poseban "format stranih tvrtki" za CNPJ.

Međutim, strane tvrtke mogu imati dodatne zahtjeve dokumentacije i različite procese registracije — konzultirajte brazilskog poslovnog odvjetnika za specifičnosti.

Mogu li uputiti upit u vladinu bazu podataka za provjeru registracije CNPJ-a?

Da, Receita Federal pruža javni pristup za provjeru osnovnih informacija CNPJ-a putem njihove Javne pretrage CNPJ-a. Možete ručno pregledavati CNPJ-ove ili, uz odgovarajuću autorizaciju, koristiti njihove API-je za programski pristup.

Napomena da intenzivno korištenje zahtijeva registraciju i postoje ograničenja stope kako bi se spriječila zlouporaba.

Koliko često se CNPJ-ovi mijenjaju?

CNPJ-ovi su trajni identifikatori koji se ne mijenjaju kada tvrtka promijeni naziv, adresu ili vlasničku strukturu. Međutim, ako tvrtka zatvori i kasnije se ponovno registrira, može dobiti novi CNPJ. Brojevi podružnica (dio /XXXX) mogu se dodati kako tvrtke otvaraju nova mjesta, ali osnovni 8-znamenkasti broj ostaje konstantan.

Reference i dodatni resursi

Službeni vladini izvori

  1. Receita Federal do Brasil - Službeni portal - Službena web stranica brazilske Savezne porezne službe s uslugama registracije i provjere CNPJ-a
  2. Consulta Pública CNPJ - Javno pretraživanje CNPJ-a - Službena vladina usluga za provjeru statusa CNPJ registracije
  3. Normativna uputa RFB br. 1863/2018 - Pravni propisi koji uređuju registraciju i upotrebu CNPJ-a u Brazilu

Tehnički standardi i dokumentacija

  1. Algoritmi modularne aritmetike - Izračun kontrolne znamenke koristi modulo 11 aritmetiku, standardni pristup validaciji znamenki
  2. ISO/IEC 7064 - Međunarodni standard za sustave kontrolnih znamenki koji je utjecao na dizajn validacije brazilskih dokumenata
  3. Brazilski građanski zakonik (Zakon br. 10.406/2002) - Pravni okvir koji definira klasifikacije poslovnih subjekata koje zahtijevaju CNPJ registraciju

Resursi za programere

  1. NPM registar paketa - npmjs.com - Spremište JavaScript biblioteka uključujući validatore brazilskih dokumenata
  2. PyPI (Python Package Index) - pypi.org - Python biblioteke za validaciju CNPJ-a i obradu brazilskih dokumenata
  3. GitHub - Otvoreni implementacije validacije CNPJ-a u više programskih jezika

Počnite generirati i provjeravati CNPJ-ove

Bez obzira radite li na brazilskoj e-commerce platformi, testirate integracije plaćanja s Mercado Pagom ili samo želite razumjeti kako funkcionira provjera CNPJ-a, ovaj alat vam pruža izravni pristup mogućnostima generiranja i provjere.

Bez instalacije, bez API ključeva, bez kompliciranog postavljanja. Samo otvorite preglednik i počnite raditi s valjanim brazilskim identifikatorima poduzeća.