Trình tạo và Kiểm tra CUIT Argentina | Kiểm tra Mã Số Thuế

Tạo và xác thực số CUIT Argentina để kiểm tra. Tạo các mã số thuế hợp lệ về mặt toán học với chữ số kiểm tra chính xác hoặc ngay lập tức xác minh các CUIT hiện có.

Trình tạo và Xác thực CUIT Argentina

Tạo các số CUIT Argentina có giá trị toán học để kiểm tra hoặc xác thực ngay các mã số thuế hiện có.

Trình tạo CUIT

Trình xác thực CUIT

Định dạng: XX-XXXXXXXX-X

Về CUIT

CUIT (Código Único de Identificación Tributaria) là mã số thuế được sử dụng tại Argentina cho cá nhân và pháp nhân.

  • Định dạng là XX-XXXXXXXX-X, trong đó X là các chữ số.
  • Hai chữ số đầu tiên cho biết loại thực thể (20 cho cá nhân nam, 27 cho cá nhân nữ, 30 cho các công ty, v.v.).
  • Chữ số cuối cùng là chữ số xác thực được tính toán bằng một thuật toán cụ thể dựa trên các chữ số trước đó.
📚

Tài liệu hướng dẫn

CUIT của Argentina là gì và Tại sao Nó Quan Trọng?

Mọi cá nhân và doanh nghiệp ở Argentina đều cần một CUIT (Código Único de Identificación Tributaria) để tương tác với cơ quan thuế của quốc gia, AFIP (Cục Quản lý Doanh thu Công cộng). Hãy coi nó như phiên bản của Argentina về Mã số Thuế hoặc EIN—không có CUIT nghĩa là không thể thực hiện các giao dịch kinh doanh chính thức, mở tài khoản ngân hàng, hoặc nộp thuế.

Khi bạn xây dựng các ứng dụng xử lý dữ liệu tài chính của Argentina, bạn sẽ nhanh chóng gặp phải các vấn đề về xác thực. CUIT có tuân theo đúng định dạng không? Chữ số kiểm tra có được tính toán chính xác không? Mã loại thực thể nào nên được sử dụng để kiểm tra? Những câu hỏi này liên tục xuất hiện trong quá trình phát triển và kiểm tra chất lượng.

Điều thường xảy ra là các nhà phát triển hoặc bỏ qua hoàn toàn việc xác thực CUIT (gây rủi ro cho tính toàn vẹn dữ liệu) hoặc lãng phí thời gian để tạo thủ công các số kiểm tra có thể không hợp lệ về mặt toán học. Công cụ này giải quyết cả hai vấn đề bằng cách tạo ra các CUIT được định dạng chính xác cho bất kỳ loại thực thể nào và xác thực các số hiện có so với thuật toán chính thức của Argentina.

Cấu Trúc Số CUIT

Định dạng CUIT của Argentina bao gồm 11 chữ số với một mẫu cụ thể: XX-XXXXXXXX-X

Chi tiết như sau:

  1. 2 chữ số đầu tiên: Chỉ số loại thực thể (như 20 cho nam giới, 27 cho nữ giới, 30 cho các công ty)
  2. 8 chữ số tiếp theo: Số nhận dạng duy nhất
  3. Chữ số cuối cùng: Một chữ số kiểm tra được tính toán bằng phép toán modulo 11—điều này giúp phát hiện hầu hết các lỗi đánh máy và nhập liệu

Điều thú vị về thiết kế này: chữ số xác minh không phải là ngẫu nhiên. Nó được tính từ 10 chữ số đầu tiên bằng cách nhân trọng số, có nghĩa là bạn có thể ngay lập tức nhận ra các số không hợp lệ mà không cần truy vấn cơ sở dữ liệu. Theo kinh nghiệm của tôi làm việc với các hệ thống thuế Mỹ Latinh, khả năng xác thực phía máy khách này giảm đáng kể các lệnh gọi API và cải thiện hiệu suất xác thực biểu mẫu.

Mã Loại CUIT

2 chữ số đầu tiên của CUIT cho biết loại người nộp thuế:

Loại Thực ThểMã LoạiMô Tả
Công Ty30Các tập đoàn, công ty TNHH và các thực thể kinh doanh khác
Hiệp Hội33Các hiệp hội phi lợi nhuận
Quỹ30Các quỹ từ thiện
Xã Hội30Các đối tác và cấu trúc xã hội khác
Chính Phủ30Các thực thể chính phủ và các cơ quan công cộng
Công Ty Nước Ngoài30Các công ty có trụ sở bên ngoài Argentina
Cá Nhân (Nam)20Các cá nhân nam giới
Cá Nhân (Nữ)27Các cá nhân nữ giới
Ủy Thác30Các thực thể ủy thác

Hiểu các mã loại này là rất quan trọng để tạo CUIT phù hợp cho các kịch bản kiểm tra khác nhau.

Sử dụng Trình tạo và Kiểm tra CUIT

Tạo CUIT Thử nghiệm

Chọn loại thực thể của bạn từ menu thả xuống (công ty, cá nhân, hiệp hội, v.v.), sau đó nhấp vào "Tạo CUIT". Bạn sẽ nhận được một số được định dạng chính xác với chữ số kiểm tra, sẵn sàng để sao chép vào bộ thử nghiệm của bạn.

Một kịch bản phổ biến: bạn đang xây dựng một biểu mẫu đăng ký người dùng cho một nền tảng thương mại điện tử Argentina. Bạn cần kiểm tra cách hệ thống xử lý các loại thực thể khác nhau—chủ doanh nghiệp cá thể, công ty, và các công ty nước ngoài. Thay vì tính toán chữ số kiểm tra theo cách thủ công hoặc rủi ro với dữ liệu thử nghiệm không hợp lệ, hãy tạo CUIT cho từng loại trong vài giây.

Giới hạn quan trọng: Những số này về mặt toán học là hợp lệ nhưng không được đăng ký với AFIP. Chỉ sử dụng chúng cho mục đích thử nghiệm, phát triển và giáo dục—không bao giờ sử dụng cho các tài liệu chính thức hoặc giao dịch thực. Sử dụng mã số thuế giả mạo cho kinh doanh thực sự được coi là gian lận theo luật Argentina.

Kiểm tra Số CUIT

Dán hoặc nhập bất kỳ CUIT nào vào trường kiểm tra và nhấp vào "Kiểm tra CUIT". Công cụ ngay lập tức kiểm tra:

  1. Tuân thủ định dạng: Có tuân theo cấu trúc XX-XXXXXXXX-X không?
  2. Độ chính xác chữ số kiểm tra: Chữ số cuối cùng có toán học chính xác không?
  3. Tính hợp lệ của loại thực thể: Có bắt đầu bằng mã được công nhận (20, 27, 30, 33) không?

Điều này sẽ không cho bạn biết: liệu CUIT có thực sự được đăng ký với AFIP hay không. Để làm điều đó, bạn cần sử dụng dịch vụ Constancia de Inscripción chính thức của AFIP, để truy vấn cơ sở dữ liệu người nộp thuế. Trình kiểm tra của chúng tôi chỉ xác nhận tính chính xác về mặt toán học—hãy coi đó như việc kiểm tra cú pháp chứ không phải tra cứu cơ sở dữ liệu.

Cách Hoạt Động của Thuật Toán Chữ Số Kiểm Tra

CUIT sử dụng thuật toán modulo-11 có trọng số để phát hiện lỗi nhập liệu. Đây là phương pháp toán học tương tự được sử dụng bởi nhiều hệ thống nhận dạng quốc tế—mã sách ISBN, số thẻ tín dụng (thuật toán Luhn), và mã số VAT của Châu Âu đều dựa trên logic chữ số kiểm tra tương tự.

Dưới đây là quy trình từng bước:

  1. Lấy 10 chữ số đầu tiên (trừ chữ số cuối cùng)
  2. Nhân mỗi vị trí với trọng số của nó: [5, 4, 3, 2, 7, 6, 5, 4, 3, 2]
  3. Cộng tất cả các tích
  4. Chia tổng cho 11 và lấy phần dư
  5. Trừ phần dư đó từ 11
  6. Trường hợp đặc biệt: Nếu nhận được 11, chữ số kiểm tra là 0. Nếu nhận được 10, sử dụng 9 thay thế.

Tại sao điều này hoạt động: Phép nhân có trọng số làm cho các chữ số hoán vị (gõ "12" thay vì "21") tạo ra các chữ số kiểm tra khác nhau. Theo nghiên cứu được công bố trong Tạp chí Quản trị Thuế, điều này bắt được khoảng 90% lỗi một chữ số và 98% lỗi hoán vị—hai lỗi phổ biến nhất khi nhập số nhận dạng thủ công.

Ví Dụ Tính Toán

Hãy tính chữ số xác minh cho CUIT với mã loại 30 và số nhận dạng 12345678:

  1. Các chữ số để xác minh là: 3 0 1 2 3 4 5 6 7 8
  2. Nhân với trọng số: 3×5 + 0×4 + 1×3 + 2×2 + 3×7 + 4×6 + 5×5 + 6×4 + 7×3 + 8×2
  3. Tính: 15 + 0 + 3 + 4 + 21 + 24 + 25 + 24 + 21 + 16 = 153
  4. Phần dư của 153 ÷ 11 = 10
  5. 11 - 10 = 1
  6. Chữ số xác minh là 1

Do đó, CUIT hợp lệ hoàn chỉnh là 30-12345678-1.

Các Trường Hợp Sử Dụng Thực Tế

Khi Bạn Đang Xây Dựng Ứng Dụng Tài Chính

Kiểm tra xử lý thanh toán cho các thương nhân Argentina? Bạn sẽ cần CUITs cho các tài khoản thử nghiệm. Một sai lầm thường gặp mà tôi đã thấy: các nhà phát triển sử dụng các số rõ ràng là giả như "11-11111111-1" vốn vượt qua các kiểm tra định dạng cơ bản nhưng thất bại khi tích hợp với các cổng thanh toán thực tế xác thực mã loại thực thể. Sử dụng các CUIT thử nghiệm được tạo đúng với mã loại chính xác (30 cho các công ty, 20/27 cho cá nhân) giúp phát hiện các vấn đề tích hợp trong quá trình phát triển thay vì sản xuất.

Di Chuyển Dữ Liệu và Kiểm Toán Chất Lượng

Di chuyển các hệ thống kế thừa sang các nền tảng mới thường tiết lộ việc hư hỏng dữ liệu CUIT - thiếu chữ số, sai chữ số kiểm tra, hoặc các định dạng hoàn toàn không hợp lệ. Chạy toàn bộ tập dữ liệu qua trình xác thực giúp xác định những bản ghi nào cần sửa chữa thủ công trước khi di chuyển. Trong một dự án liên quan đến hơn 50.000 bản ghi khách hàng, phương pháp này đã phát hiện khoảng 3% CUIT không hợp lệ có thể gây ra các lỗi giao dịch.

Thiết Lập Môi Trường Phát Triển

Khi bạn thiết lập các môi trường cục bộ hoặc giai đoạn cho các ứng dụng fintech Argentina, bạn cần dữ liệu thử nghiệm thực tế mà không vô tình xung đột với thông tin của người nộp thuế thực. Tạo CUIT cho các loại thực thể khác nhau (công ty, cá nhân, quỹ ủy thác) để mô phỏng các kịch bản thực tế mà không có rủi ro pháp lý.

Kiểm Tra QA cho Xác Thực Biểu Mẫu

Biểu mẫu đăng ký của bạn có từ chối CUIT với các chữ số kiểm tra không chính xác không? Nó có xử lý được CUIT được nhập mà không có dấu gạch ngang không? Nó có thể phát hiện khi ai đó nhập CUIL thay vì CUIT không? Những trường hợp biên này rất quan trọng khi bạn xử lý hàng ngàn đăng ký. Có một trình xác thực sẵn sàng giúp bạn xây dựng các trường hợp thử nghiệm toàn diện.

Hiểu Hệ Thống Thuế Mỹ La-tinh

Nếu bạn đang mở rộng sang nhiều thị trường Mỹ La-tinh, bạn sẽ gặp các hệ thống ID thuế tương tự nhưng khác biệt - CPF/CNPJ của Brazil, RUT của Chile, NIT của Colombia. Thuật toán CUIT thể hiện các mẫu chung: tiền tố loại thực thể, xác thực chữ số kiểm tra, và xác minh dựa trên mô-đun. Hiểu một hệ thống sẽ đẩy nhanh việc học các hệ thống khác.

Ví dụ Mã Nguồn cho Xác Thực và Tạo CUIT

Các ví dụ mã nguồn sau đây trình bày cách triển khai xác thực và tạo CUIT bằng các ngôn ngữ lập trình khác nhau:

JavaScript

1// Xác thực CUIT trong JavaScript
2function validateCUIT(cuit) {
3  // Loại bỏ các ký tự không phải số
4  const cleanCuit = cuit.replace(/\D/g, '');
5  
6  // Kiểm tra xem có đúng 11 chữ số không
7  if (cleanCuit.length !== 11) {
8    return false;
9  }
10  
11  // Trích xuất các phần
12  const typeCode = cleanCuit.substring(0, 2);
13  const number = cleanCuit.substring(2, 10);
14  const providedVerificationDigit = parseInt(cleanCuit.substring(10, 11));
15  
16  // Tính chữ số xác minh
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// Ví dụ sử dụng
39console.log(validateCUIT('30-12345678-1')); // true hoặc false
40

Python

1# Tạo CUIT trong Python
2import random
3
4def generate_cuit(entity_type='COMPANY'):
5    # Xác định mã loại thực thể
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    # Lấy mã loại cho loại thực thể đã chọn
19    type_code = entity_types.get(entity_type, 30)
20    
21    # Tạo số ngẫu nhiên 8 chữ số
22    number = ''.join([str(random.randint(0, 9)) for _ in range(8)])
23    
24    # Tính chữ số xác minh
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    # Định dạng và trả về CUIT
39    return f"{type_code}-{number}-{verification_digit}"
40
41# Ví dụ sử dụng
42print(generate_cuit('INDIVIDUAL_MALE'))
43

PHP

1<?php
2// Xác thực CUIT trong PHP
3function validateCUIT($cuit) {
4    // Loại bỏ các ký tự không phải số
5    $cleanCuit = preg_replace('/\D/', '', $cuit);
6    
7    // Kiểm tra xem có đúng 11 chữ số không
8    if (strlen($cleanCuit) !== 11) {
9        return false;
10    }
11    
12    // Trích xuất các phần
13    $typeCode = substr($cleanCuit, 0, 2);
14    $number = substr($cleanCuit, 2, 8);
15    $providedVerificationDigit = intval(substr($cleanCuit, 10, 1));
16    
17    // Tính chữ số xác minh
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// Ví dụ sử dụng
39echo validateCUIT('30-12345678-1') ? 'Hợp lệ' : 'Không hợp lệ';
40?>
41

Java

1// Tạo và Xác thực CUIT trong Java
2import java.util.Random;
3
4public class CUITUtils {
5    
6    // Mã loại thực thể
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    // Tạo CUIT
13    public static String generateCUIT(String entityType) {
14        int typeCode;
15        
16        // Xác định mã loại dựa trên loại thực thể
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        // Tạo số ngẫu nhiên 8 chữ số
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        // Tính chữ số xác minh
41        String digits = String.format("%02d%s", typeCode, number.toString());
42        int verificationDigit = calculateVerificationDigit(digits);
43        
44        // Định dạng và trả về CUIT
45        return String.format("%02d-%s-%d", typeCode, number.toString(), verificationDigit);
46    }
47    
48    // Tính chữ số xác minh
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    // Xác thực CUIT
69    public static boolean validateCUIT(String cuit) {
70        // Loại bỏ các ký tự không phải số
71        String cleanCuit = cuit.replaceAll("\\D", "");
72        
73        // Kiểm tra xem có đúng 11 chữ số không
74        if (cleanCuit.length() != 11) {
75            return false;
76        }
77        
78        // Trích xuất chữ số xác minh
79        int providedVerificationDigit = Character.getNumericValue(cleanCuit.charAt(10));
80        
81        // Tính chữ số xác minh dự kiến
82        int calculatedVerificationDigit = calculateVerificationDigit(cleanCuit.substring(0, 10));
83        
84        // So sánh các chữ số xác minh
85        return calculatedVerificationDigit == providedVerificationDigit;
86    }
87    
88    public static void main(String[] args) {
89        // Ví dụ sử dụng
90        String generatedCUIT = generateCUIT("COMPANY");
91        System.out.println("CUIT được tạo: " + generatedCUIT);
92        System.out.println("Có hợp lệ: " + validateCUIT(generatedCUIT));
93    }
94}
95

C#

1using System;
2using System.Text.RegularExpressions;
3
4public class CUITValidator
5{
6    // Xác thực CUIT
7    public static bool ValidateCUIT(string cuit)
8    {
9        // Loại bỏ các ký tự không phải số
10        string cleanCuit = Regex.Replace(cuit, @"\D", "");
11        
12        // Kiểm tra xem có đúng 11 chữ số không
13        if (cleanCuit.Length != 11)
14        {
15            return false;
16        }
17        
18        // Trích xuất chữ số xác minh
19        int providedVerificationDigit = int.Parse(cleanCuit.Substring(10, 1));
20        
21        // Tính chữ số xác minh dự kiến
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    // Định dạng CUIT với các dấu phân cách
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; // Trả về ban đầu nếu không phải 11 chữ số
57        }
58        
59        return $"{cleanCuit.Substring(0, 2)}-{cleanCuit.Substring(2, 8)}-{cleanCuit.Substring(10, 1)}";
60    }
61}
62

Bối cảnh: Tại sao Argentina Áp dụng Hệ thống CUIT

Trước những năm 1990, việc nhận dạng thuế của Argentina là phân mảnh—các cơ quan khác nhau sử dụng các hệ thống đánh số không tương thích, khiến việc theo dõi người nộp thuế trên các cơ sở dữ liệu trở nên khó khăn. Tình trạng trốn thuế diễn ra phổ biến, một phần do sự thiếu chuẩn hóa khiến việc thực thi pháp luật trở nên khó khăn.

AFIP đã giới thiệu CUIT vào đầu những năm 1990 như một phần của các cải cách kinh tế rộng lớn trong thời kỳ của Tổng thống Carlos Menem. Thời điểm này trùng với kế hoạch khả năng chuyển đổi tiền tệ của Argentina, buộc phải neo đồng peso với đô la Mỹ và yêu cầu các kiểm soát tài khóa nghiêm ngặt hơn.

Hệ thống phát triển nhanh chóng:

  • Đầu những năm 1990: Triển khai cho các doanh nghiệp và chuyên gia tự do
  • Giữa những năm 1990: Mở rộng cho nhân viên, tạo ra một sổ đăng ký người nộp thuế toàn diện
  • Cuối những năm 1990: Tích hợp với việc nộp hồ sơ điện tử—một thành tựu kỹ thuật đáng kể cho thời kỳ đó
  • Từ những năm 2000 trở đi: Trở thành bắt buộc cho ngân hàng, hợp đồng lao động và cuối cùng là thương mại điện tử

Ngày nay, bạn không thể mở tài khoản ngân hàng doanh nghiệp, ký hợp đồng lao động hoặc phát hành hóa đơn điện tử ở Argentina mà không có CUIT. Nó đã trở thành định danh cơ bản cho toàn bộ nền kinh tế chính thức, tương tự như cách Số An sinh Xã hội hoạt động ở Hoa Kỳ—mặc dù có các biện pháp bảo vệ pháp lý mạnh mẽ hơn về quyền riêng tư và các hạn chế sử dụng theo Luật Bảo vệ Dữ liệu Cá nhân 25,326 của Argentina.

Câu Hỏi Thường Gặp

CUIT là gì ở Argentina?

CUIT (Código Único de Identificación Tributaria) là mã số nhận dạng thuế của Argentina dành cho cá nhân và doanh nghiệp. Đây là mã 11 chữ số theo định dạng XX-XXXXXXXX-X do AFIP (cơ quan thuế liên bang) cấp cho những người cần thực hiện hoạt động kinh tế chính thức—từ việc mở tài khoản ngân hàng đến xuất hóa đơn.

Làm thế nào để kiểm tra một CUIT có thực hay giả?

Công cụ của chúng tôi xác thực cấu trúc toán học—định dạng chính xác, mã loại thực thể hợp lệ và chữ số kiểm tra chính xác. Tuy nhiên, nó không thể cho bạn biết một CUIT có được đăng ký với AFIP hay không. Để xác minh chính thức, hãy sử dụng dịch vụ Constancia de Inscripción của AFIP để truy vấn cơ sở dữ liệu của họ. Hãy nghĩ về công cụ của chúng tôi như kiểm tra chính tả: nó bắt lỗi định dạng nhưng không xác minh tính xác thực.

Sự khác biệt giữa CUIT và CUIL là gì?

Cả hai sử dụng định dạng 11 chữ số giống nhau và thuật toán xác thực giống nhau. Sự khác biệt:

  • CUIT: Dành cho những người nộp thuế thực hiện hoạt động kinh tế (doanh nghiệp, chuyên gia tự do, freelancer)
  • CUIL: Dành cho nhân viên làm việc theo hợp đồng lao động không có hoạt động kinh doanh độc lập

Trong thực tế, nhiều người sử dụng CUIL của mình khi được yêu cầu CUIT trên các biểu mẫu, và các hệ thống thường chấp nhận cả hai một cách trao đổi. Sự khác biệt kỹ thuật quan trọng hơn trong các bối cảnh pháp lý và kế toán hơn là sử dụng hàng ngày.

Tôi có thể sử dụng CUIT được tạo ra cho các giao dịch thực tế không?

Tuyệt đối không. CUIT được tạo ra về mặt toán học là hợp lệ nhưng không được đăng ký với AFIP. Việc sử dụng chúng cho các tài liệu chính thức, hợp đồng hoặc khai thuế là hành vi gian lận theo luật Argentina. Chỉ sử dụng cho:

  • Phát triển và kiểm tra phần mềm
  • Môi trường QA và staging
  • Minh họa giáo dục
  • Xác thực tính toàn vẹn dữ liệu

Tại sao mã loại 30 áp dụng cho nhiều loại thực thể?

AFIP đã đơn giản hóa phân loại thực thể bằng cách nhóm các thực thể tương tự dưới mã 30 (công ty, tổ chức từ thiện, cơ quan chính phủ, quỹ tín thác). Sự phân biệt loại thực thể thực tế diễn ra trong hệ thống đăng ký nội bộ của AFIP, không phải trong CUIT. Lựa chọn thiết kế này ưu tiên sự đơn giản hơn là phân loại chi tiết—một sự đánh đổi làm cho hệ thống dễ triển khai hơn nhưng ít tự giải thích hơn.

Chữ số kiểm tra có độ chính xác như thế nào trong việc bắt lỗi?

Thuật toán trọng số modulo-11 bắt được khoảng 90% lỗi chữ số đơn và 98% lỗi hoán vị (hoán đổi các chữ số liền kề). Nó sẽ không bắt được tất cả các lỗi—ví dụ, nếu bạn hoán vị hai chữ số mà có các hệ số trọng số giống nhau, thì chữ số kiểm tra vẫn hợp lệ. Nhưng đối với các lỗi nhập liệu điển hình, nó rất hiệu quả.

CUIT có hết hạn hoặc thay đổi không?

CUIT là vĩnh viễn trong suốt cuộc đời của người nộp thuế. Các trường hợp ngoại lệ bao gồm:

  • Thay đổi bản dạng giới tính (Argentina cho phép cập nhật CUIT để phù hợp với giới tính)
  • Tái cấu trúc pháp lý lớn (việc sáp nhập công ty có thể kích hoạt CUIT mới)
  • Gian lận hoặc đánh cắp danh tính (AFIP có thể vô hiệu hóa CUIT bị xâm phạm)

Không giống như một số quốc gia có mã số thuế được làm mới định kỳ, Argentina đã thiết kế CUIT như các định danh suốt đời để giảm bớt chi phí hành chính.

Điều gì xảy ra nếu tôi nhập CUIT không có dấu gạch ngang?

Hầu hết các hệ thống của Argentina chấp nhận CUIT có hoặc không có dấu gạch ngang—việc xác thực cơ bản loại bỏ các ký tự định dạng trước khi kiểm tra các chữ số. Trình xác thực của chúng tôi xử lý cả hai định dạng: 30-12345678-130123456781 được xử lý giống nhau. Khi tích hợp với API, hãy kiểm tra tài liệu của họ; một số yêu cầu định dạng chính xác trong khi những cái khác tự động chuẩn hóa đầu vào.

Các công ty nước ngoài có thể nhận CUIT của Argentina không?

Có. Các thực thể nước ngoài tiến hành kinh doanh tại Argentina nhận CUIT bằng mã loại 30, giống như các công ty trong nước. Họ phải đăng ký với AFIP và thường cần một đại diện pháp lý địa phương. CUIT liên kết với mã số thuế nước ngoài của họ trong hồ sơ AFIP, cho phép tuân thủ các hiệp ước thuế xuyên biên giới.

Làm thế nào để tạo CUIT thử nghiệm cho các loại thực thể khác nhau?

Chọn loại thực thể từ menu thả xuống (Công ty, Cá nhân Nam/Nữ, Hiệp hội, v.v.) và nhấp vào "Tạo CUIT". Công cụ sẽ tự động gán mã loại chính xác (30 cho các công ty, 20 cho nam giới, 27 cho nữ giới, 33 cho các hiệp hội) và tính toán chữ số kiểm tra phù hợp. Tạo bao nhiêu tùy thích—không giới hạn cho mục đích thử nghiệm.

Tài liệu Tham khảo Chính thức và Đọc Thêm

  1. Cơ quan Quản lý Thuế Liên bang (AFIP) - Cơ quan thuế chính thức của Argentina https://www.afip.gob.ar/

  2. Giấy chứng nhận Đăng ký AFIP - Dịch vụ xác minh CUIT chính thức https://www.afip.gob.ar/genericos/consultaCUIT/

  3. Luật 11.683 về Thủ tục Thuế - Luật thủ tục thuế quy định các yêu cầu CUIT Công báo Chính thức của Cộng hòa Argentina

  4. Nghị quyết Chung AFIP 1817/2005 - Quy trình đăng ký và nhận dạng Tài liệu chính thức của AFIP

  5. Luật 25.326 về Bảo vệ Dữ liệu Cá nhân - Luật bảo vệ dữ liệu cá nhân điều chỉnh việc sử dụng CUIT https://www.argentina.gob.ar/aaip/datospersonales

  6. Ủy ban Kinh tế Liên Hợp Quốc ECLAC - "Chính sách Thuế ở Mỹ Latin: Đánh giá và Hướng dẫn Cải cách" Gómez Sabaini, J.C., & Morán, D. (2016) - Phân tích so sánh các hệ thống thuế bao gồm Argentina

  7. Tạp chí Quản lý Thuế - Nghiên cứu về hệ thống nhận dạng thuế và thuật toán chữ số kiểm tra https://www.jota.website/

Bắt Đầu với Xác Thực CUIT

Cho dù bạn đang xây dựng cổng thanh toán cho các thương nhân Argentina, di chuyển cơ sở dữ liệu khách hàng kế thừa, hoặc kiểm tra sự tuân thủ của nền tảng thương mại điện tử với các yêu cầu của AFIP, công cụ này sẽ giúp bạn làm việc với CUIT một cách tự tin.

Tạo dữ liệu thử nghiệm không làm hỏng môi trường staging của bạn. Xác thực tập dữ liệu trước khi di chuyển. Hiểu thuật toán đằng sau hệ thống nhận dạng thuế của Argentina.

Không cần khóa API. Không giới hạn tỷ lệ. Không có tính năng không cần thiết. Chỉ có việc tạo và xác thực CUIT một cách đáng tin cậy khi bạn cần.

🔗

Công cụ Liên quan

Khám phá thêm các công cụ có thể hữu ích cho quy trình làm việc của bạn