Generer gyldige argentinske CUIT/CUIL-numre til test eller valider eksisterende. Simpelt værktøj til udviklere, der arbejder med argentinske skatte- og arbejdsidentifikationsnumre.
Indtast et 8-cifret DNI-nummer eller brug den tilfældige generator
Den argentinske CUIT (Clave Única de Identificación Tributaria) og CUIL (Clave Única de Identificación Laboral) er unikke identifikationsnumre, der anvendes i Argentina til skatte- og beskæftigelsesformål. Disse 11-cifrede koder er essentielle for enkeltpersoner og virksomheder til at operere lovligt inden for det argentinske økonomiske system. Vores CUIT/CUIL Generator og Validator-værktøj giver en simpel, effektiv måde at generere gyldige CUIT/CUIL-numre til testformål og validere eksisterende numre for at sikre, at de overholder det officielle format og verificeringsalgoritme.
Uanset om du er udvikler, der tester applikationer, der håndterer argentinske skatte-ID'er, en QA-specialist, der verificerer systemfunktionalitet, eller blot har brug for at forstå, hvordan disse identifikationsnumre fungerer, tilbyder dette værktøj en ligetil løsning uden unødvendige kompleksiteter. Værktøjet har to primære funktioner: en generator, der opretter gyldige CUIT/CUIL-numre tilfældigt eller baseret på specifikke parametre, og en validator, der verificerer, om et givet CUIT/CUIL-nummer følger det korrekte format og beregningsregler.
Et gyldigt CUIT/CUIL-nummer består af 11 cifre, der typisk vises i formatet XX-XXXXXXXX-X:
Typekode (de første 2 cifre): Angiver enhedstypen
DNI-nummer (de midterste 8 cifre): For enkeltpersoner er dette deres nationale identitetsdokumentnummer (DNI), der er polstret med foranstillede nuller, hvis det er nødvendigt for at nå 8 cifre. For virksomheder er dette et unikt tildelt nummer.
Verifikationsciffer (det sidste ciffer): Et kontrolciffer, der beregnes ved hjælp af en specifik algoritme for at validere hele nummeret.
Verifikationscifferet beregnes ved hjælp af følgende algoritme:
Matematisk kan dette udtrykkes som:
Hvor:
Vælg fanen "Generator" øverst i værktøjets interface.
Vælg en Typekode fra dropdown-menuen:
Indtast et DNI-nummer (valgfrit):
Generer tilfældigt DNI (valgfrit):
Se det genererede CUIT/CUIL:
Kopier resultatet:
Vælg fanen "Validator" øverst i værktøjets interface.
Indtast CUIT/CUIL for validering:
Klik på "Valider" knappen:
Se valideringsresultatet:
Yderligere information:
Softwareudvikling: Generer gyldige CUIT/CUIL-numre til at teste applikationer, der håndterer argentinske skatteidentifikationer, såsom:
Databasebefolkning: Opret realistiske testdata til systemer, der gemmer argentinske brugeroplysninger, hvilket sikrer, at databasebegrænsninger og valideringsregler fungerer korrekt.
Test af formularvalidering: Test inputvalidering for webformularer, der indsamler CUIT/CUIL-oplysninger, og verificer, at de rigtige fejlmeddelelser vises for ugyldige indtastninger.
API-testning: Generer gyldige payloads til API-endepunkter, der kræver CUIT/CUIL-numre, og sikr, at dine integrationstests bruger gyldige data.
QA-automatisering: Inkorporer CUIT/CUIL-generation i automatiserede testscript for at skabe dynamiske testtilfælde i stedet for at bruge statiske testdata.
Læring af valideringsalgoritmer: Forstå, hvordan kontrolcifferalgoritmer fungerer i praksis ved at se CUIT/CUIL-verifikationsprocessen i aktion.
Undervisning i datavalidering: Brug som et uddannelsesmæssigt eksempel, når du underviser nye udviklere i formularvalideringsteknikker.
Forståelse af argentinske forretningskrav: Lær om identifikationssystemet, der anvendes i Argentina til international forretningsudvikling.
Mens vores værktøj giver en ligetil måde at generere og validere CUIT/CUIL-numre på, er der alternative tilgange, du måske overvejer:
Officiel regeringsvalidering: For produktionsmiljøer skal du altid validere CUIT/CUIL-numre mod den officielle AFIP (Administración Federal de Ingresos Públicos) database, når det er muligt.
Biblioteker og pakker: Flere programmeringssprog har biblioteker, der specifikt er designet til argentinsk skatte-ID-validering:
validar-cuit
npm-pakkeafip-php
bibliotekpy-cuit
pakkeManuel beregning: Til uddannelsesmæssige formål kan du beregne verifikationscifferet manuelt ved hjælp af algoritmen, der er beskrevet tidligere.
Omfattende forretningsvalideringstjenester: For virksomhedsapplikationer kan du overveje at bruge omfattende valideringstjenester, der ikke kun kontrollerer formatet, men også verificerer eksistensen og status for den enhed, der er knyttet til CUIT/CUIL.
CUIT/CUIL-identifikationssystemet i Argentina har udviklet sig betydeligt siden sin begyndelse:
CUIT (Clave Única de Identificación Tributaria) blev først introduceret i Argentina i 1970'erne som en del af bestræbelserne på at modernisere skatteopkrævningssystemet. Den Føderale Administration for Offentlige Indtægter (AFIP) implementerede denne unikke identifikator for mere effektivt at spore skatteydere og reducere skatteunddragelse.
CUIL (Clave Única de Identificación Laboral) blev senere introduceret for specifikt at identificere arbejdstagere i socialsikringssystemet, hvilket skabte en adskillelse mellem skatteidentifikation og arbejdsidentifikation, mens formatet forblev ensartet.
I 1990'erne, da Argentina gennemgik betydelige økonomiske reformer, blev CUIT/CUIL-systemet stadig vigtigere for at spore økonomisk aktivitet. Systemet blev yderligere digitaliseret, og online verificeringssystemer blev implementeret.
I begyndelsen af 2000'erne så integrationen af CUIT/CUIL-systemet med forskellige digitale offentlige tjenester, hvilket gjorde det til en essentiel komponent i Argentinas e-regeringsinitiativer. Denne periode så også standardiseringen af den verificeringsalgoritme og format, der stadig er i brug i dag.
I de seneste år har AFIP forbedret sikkerheds- og verificeringsprocesserne for CUIT/CUIL-numre, implementeret mere sofistikerede valideringssystemer og integreret dem med andre offentlige databaser. Systemet spiller nu en afgørende rolle i Argentinas bestræbelser på at bekæmpe skatteunddragelse og formalisere økonomien.
I dag anvendes CUIT/CUIL ikke kun til skatte- og beskæftigelsesformål, men også til en bred vifte af aktiviteter, herunder bank, ejendomshandler, forsyningstjenester og onlinekøb, hvilket gør det til en essentiel identifikator for både enkeltpersoner og virksomheder, der opererer i Argentina.
1def calculate_verification_digit(type_code, dni):
2 # Konverter til streng og sørg for, at DNI er 8 cifre med foranstillede nuller
3 type_code_str = str(type_code)
4 dni_str = str(dni).zfill(8)
5
6 # Kombiner typekode og DNI
7 digits = type_code_str + dni_str
8
9 # Vægte for hver position
10 weights = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2]
11
12 # Beregn summen af produkter
13 sum_products = sum(int(digits[i]) * weights[i] for i in range(10))
14
15 # Beregn verifikationsciffer
16 verification_digit = 11 - (sum_products % 11)
17
18 # Specialtilfælde
19 if verification_digit == 11:
20 verification_digit = 0
21 elif verification_digit == 10:
22 verification_digit = 9
23
24 return verification_digit
25
26def generate_cuit_cuil(type_code, dni=None):
27 import random
28
29 # Gyldige typekoder
30 valid_type_codes = [20, 23, 24, 27, 30, 33, 34]
31
32 if type_code not in valid_type_codes:
33 raise ValueError(f"Ugyldig typekode. Skal være en af: {valid_type_codes}")
34
35 # Generer tilfældigt DNI, hvis ikke angivet
36 if dni is None:
37 dni = random.randint(10000000, 99999999)
38
39 # Beregn verifikationsciffer
40 verification_digit = calculate_verification_digit(type_code, dni)
41
42 # Format CUIT/CUIL
43 return f"{type_code}-{str(dni).zfill(8)}-{verification_digit}"
44
45def validate_cuit_cuil(cuit_cuil):
46 # Fjern bindestreger, hvis til stede
47 cuit_cuil_clean = cuit_cuil.replace("-", "")
48
49 # Tjek grundlæggende format
50 if not cuit_cuil_clean.isdigit() or len(cuit_cuil_clean) != 11:
51 return False, "Ugyldigt format"
52
53 # Uddrag dele
54 type_code = int(cuit_cuil_clean[0:2])
55 dni = int(cuit_cuil_clean[2:10])
56 verification_digit = int(cuit_cuil_clean[10])
57
58 # Valider typekode
59 valid_type_codes = [20, 23, 24, 27, 30, 33, 34]
60 if type_code not in valid_type_codes:
61 return False, "Ugyldig typekode"
62
63 # Beregn og sammenlign verifikationsciffer
64 calculated_digit = calculate_verification_digit(type_code, dni)
65 if calculated_digit != verification_digit:
66 return False, "Ugyldigt verifikationsciffer"
67
68 return True, "Gyldig CUIT/CUIL"
69
70# Eksempel på brug
71print(generate_cuit_cuil(20, 12345678)) # Generer for specifik DNI
72print(generate_cuit_cuil(27)) # Generer med tilfældigt DNI
73print(validate_cuit_cuil("20-12345678-9")) # Valider en CUIT/CUIL
74
1function calculateVerificationDigit(typeCode, dni) {
2 // Konverter til streng og sørg for, at DNI er 8 cifre med foranstillede nuller
3 const typeCodeStr = typeCode.toString();
4 const dniStr = dni.toString().padStart(8, '0');
5
6 // Kombiner typekode og DNI
7 const digits = typeCodeStr + dniStr;
8
9 // Vægte for hver position
10 const weights = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2];
11
12 // Beregn summen af produkter
13 let sumProducts = 0;
14 for (let i = 0; i < 10; i++) {
15 sumProducts += parseInt(digits[i]) * weights[i];
16 }
17
18 // Beregn verifikationsciffer
19 let verificationDigit = 11 - (sumProducts % 11);
20
21 // Specialtilfælde
22 if (verificationDigit === 11) {
23 verificationDigit = 0;
24 } else if (verificationDigit === 10) {
25 verificationDigit = 9;
26 }
27
28 return verificationDigit;
29}
30
31function generateCuitCuil(typeCode, dni) {
32 // Gyldige typekoder
33 const validTypeCodes = [20, 23, 24, 27, 30, 33, 34];
34
35 if (!validTypeCodes.includes(typeCode)) {
36 throw new Error(`Ugyldig typekode. Skal være en af: ${validTypeCodes.join(', ')}`);
37 }
38
39 // Generer tilfældigt DNI, hvis ikke angivet
40 if (dni === undefined) {
41 dni = Math.floor(Math.random() * 90000000) + 10000000;
42 }
43
44 // Beregn verifikationsciffer
45 const verificationDigit = calculateVerificationDigit(typeCode, dni);
46
47 // Format CUIT/CUIL
48 return `${typeCode}-${dni.toString().padStart(8, '0')}-${verificationDigit}`;
49}
50
51function validateCuitCuil(cuitCuil) {
52 // Fjern bindestreger, hvis til stede
53 const cuitCuilClean = cuitCuil.replace(/-/g, '');
54
55 // Tjek grundlæggende format
56 if (!/^\d{11}$/.test(cuitCuilClean)) {
57 return { isValid: false, errorMessage: 'Ugyldigt format' };
58 }
59
60 // Uddrag dele
61 const typeCode = parseInt(cuitCuilClean.substring(0, 2));
62 const dni = parseInt(cuitCuilClean.substring(2, 10));
63 const verificationDigit = parseInt(cuitCuilClean.substring(10, 11));
64
65 // Valider typekode
66 const validTypeCodes = [20, 23, 24, 27, 30, 33, 34];
67 if (!validTypeCodes.includes(typeCode)) {
68 return { isValid: false, errorMessage: 'Ugyldig typekode' };
69 }
70
71 // Beregn og sammenlign verifikationsciffer
72 const calculatedDigit = calculateVerificationDigit(typeCode, dni);
73 if (calculatedDigit !== verificationDigit) {
74 return { isValid: false, errorMessage: 'Ugyldigt verifikationsciffer' };
75 }
76
77 return { isValid: true };
78}
79
80// Eksempel på brug
81console.log(generateCuitCuil(20, 12345678)); // Generer for specifik DNI
82console.log(generateCuitCuil(27)); // Generer med tilfældigt DNI
83console.log(validateCuitCuil("20-12345678-9")); // Valider en CUIT/CUIL
84
1import java.util.Arrays;
2import java.util.List;
3import java.util.Random;
4
5public class CuitCuilUtils {
6 private static final List<Integer> VALID_TYPE_CODES = Arrays.asList(20, 23, 24, 27, 30, 33, 34);
7 private static final int[] WEIGHTS = {5, 4, 3, 2, 7, 6, 5, 4, 3, 2};
8
9 public static int calculateVerificationDigit(int typeCode, int dni) {
10 // Konverter til streng og sørg for, at DNI er 8 cifre med foranstillede nuller
11 String typeCodeStr = String.valueOf(typeCode);
12 String dniStr = String.format("%08d", dni);
13
14 // Kombiner typekode og DNI
15 String digits = typeCodeStr + dniStr;
16
17 // Beregn summen af produkter
18 int sumProducts = 0;
19 for (int i = 0; i < 10; i++) {
20 sumProducts += Character.getNumericValue(digits.charAt(i)) * WEIGHTS[i];
21 }
22
23 // Beregn verifikationsciffer
24 int verificationDigit = 11 - (sumProducts % 11);
25
26 // Specialtilfælde
27 if (verificationDigit == 11) {
28 verificationDigit = 0;
29 } else if (verificationDigit == 10) {
30 verificationDigit = 9;
31 }
32
33 return verificationDigit;
34 }
35
36 public static String generateCuitCuil(int typeCode, Integer dni) {
37 if (!VALID_TYPE_CODES.contains(typeCode)) {
38 throw new IllegalArgumentException("Ugyldig typekode. Skal være en af: " + VALID_TYPE_CODES);
39 }
40
41 // Generer tilfældigt DNI, hvis ikke angivet
42 if (dni == null) {
43 Random random = new Random();
44 dni = 10000000 + random.nextInt(90000000);
45 }
46
47 // Beregn verifikationsciffer
48 int verificationDigit = calculateVerificationDigit(typeCode, dni);
49
50 // Format CUIT/CUIL
51 return String.format("%d-%08d-%d", typeCode, dni, verificationDigit);
52 }
53
54 public static ValidationResult validateCuitCuil(String cuitCuil) {
55 // Fjern bindestreger, hvis til stede
56 String cuitCuilClean = cuitCuil.replace("-", "");
57
58 // Tjek grundlæggende format
59 if (!cuitCuilClean.matches("\\d{11}")) {
60 return new ValidationResult(false, "Ugyldigt format");
61 }
62
63 // Uddrag dele
64 int typeCode = Integer.parseInt(cuitCuilClean.substring(0, 2));
65 int dni = Integer.parseInt(cuitCuilClean.substring(2, 10));
66 int verificationDigit = Integer.parseInt(cuitCuilClean.substring(10, 11));
67
68 // Valider typekode
69 if (!VALID_TYPE_CODES.contains(typeCode)) {
70 return new ValidationResult(false, "Ugyldig typekode");
71 }
72
73 // Beregn og sammenlign verifikationsciffer
74 int calculatedDigit = calculateVerificationDigit(typeCode, dni);
75 if (calculatedDigit != verificationDigit) {
76 return new ValidationResult(false, "Ugyldigt verifikationsciffer");
77 }
78
79 return new ValidationResult(true, null);
80 }
81
82 public static class ValidationResult {
83 private final boolean isValid;
84 private final String errorMessage;
85
86 public ValidationResult(boolean isValid, String errorMessage) {
87 this.isValid = isValid;
88 this.errorMessage = errorMessage;
89 }
90
91 public boolean isValid() {
92 return isValid;
93 }
94
95 public String getErrorMessage() {
96 return errorMessage;
97 }
98 }
99
100 public static void main(String[] args) {
101 // Eksempel på brug
102 System.out.println(generateCuitCuil(20, 12345678)); // Generer for specifik DNI
103 System.out.println(generateCuitCuil(27, null)); // Generer med tilfældigt DNI
104 System.out.println(validateCuitCuil("20-12345678-9").isValid()); // Valider en CUIT/CUIL
105 }
106}
107
1<?php
2
3function calculateVerificationDigit($typeCode, $dni) {
4 // Konverter til streng og sørg for, at DNI er 8 cifre med foranstillede nuller
5 $typeCodeStr = (string)$typeCode;
6 $dniStr = str_pad((string)$dni, 8, '0', STR_PAD_LEFT);
7
8 // Kombiner typekode og DNI
9 $digits = $typeCodeStr . $dniStr;
10
11 // Vægte for hver position
12 $weights = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2];
13
14 // Beregn summen af produkter
15 $sumProducts = 0;
16 for ($i = 0; $i < 10; $i++) {
17 $sumProducts += (int)$digits[$i] * $weights[$i];
18 }
19
20 // Beregn verifikationsciffer
21 $verificationDigit = 11 - ($sumProducts % 11);
22
23 // Specialtilfælde
24 if ($verificationDigit == 11) {
25 $verificationDigit = 0;
26 } else if ($verificationDigit == 10) {
27 $verificationDigit = 9;
28 }
29
30 return $verificationDigit;
31}
32
33function generateCuitCuil($typeCode, $dni = null) {
34 // Gyldige typekoder
35 $validTypeCodes = [20, 23, 24, 27, 30, 33, 34];
36
37 if (!in_array($typeCode, $validTypeCodes)) {
38 throw new Exception("Ugyldig typekode. Skal være en af: " . implode(', ', $validTypeCodes));
39 }
40
41 // Generer tilfældigt DNI, hvis ikke angivet
42 if ($dni === null) {
43 $dni = rand(10000000, 99999999);
44 }
45
46 // Beregn verifikationsciffer
47 $verificationDigit = calculateVerificationDigit($typeCode, $dni);
48
49 // Format CUIT/CUIL
50 return sprintf("%d-%08d-%d", $typeCode, $dni, $verificationDigit);
51}
52
53function validateCuitCuil($cuitCuil) {
54 // Fjern bindestreger, hvis til stede
55 $cuitCuilClean = str_replace('-', '', $cuitCuil);
56
57 // Tjek grundlæggende format
58 if (!preg_match('/^\d{11}$/', $cuitCuilClean)) {
59 return ['isValid' => false, 'errorMessage' => 'Ugyldigt format'];
60 }
61
62 // Uddrag dele
63 $typeCode = (int)substr($cuitCuilClean, 0, 2);
64 $dni = (int)substr($cuitCuilClean, 2, 8);
65 $verificationDigit = (int)substr($cuitCuilClean, 10, 1);
66
67 // Valider typekode
68 $validTypeCodes = [20, 23, 24, 27, 30, 33, 34];
69 if (!in_array($typeCode, $validTypeCodes)) {
70 return ['isValid' => false, 'errorMessage' => 'Ugyldig typekode'];
71 }
72
73 // Beregn og sammenlign verifikationsciffer
74 $calculatedDigit = calculateVerificationDigit($typeCode, $dni);
75 if ($calculatedDigit !== $verificationDigit) {
76 return ['isValid' => false, 'errorMessage' => 'Ugyldigt verifikationsciffer'];
77 }
78
79 return ['isValid' => true];
80}
81
82// Eksempel på brug
83echo generateCuitCuil(20, 12345678) . "\n"; // Generer for specifik DNI
84echo generateCuitCuil(27) . "\n"; // Generer med tilfældigt DNI
85var_dump(validateCuitCuil("20-12345678-9")); // Valider en CUIT/CUIL
86?>
87
CUIT (Clave Única de Identificación Tributaria) bruges til skatteidentifikation og tildeles både enkeltpersoner og juridiske enheder, der skal betale skat i Argentina. CUIL (Clave Única de Identificación Laboral) er specifikt for arbejdstagere og bruges til arbejds- og socialsikringsformål. Selvom de deler det samme format og beregningsalgoritme, tjener de forskellige administrative formål.
For enkeltpersoner:
For virksomheder og organisationer:
Verifikationscifferet beregnes ved hjælp af en vægtet sumalgoritme. Hvert af de første 10 cifre multipliceres med en tilsvarende vægt (5, 4, 3, 2, 7, 6, 5, 4, 3, 2), og resultaterne summeres. Verifikationscifferet er 11 minus resten, når denne sum divideres med 11. Specialtilfælde: hvis resultatet er 11, er verifikationscifferet 0; hvis resultatet er 10, er verifikationscifferet 9.
Nej, dette værktøj er designet til test- og uddannelsesformål. De genererede numre er matematisk gyldige i henhold til CUIT/CUIL-algoritmen, men de er ikke officielt registreret hos de argentinske skattemyndigheder (AFIP). For officiel CUIT/CUIL-registrering skal enkeltpersoner og virksomheder følge de rette juridiske procedurer gennem AFIP.
Validering kan mislykkes af flere grunde:
Mens CUIT/CUIL-numre almindeligvis skrives og vises med bindestreger (XX-XXXXXXXX-X), er bindestregerne ikke en del af det faktiske nummer til beregningsformål. Vores validator accepterer begge formater (med eller uden bindestreger) og vil korrekt validere begge formater.
Nej, DNI-delen skal altid være præcist 8 cifre. Hvis det faktiske DNI har færre cifre, skal det polstres med foranstillede nuller for at nå 8 cifre. For eksempel, hvis en persons DNI er 1234567, ville det i CUIT/CUIL blive repræsenteret som 01234567.
For at verificere, om et CUIT/CUIL er officielt registreret og aktivt, bør du bruge den officielle AFIP (Administración Federal de Ingresos Públicos) hjemmeside eller tjenester. Vores værktøj verificerer kun den matematiske gyldighed af nummeret, ikke dets officielle registreringsstatus.
Ja, du kan integrere algoritmen og logikken, der er demonstreret i dette værktøj, i dine kommercielle applikationer. CUIT/CUIL-valideringsalgoritmen er en offentlig standard. Dog anbefaler vi, at du implementerer ordentlig fejlhåndtering og overvejer yderligere validering mod officielle kilder, når det er nødvendigt.
Nej, dette værktøj gemmer ikke nogen af de oplysninger, der indtastes eller genereres. Al behandling sker på klientsiden i din browser, og ingen data sendes til eller gemmes på vores servere. Dette sikrer privatlivets fred og sikkerheden for de oplysninger, du indtaster.
AFIP (Administración Federal de Ingresos Públicos). "CUIT/CUIL/CDI." Officiel hjemmeside. https://www.afip.gob.ar/
Ministerio de Trabajo, Empleo y Seguridad Social. "CUIL - Clave Única de Identificación Laboral." https://www.argentina.gob.ar/trabajo
ANSES (Administración Nacional de la Seguridad Social). "Obtener mi CUIL." https://www.anses.gob.ar/
Boletín Oficial de la República Argentina. "Resolución General AFIP 2854/2010: Procedimiento. Clave Única de Identificación Tributaria (C.U.I.T.)."
Código Fiscal de la República Argentina. "Identificación og Registrering af Bidragydere."
Klar til at generere eller validere argentinske CUIT/CUIL-numre? Prøv vores værktøj nu og forenkle din testproces!
Opdag flere værktøjer, der måske kan være nyttige for din arbejdsgang.