สร้างหมายเลข CUIT ที่ถูกต้องของอาร์เจนตินา (รหัสประจำตัวผู้เสียภาษี) และตรวจสอบหมายเลขที่มีอยู่ด้วยเครื่องมือง่ายๆ ที่ออกแบบมาสำหรับสถานการณ์การทดสอบ ไม่มีฟีเจอร์ที่ซับซ้อน เพียงแค่การสร้างและตรวจสอบ CUIT อย่างตรงไปตรงมา
เครื่องมือที่ง่ายในการสร้างและตรวจสอบรหัสประจำตัวผู้เสียภาษี (CUIT) ของอาร์เจนตินาสำหรับวัตถุประสงค์ในการทดสอบ
รูปแบบ: XX-XXXXXXXX-X
CUIT (Código Único de Identificación Tributaria) คือรหัสประจำตัวผู้เสียภาษีที่ใช้ในอาร์เจนตินาสำหรับบุคคลและนิติบุคคล
The CUIT (Código Único de Identificación Tributaria) is Argentina's Unique Tax Identification Code, a critical identifier for all taxpayers in the Argentine tax system. This essential numeric code serves as the primary identifier for individuals and legal entities when interacting with AFIP (Federal Administration of Public Revenue) and conducting business operations throughout Argentina. Our Argentina CUIT Generator and Validator tool provides a simple, efficient solution for generating mathematically valid CUITs for testing purposes and validating existing CUIT numbers.
Whether you're a developer testing applications that process Argentine tax information, a QA specialist verifying data integrity, or a business analyst preparing test datasets, this tool streamlines the process of working with CUIT numbers without the complexity of API integrations or unnecessary features.
The Argentine CUIT follows a specific format consisting of 11 digits arranged as:
1XX-XXXXXXXX-X
2
This standardized format can be broken down into three distinct components:
The first two digits of a CUIT indicate the type of taxpayer:
Entity Type | Type Code | Description |
---|---|---|
Company | 30 | Corporations, LLCs, and other business entities |
Association | 33 | Non-profit associations |
Foundation | 30 | Charitable foundations |
Society | 30 | Partnerships and other society structures |
Government | 30 | Government entities and public institutions |
Foreign Company | 30 | Companies based outside Argentina |
Individual (Male) | 20 | Male individuals |
Individual (Female) | 27 | Female individuals |
Trust | 30 | Trust entities |
Understanding these type codes is essential for generating appropriate CUITs for different testing scenarios.
Our tool offers two primary functions: generating valid CUITs and validating existing ones. Here's how to use each feature effectively:
The generator creates random but mathematically valid CUITs that follow the official algorithm used by AFIP. These CUITs are perfect for testing systems that require valid CUIT formats, though they are not registered in official databases.
The validator checks both the format and the mathematical validity of the CUIT by verifying that the check digit matches the calculated value based on the preceding digits.
The verification digit (the last digit) of a CUIT is calculated using a specific algorithm designed to detect common errors in data entry. Understanding this algorithm helps explain how our tool validates CUITs:
Let's calculate the verification digit for a CUIT with type code 30 and identification number 12345678:
Therefore, the complete valid CUIT is 30-12345678-1.
The Argentina CUIT Generator and Validator tool serves multiple practical purposes across different professional contexts:
The following code examples demonstrate how to implement CUIT validation and generation in various programming languages:
1// CUIT Validation in JavaScript
2function validateCUIT(cuit) {
3 // Remove any non-digit characters
4 const cleanCuit = cuit.replace(/\D/g, '');
5
6 // Check if it has exactly 11 digits
7 if (cleanCuit.length !== 11) {
8 return false;
9 }
10
11 // Extract parts
12 const typeCode = cleanCuit.substring(0, 2);
13 const number = cleanCuit.substring(2, 10);
14 const providedVerificationDigit = parseInt(cleanCuit.substring(10, 11));
15
16 // Calculate verification digit
17 const multipliers = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2];
18 let sum = 0;
19
20 for (let i = 0; i < 10; i++) {
21 sum += parseInt(cleanCuit[i]) * multipliers[i];
22 }
23
24 const remainder = sum % 11;
25 let calculatedVerificationDigit;
26
27 if (remainder === 0) {
28 calculatedVerificationDigit = 0;
29 } else if (remainder === 1) {
30 calculatedVerificationDigit = 9;
31 } else {
32 calculatedVerificationDigit = 11 - remainder;
33 }
34
35 return calculatedVerificationDigit === providedVerificationDigit;
36}
37
38// Example usage
39console.log(validateCUIT('30-12345678-1')); // true or false
40
1# CUIT Generation in Python
2import random
3
4def generate_cuit(entity_type='COMPANY'):
5 # Define entity type codes
6 entity_types = {
7 'COMPANY': 30,
8 'ASSOCIATION': 33,
9 'FOUNDATION': 30,
10 'SOCIETY': 30,
11 'GOVERNMENT': 30,
12 'FOREIGN_COMPANY': 30,
13 'INDIVIDUAL_MALE': 20,
14 'INDIVIDUAL_FEMALE': 27,
15 'TRUST': 30
16 }
17
18 # Get type code for the selected entity type
19 type_code = entity_types.get(entity_type, 30)
20
21 # Generate random 8-digit number
22 number = ''.join([str(random.randint(0, 9)) for _ in range(8)])
23
24 # Calculate verification digit
25 multipliers = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2]
26 digits = f"{type_code}{number}"
27
28 sum_products = sum(int(digits[i]) * multipliers[i] for i in range(10))
29 remainder = sum_products % 11
30
31 if remainder == 0:
32 verification_digit = 0
33 elif remainder == 1:
34 verification_digit = 9
35 else:
36 verification_digit = 11 - remainder
37
38 # Format and return the CUIT
39 return f"{type_code}-{number}-{verification_digit}"
40
41# Example usage
42print(generate_cuit('INDIVIDUAL_MALE'))
43
1<?php
2// CUIT Validation in PHP
3function validateCUIT($cuit) {
4 // Remove any non-digit characters
5 $cleanCuit = preg_replace('/\D/', '', $cuit);
6
7 // Check if it has exactly 11 digits
8 if (strlen($cleanCuit) !== 11) {
9 return false;
10 }
11
12 // Extract parts
13 $typeCode = substr($cleanCuit, 0, 2);
14 $number = substr($cleanCuit, 2, 8);
15 $providedVerificationDigit = intval(substr($cleanCuit, 10, 1));
16
17 // Calculate verification digit
18 $multipliers = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2];
19 $sum = 0;
20
21 for ($i = 0; $i < 10; $i++) {
22 $sum += intval($cleanCuit[$i]) * $multipliers[$i];
23 }
24
25 $remainder = $sum % 11;
26
27 if ($remainder === 0) {
28 $calculatedVerificationDigit = 0;
29 } elseif ($remainder === 1) {
30 $calculatedVerificationDigit = 9;
31 } else {
32 $calculatedVerificationDigit = 11 - $remainder;
33 }
34
35 return $calculatedVerificationDigit === $providedVerificationDigit;
36}
37
38// Example usage
39echo validateCUIT('30-12345678-1') ? 'Valid' : 'Invalid';
40?>
41
1// CUIT Generation and Validation in Java
2import java.util.Random;
3
4public class CUITUtils {
5
6 // Entity type codes
7 private static final int COMPANY_CODE = 30;
8 private static final int ASSOCIATION_CODE = 33;
9 private static final int INDIVIDUAL_MALE_CODE = 20;
10 private static final int INDIVIDUAL_FEMALE_CODE = 27;
11
12 // Generate a valid CUIT
13 public static String generateCUIT(String entityType) {
14 int typeCode;
15
16 // Determine type code based on entity type
17 switch (entityType.toUpperCase()) {
18 case "INDIVIDUAL_MALE":
19 typeCode = INDIVIDUAL_MALE_CODE;
20 break;
21 case "INDIVIDUAL_FEMALE":
22 typeCode = INDIVIDUAL_FEMALE_CODE;
23 break;
24 case "ASSOCIATION":
25 typeCode = ASSOCIATION_CODE;
26 break;
27 case "COMPANY":
28 default:
29 typeCode = COMPANY_CODE;
30 break;
31 }
32
33 // Generate random 8-digit number
34 Random random = new Random();
35 StringBuilder number = new StringBuilder();
36 for (int i = 0; i < 8; i++) {
37 number.append(random.nextInt(10));
38 }
39
40 // Calculate verification digit
41 String digits = String.format("%02d%s", typeCode, number.toString());
42 int verificationDigit = calculateVerificationDigit(digits);
43
44 // Format and return the CUIT
45 return String.format("%02d-%s-%d", typeCode, number.toString(), verificationDigit);
46 }
47
48 // Calculate verification digit
49 private static int calculateVerificationDigit(String digits) {
50 int[] multipliers = {5, 4, 3, 2, 7, 6, 5, 4, 3, 2};
51 int sum = 0;
52
53 for (int i = 0; i < 10; i++) {
54 sum += Character.getNumericValue(digits.charAt(i)) * multipliers[i];
55 }
56
57 int remainder = sum % 11;
58
59 if (remainder == 0) {
60 return 0;
61 } else if (remainder == 1) {
62 return 9;
63 } else {
64 return 11 - remainder;
65 }
66 }
67
68 // Validate a CUIT
69 public static boolean validateCUIT(String cuit) {
70 // Remove any non-digit characters
71 String cleanCuit = cuit.replaceAll("\\D", "");
72
73 // Check if it has exactly 11 digits
74 if (cleanCuit.length() != 11) {
75 return false;
76 }
77
78 // Extract verification digit
79 int providedVerificationDigit = Character.getNumericValue(cleanCuit.charAt(10));
80
81 // Calculate expected verification digit
82 int calculatedVerificationDigit = calculateVerificationDigit(cleanCuit.substring(0, 10));
83
84 // Compare verification digits
85 return calculatedVerificationDigit == providedVerificationDigit;
86 }
87
88 public static void main(String[] args) {
89 // Example usage
90 String generatedCUIT = generateCUIT("COMPANY");
91 System.out.println("Generated CUIT: " + generatedCUIT);
92 System.out.println("Is valid: " + validateCUIT(generatedCUIT));
93 }
94}
95
1using System;
2using System.Text.RegularExpressions;
3
4public class CUITValidator
5{
6 // Validate a CUIT
7 public static bool ValidateCUIT(string cuit)
8 {
9 // Remove any non-digit characters
10 string cleanCuit = Regex.Replace(cuit, @"\D", "");
11
12 // Check if it has exactly 11 digits
13 if (cleanCuit.Length != 11)
14 {
15 return false;
16 }
17
18 // Extract verification digit
19 int providedVerificationDigit = int.Parse(cleanCuit.Substring(10, 1));
20
21 // Calculate expected verification digit
22 int[] multipliers = { 5, 4, 3, 2, 7, 6, 5, 4, 3, 2 };
23 int sum = 0;
24
25 for (int i = 0; i < 10; i++)
26 {
27 sum += int.Parse(cleanCuit.Substring(i, 1)) * multipliers[i];
28 }
29
30 int remainder = sum % 11;
31 int calculatedVerificationDigit;
32
33 if (remainder == 0)
34 {
35 calculatedVerificationDigit = 0;
36 }
37 else if (remainder == 1)
38 {
39 calculatedVerificationDigit = 9;
40 }
41 else
42 {
43 calculatedVerificationDigit = 11 - remainder;
44 }
45
46 return calculatedVerificationDigit == providedVerificationDigit;
47 }
48
49 // Format a CUIT with proper separators
50 public static string FormatCUIT(string cuit)
51 {
52 string cleanCuit = Regex.Replace(cuit, @"\D", "");
53
54 if (cleanCuit.Length != 11)
55 {
56 return cuit; // Return original if not 11 digits
57 }
58
59 return $"{cleanCuit.Substring(0, 2)}-{cleanCuit.Substring(2, 8)}-{cleanCuit.Substring(10, 1)}";
60 }
61}
62
The CUIT system was established in Argentina in the early 1990s as part of a broader tax reform initiative aimed at modernizing the country's fiscal infrastructure and reducing tax evasion. The Federal Administration of Public Revenue (AFIP), Argentina's tax authority, implemented the CUIT as a standardized identification system for all taxpayers.
Before the introduction of the CUIT, Argentina used various inconsistent identification systems for different types of taxpayers, making tax administration inefficient and creating opportunities for non-compliance. The CUIT unified these systems into a single, verifiable identifier that could be used across all tax-related activities.
Key milestones in the evolution of the CUIT system include:
The CUIT has become an essential element of Argentina's economic and financial systems, serving not only for tax purposes but also for banking, employment, social security, and business transactions.
A CUIT (Código Único de Identificación Tributaria) is Argentina's Unique Tax Identification Code assigned to individuals and legal entities for tax purposes. It consists of 11 digits in the format XX-XXXXXXXX-X, where the first two digits indicate the type of entity, the middle eight digits are an identification number, and the last digit is a verification digit.
A valid CUIT must:
Our CUIT validator tool can instantly check if a CUIT meets these criteria.
While similar in format, CUIT and CUIL serve different purposes:
Both follow the same format and verification algorithm, but they're used in different contexts.
No. The CUITs generated by this tool are mathematically valid but are not registered in AFIP's official database. They should only be used for testing, development, or educational purposes. Using fictional CUITs for official documents or transactions may constitute fraud.
The AFIP has assigned the same type code (30) to several entity types including companies, foundations, and government entities. This is part of the official classification system and doesn't affect the validity of the CUIT. The specific entity type is determined by additional registration information in AFIP's systems.
CUITs are permanent identifiers that generally don't change throughout the life of an individual or entity. However, in some specific cases like changes in legal status or gender reassignment, a new CUIT might be assigned.
Yes, but not through our tool. AFIP provides an official service called "Constancia de Inscripción" on their website where you can verify if a CUIT is officially registered and active. Our tool only validates the mathematical correctness of a CUIT.
Common errors include:
Our validator helps identify these issues by checking both format and mathematical validity.
Our tool allows you to select from various entity types before generating a CUIT. Simply choose the appropriate entity type from the dropdown menu and click "Generate CUIT." The tool will automatically use the correct type code for your selection.
No, our tool doesn't impose any limits on the number of CUITs you can generate or validate. It's designed for convenience in testing and educational scenarios where you might need multiple valid CUITs.
Administración Federal de Ingresos Públicos (AFIP). "Identificación Tributaria." https://www.afip.gob.ar/
Ministerio de Economía de la República Argentina. "Sistema Tributario Argentino." https://www.argentina.gob.ar/economia
Ley 11.683 de Procedimiento Tributario. Boletín Oficial de la República Argentina.
Resolución General AFIP 1817/2005. "Procedimientos de inscripción y registración."
Chicote, J. (2018). "Tax Identification Systems in Latin America: A Comparative Analysis." Journal of Tax Administration, 4(1), 88-106.
Gómez Sabaini, J.C., & Morán, D. (2016). "Tax Policy in Latin America: Assessment and Guidelines for Reform." United Nations Economic Commission for Latin America and the Caribbean (ECLAC).
The Argentina CUIT Generator and Validator tool provides a straightforward, efficient solution for working with Argentine tax identification codes in testing and development environments. By understanding the structure, format, and verification algorithm of CUITs, users can ensure data integrity and compliance with Argentine tax identification standards.
Whether you're developing software that interfaces with Argentine financial systems, testing data validation routines, or simply learning about international tax identification systems, our tool offers the functionality you need without unnecessary complexity.
Try generating a CUIT now or validate an existing one to experience the simplicity and effectiveness of our tool firsthand.
ค้นพบเครื่องมือเพิ่มเติมที่อาจมีประโยชน์สำหรับการทำงานของคุณ