🛠️

Whiz Tools

Build • Create • Innovate

Brasiliansk CNPJ-generator og -valideringsværktøj til testning

Generer gyldige brasilianske CNPJ-numre og valider eksisterende med dette enkle værktøj designet til udviklere og testere, der arbejder med brasilianske virksomheds-ID'er.

Brasiliansk CNPJ Generator og Validator

CNPJ Generator

Generer et gyldigt brasiliansk CNPJ-nummer til testformål.

CNPJ Validator

Tjek om et brasiliansk CNPJ-nummer er gyldigt.

📚

Dokumentation

Brasiliansk CNPJ-generator og valideringsværktøj

Introduktion

Det brasilianske CNPJ (Cadastro Nacional da Pessoa Jurídica) er et unikt identifikationsnummer, der tildeles virksomheder og juridiske enheder i Brasilien. Dette brasilianske CNPJ-generator- og valideringsværktøj giver en enkel og effektiv måde at generere gyldige CNPJ-numre til testformål og validere eksisterende CNPJ-numre i henhold til den officielle brasilianske algoritme. Uanset om du er udvikler, der tester applikationer, der håndterer brasilianske virksomhedsdata, en QA-professionel, der opretter testcases, eller nogen, der arbejder med brasilianske virksomhedsoplysninger, gør dette værktøj processen med at arbejde med CNPJ-numre mere strømlinet.

I modsætning til rigtige CNPJ-numre, der officielt udstedes af den brasilianske føderale skatteforvaltning (Receita Federal), er de CNPJs, der genereres af dette værktøj, matematisk gyldige, men ikke registreret til faktiske virksomheder. Dette gør dem perfekte til testsituationer, prøve-data og udviklingsmiljøer, hvor du har brug for korrekt formaterede og gyldige CNPJ-numre uden at bruge rigtige virksomhedsidentifikatorer.

Hvad er et CNPJ?

Et CNPJ (Cadastro Nacional da Pessoa Jurídica) er et 14-cifret identifikationsnummer, der tildeles virksomheder og juridiske enheder af den brasilianske føderale skatteforvaltning. Det fungerer som den brasilianske ækvivalent til et virksomhedsregistreringsnummer eller skatte-ID. Hver virksomhed, der opererer lovligt i Brasilien, skal have et CNPJ, som bruges til:

  • Skatterapportering og overholdelse
  • Virksomhedsregistrering hos offentlige myndigheder
  • Åbning af bankkonti
  • Udstedelse af fakturaer og kvitteringer
  • Deltagelse i offentlige udbud
  • Import og eksport af varer

CNPJ'et er en essentiel identifikator i Brasiliens erhvervsliv og vises på officielle dokumenter, kontrakter og finansielle optegnelser.

CNPJ-struktur og format

Et brasiliansk CNPJ består af 14 cifre, typisk formateret som: XX.XXX.XXX/YYYY-ZZ

Strukturen opdeles som følger:

  1. De første 8 cifre (XX.XXX.XXX): Basisnummer tildelt virksomheden
  2. 4 cifre efter skråstregen (YYYY): Filialidentifikator (0001 for hovedkontor, andre numre for filialer)
  3. De sidste 2 cifre (ZZ): Kontrolcifre til validering

For eksempel kan et korrekt formateret CNPJ se sådan ud: 12.345.678/0001-95

Kontrolcifrene (de sidste to numre) beregnes ved hjælp af en specifik matematisk algoritme, der validerer CNPJ'ets ægthed. Denne algoritme sikrer, at tilfældigt genererede numre ikke kan bestå validering uden at følge den korrekte beregningsmetode.

Hvordan CNPJ-validering fungerer

CNPJ-valideringsalgoritmen bruger en vægtet beregning til at bestemme kontrolcifrene. Sådan fungerer det:

Beregning af første kontrolciffer

  1. Multiplicer hver af de første 12 cifre med en vægtsekvens: 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2
  2. Summer resultaterne af disse multiplikationer
  3. Beregn resten af denne sum divideret med 11
  4. Hvis resten er mindre end 2, er det første kontrolciffer 0; ellers er det 11 minus resten

Beregning af andet kontrolciffer

  1. Multiplicer hver af de første 13 cifre (inklusive det første kontrolciffer) med en vægtsekvens: 6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2
  2. Summer resultaterne af disse multiplikationer
  3. Beregn resten af denne sum divideret med 11
  4. Hvis resten er mindre end 2, er det andet kontrolciffer 0; ellers er det 11 minus resten

For at et CNPJ skal være gyldigt, skal begge kontrolcifre matche de beregnede værdier.

Hvordan man bruger dette værktøj

Vores brasilianske CNPJ-generator og valideringsværktøj tilbyder to hovedfunktioner: generering af gyldige CNPJs og validering af eksisterende CNPJ-numre.

Generering af et CNPJ

For at generere et gyldigt CNPJ til testformål:

  1. Naviger til "CNPJ-generator"-sektionen af værktøjet
  2. Klik på knappen "Generer CNPJ"
  3. Et matematisk gyldigt CNPJ vises i det formaterede display
  4. Brug knappen "Kopier" til at kopiere det genererede CNPJ til din udklipsholder

Det genererede CNPJ vil følge alle de matematiske valideringsregler for et rigtigt CNPJ, men er ikke registreret hos den brasilianske føderale skatteforvaltning.

Validering af et CNPJ

For at tjekke, om et CNPJ er matematisk gyldigt:

  1. Naviger til "CNPJ-validerings"-sektionen af værktøjet
  2. Indtast det CNPJ, du ønsker at validere, i inputfeltet
    • Værktøjet accepterer CNPJs med eller uden formatering (punkter, skråstreger og bindestreger)
  3. Klik på knappen "Valider"
  4. Værktøjet viser, om CNPJ'et er gyldigt eller ugyldigt baseret på kontrolcifferalgoritmen

Valideringsværktøjet tjekker, om CNPJ'et følger det korrekte format, og om kontrolcifrene matcher de forventede værdier i henhold til valideringsalgoritmen.

Anvendelsestilfælde

Dette brasilianske CNPJ-generator- og valideringsværktøj er særligt nyttigt i følgende scenarier:

Softwareudvikling og testning

  • Oprettelse af testdata: Generer gyldige CNPJs til at befolke testdatabaser uden at bruge rigtige virksomhedsidentifikatorer
  • Enhedstestning: Valider CNPJ-håndteringsfunktioner i din kode med kendte gyldige og ugyldige eksempler
  • QA-testning: Opret testcases til formularer og grænseflader, der kræver CNPJ-input
  • Integrationstestning: Test systemer, der udveksler data med brasilianske offentlige tjenester eller finansielle institutioner

Uddannelse og træning

  • Lære CNPJ-formatet: Forstå, hvordan brasilianske virksomhedsidentifikatorer er struktureret
  • Studie af algoritmer: Undersøg, hvordan kontrolciffer-validering fungerer i praksis
  • Data valideringsteknikker: Studer virkelige eksempler på krav til datavalidering

Databehandling

  • Datarenser: Valider CNPJs i eksisterende datasæt for at identificere potentielle fejl
  • Formularvalidering: Implementer klient- eller server-side validering for CNPJ-input
  • Dataanonymisering: Erstat rigtige CNPJs med gyldige genererede, når du forbereder datasæt til analyse

International forretning

  • Forberedelse til markedindtræden: Forstå brasilianske krav til virksomhedsidentifikation
  • Dokumentforberedelse: Sikre korrekt formatering ved forberedelse af forretningsdokumenter til Brasilien
  • Overholdelseskontrol: Bekræft, at indsamlede CNPJ-numre i det mindste er matematisk gyldige

Alternativer

Mens vores værktøj giver en simpel, browserbaseret løsning til generering og validering af CNPJs, er der flere alternativer afhængigt af dine specifikke behov:

Programmeringsbiblioteker

For udviklere, der integrerer CNPJ-validering direkte i applikationer, er der flere sprog-specifikke biblioteker tilgængelige:

  • 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

Disse biblioteker tilbyder ofte yderligere funktionalitet som formatering, parsing og validering af andre brasilianske dokumenter.

API-tjenester

For applikationer, der kræver validering uden at implementere algoritmen:

  • Brasilianske regerings-API'er (kræver registrering)
  • Kommercielle validerings-API'er, der inkluderer CNPJ-tjek
  • Virksomhedsinformationsservices, der validerer mod den officielle database

Manuel beregning

Til uddannelsesmæssige formål eller engangsvalideringer kan du manuelt anvende algoritmen:

  1. Uddrag de første 12 cifre af CNPJ'et
  2. Udfør de vægtede beregninger som beskrevet tidligere
  3. Sammenlign de beregnede kontrolcifre med de faktiske kontrolcifre

Men manuel beregning er fejlbehæftet og ineffektiv til regelmæssig brug.

Teknisk implementering

CNPJ-generatoren og -valideringen i dette værktøj er implementeret ved hjælp af JavaScript, hvilket gør det hurtigt og i stand til at køre helt i din browser uden at sende dine data til en server. Her er hvordan de centrale funktioner fungerer:

CNPJ-genereringsalgoritme

1function generateCNPJ() {
2  // Generer de første 12 cifre tilfældigt
3  const digits = Array.from({ length: 12 }, () => Math.floor(Math.random() * 10));
4  
5  // Beregn første kontrolciffer
6  const firstCheckDigit = calculateCheckDigit(digits);
7  digits.push(firstCheckDigit);
8  
9  // Beregn andet kontrolciffer
10  const secondCheckDigit = calculateCheckDigit(digits);
11  digits.push(secondCheckDigit);
12  
13  // Formater 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

CNPJ-valideringsalgoritme

1function validateCNPJ(cnpj) {
2  // Fjern ikke-numeriske tegn
3  const cleanCNPJ = cnpj.replace(/\D/g, '');
4  
5  // Tjek om det har den korrekte længde
6  if (cleanCNPJ.length !== 14) return false;
7  
8  // Tjek for kendte ugyldige mønstre (alle samme cifre)
9  if (/^(\d)\1+$/.test(cleanCNPJ)) return false;
10  
11  // Konverter til array af cifre
12  const digits = cleanCNPJ.split('').map(Number);
13  
14  // Tjek første kontrolciffer
15  const expectedFirstDigit = calculateCheckDigit(digits.slice(0, 12));
16  if (digits[12] !== expectedFirstDigit) return false;
17  
18  // Tjek andet kontrolciffer
19  const expectedSecondDigit = calculateCheckDigit(digits.slice(0, 13));
20  if (digits[13] !== expectedSecondDigit) return false;
21  
22  return true;
23}
24

CNPJ-formateringsfunktion

1function formatCNPJ(cnpj) {
2  // Fjern ikke-numeriske tegn
3  const cleanCNPJ = cnpj.replace(/\D/g, '');
4  
5  // Formater baseret på længde
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

Disse centrale funktioner kan implementeres i andre programmeringssprog ved at følge den samme logik. Her er eksempler i Python og Java:

Python-implementering

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    # Generer de første 12 cifre tilfældigt
15    digits = [random.randint(0, 9) for _ in range(12)]
16    
17    # Beregn første kontrolciffer
18    first_check = calculate_check_digit(digits)
19    digits.append(first_check)
20    
21    # Beregn andet kontrolciffer
22    second_check = calculate_check_digit(digits)
23    digits.append(second_check)
24    
25    # Formater 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    # Fjern ikke-numeriske tegn
31    cnpj = ''.join(filter(str.isdigit, cnpj))
32    
33    # Tjek længde
34    if len(cnpj) != 14:
35        return False
36    
37    # Tjek om alle cifre er de samme
38    if len(set(cnpj)) == 1:
39        return False
40    
41    # Konverter til liste af heltal
42    digits = [int(d) for d in cnpj]
43    
44    # Valider første kontrolciffer
45    first_check = calculate_check_digit(digits[:12])
46    if digits[12] != first_check:
47        return False
48    
49    # Valider andet kontrolciffer
50    second_check = calculate_check_digit(digits[:13])
51    if digits[13] != second_check:
52        return False
53    
54    return True
55

Java-implementering

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        // Generer de første 12 cifre tilfældigt
10        for (int i = 0; i < 12; i++) {
11            digits[i] = random.nextInt(10);
12        }
13        
14        // Beregn første kontrolciffer
15        digits[12] = calculateCheckDigit(digits, 12);
16        
17        // Beregn andet kontrolciffer
18        digits[13] = calculateCheckDigit(digits, 13);
19        
20        // Formater 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        // Fjern ikke-numeriske tegn
45        cnpj = cnpj.replaceAll("\\D", "");
46        
47        // Tjek længde
48        if (cnpj.length() != 14) {
49            return false;
50        }
51        
52        // Tjek om alle cifre er de samme
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        // Konverter til array af heltal
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        // Valider første kontrolciffer
71        int firstCheck = calculateCheckDigit(digits, 12);
72        if (digits[12] != firstCheck) {
73            return false;
74        }
75        
76        // Valider andet kontrolciffer
77        int secondCheck = calculateCheckDigit(digits, 13);
78        if (digits[13] != secondCheck) {
79            return false;
80        }
81        
82        return true;
83    }
84}
85

Vigtige overvejelser

Når du bruger dette CNPJ-generator- og valideringsværktøj, skal du holde følgende overvejelser i tankerne:

Juridiske og etiske overvejelser

  • Ikke til svindel: Genererede CNPJs bør aldrig bruges til svigagtige formål eller misrepræsentation
  • Kun til test: Disse CNPJs er kun til test- og udviklingsformål
  • Ikke registreret: Genererede CNPJs er matematisk gyldige, men ikke registreret hos brasilianske myndigheder
  • Ingen real-world gyldighed: De kan ikke bruges til faktisk virksomhedsregistrering eller skatteformål

Tekniske begrænsninger

  • Ingen virksomhedsoplysninger: Genererede CNPJs indeholder ikke rigtige virksomhedssektor koder eller lokalitetsoplysninger
  • Ingen databaseverificering: Valideren tjekker kun matematisk gyldighed, ikke registreringsstatus
  • Formatvariationer: Selvom værktøjet håndterer almindelige formateringsvariationer, kan nogle systemer kræve specifikke formater

Sikkerhedsovervejelser

  • Klient-side behandling: Al behandling sker i din browser; ingen data sendes til servere
  • Ingen datalagring: Genererede CNPJs gemmes ikke eller logges
  • Ingen personlige data: Værktøjet håndterer eller behandler ikke nogen personlige oplysninger

Ofte stillede spørgsmål

Hvad bruges et CNPJ til i Brasilien?

Et CNPJ er det nationale registreringsnummer for virksomheder og juridiske enheder i Brasilien. Det bruges til skatteformål, virksomhedsregistrering, åbning af bankkonti og identifikation af virksomheder i officielle transaktioner.

Er de CNPJs, der genereres af dette værktøj, rigtige?

Nej. De CNPJs, der genereres af dette værktøj, er matematisk gyldige i henhold til kontrolcifferalgoritmen, men de er ikke registreret hos den brasilianske føderale skatteforvaltning og tilhører ikke rigtige virksomheder.

Kan jeg bruge genererede CNPJs til min virksomhed?

Nej. For at få et legitimt CNPJ til en virksomhed skal du registrere dig hos den brasilianske føderale skatteforvaltning (Receita Federal) i henhold til den officielle proces. Genererede CNPJs er kun til testformål.

Hvordan kan jeg se, om et CNPJ tilhører en rigtig virksomhed?

For at verificere, om et CNPJ er registreret til en faktisk virksomhed, skal du konsultere den brasilianske føderale skatteforvaltnings database. Vores værktøj tjekker kun, om et CNPJ er matematisk gyldigt, ikke om det er officielt registreret.

Hvorfor afviser valideringsværktøjet et CNPJ med alle de samme cifre?

CNPJs med alle de samme cifre (som 11.111.111/1111-11) betragtes automatisk som ugyldige, selvom de matematisk passerer kontrolcifferalgoritmen. Dette er en regel fastsat af den brasilianske føderale skatteforvaltning.

Gemmer værktøjet de CNPJs, jeg genererer eller validerer?

Nej. Al behandling sker i din browser, og vi gemmer eller transmitterer ikke nogen af de CNPJs, du genererer eller validerer.

Kan jeg generere flere CNPJs ad gangen?

Den nuværende version af værktøjet genererer én CNPJ ad gangen. For massegenerering kan du overveje at bruge et af de programmeringsbiblioteker, der er nævnt i afsnittet Alternativer.

Hvorfor er formatet XX.XXX.XXX/XXXX-XX vigtigt?

Dette er det officielle format, der kræves af brasilianske myndigheder. Den specifikke gruppering hjælper med at identificere forskellige komponenter af CNPJ'et, såsom basisnummeret og filialidentifikatoren.

Hvordan validerer jeg et CNPJ programmatisk?

Du kan implementere valideringsalgoritmen i dit foretrukne programmeringssprog ved hjælp af kodeeksemplerne, der er angivet i afsnittet Teknisk implementering, eller bruge et af de biblioteker, der er nævnt i afsnittet Alternativer.

Er der særlige CNPJs for offentlige enheder?

Ja. Offentlige enheder i Brasilien har specifikke CNPJ-mønstre. For eksempel starter føderale offentlige enheder ofte med specifikke cifre. Vores generator skaber tilfældige CNPJs og genererer ikke specifikt CNPJs for offentlige enheder.

Referencer

  1. Brasiliansk føderal skatteforvaltning (Receita Federal do Brasil) - Officiel hjemmeside
  2. "CNPJ - Cadastro Nacional da Pessoa Jurídica" - Wikipedia
  3. Brasiliansk civilret (Lov nr. 10.406/2002) - Juridisk ramme for erhvervsenheder i Brasilien
  4. Brasiliansk virksomhedsregistreringsnormativ instruktion (IN RFB nr. 1863/2018) - Regler for CNPJ-registrering

Prøv det nu

Vores brasilianske CNPJ-generator og valideringsværktøj gør arbejdet med disse identifikationsnumre enkelt og effektivt. Uanset om du tester applikationer, forbereder prøve-data eller validerer eksisterende CNPJs, giver dette værktøj en ligetil løsning uden kompleksiteten ved API-integrationer eller avancerede konfigurationer.

Generer dit første gyldige CNPJ nu eller valider et eksisterende ved hjælp af vores enkle grænseflade!