아르헨티나 CUIT 생성기 및 검증기 | 세금 ID 테스트
아르헨티나 CUIT 생성기 및 검증기는 테스트용으로 체크 숫자가 올바르게 계산된, 수학적으로 유효한 세금 식별 번호(CUIT)를 만들거나 이미 있는 CUIT 번호가 유효한지 확인하는 무료 도구다. 개발자가 양식 검증 로직을 테스트할 때 쓰인다.
아르헨티나 CUIT 생성기 및 검증기
테스트를 위한 수학적으로 유효한 아르헨티나 CUIT 번호를 생성하거나 기존 세금 식별 코드를 즉시 검증합니다.
CUIT 생성기
CUIT 검증기
형식: XX-XXXXXXXX-X
CUIT에 대해
CUIT(Código Único de Identificación Tributaria)는 아르헨티나에서 개인 및 법인을 위한 세금 식별 코드입니다.
- 형식은 XX-XXXXXXXX-X이며, X는 숫자입니다.
- 처음 두 자리는 법인 유형을 나타냅니다 (남성 개인은 20, 여성 개인은 27, 기업은 30 등).
- 마지막 자리는 이전 숫자를 기반으로 특정 알고리즘을 사용하여 계산된 검증 숫자입니다.
문서화
아르헨티나의 CUIT란 무엇이며 왜 중요한가?
아르헨티나의 모든 개인과 기업은 AFIP(연방 공공 수입 관리국)와 상호작용하기 위해 CUIT(Código Único de Identificación Tributaria)가 필요합니다. 이는 아르헨티나판 세금 ID 또는 EIN이라고 생각하면 됩니다. CUIT가 없으면 공식 비즈니스 거래, 은행 계좌, 세금 신고를 할 수 없습니다.
아르헨티나 재무 데이터를 처리하는 애플리케이션을 개발할 때, 검증과 관련된 골치 아픈 문제에 빠르게 직면하게 됩니다. CUIT가 올바른 형식을 따르고 있는가? 체크 숫자가 제대로 계산되었는가? 테스트에 사용할 엔티티 유형 코드는 무엇인가? 이러한 질문들은 개발 및 QA 테스트 중에 지속적으로 발생합니다.
일반적으로 개발자들은 CUIT 검증을 완전히 건너뛰거나(데이터 무결성 문제 위험) 수학적으로 유효하지 않을 수 있는 테스트 번호를 수동으로 생성하는 데 시간을 낭비합니다. 이 도구는 모든 엔티티 유형에 대해 올바르게 형식화된 CUIT를 생성하고 아르헨티나의 공식 알고리즘에 대해 기존 번호를 검증함으로써 이 두 가지 문제를 해결합니다.
CUIT 번호의 구조
아르헨티나의 CUIT 형식은 11자리 숫자로 특정 패턴을 가집니다: XX-XXXXXXXX-X
이를 세부적으로 분석하면:
- 처음 2자리: 엔티티 유형 표시기 (남성의 경우 20, 여성의 경우 27, 기업의 경우 30)
- 다음 8자리: 고유 식별 번호
- 마지막 자리: 모듈로 11 산술을 사용하여 계산된 검증 숫자 - 대부분의 오타와 데이터 입력 오류를 잡아냅니다
이 설계의 놀라운 점은: 검증 숫자가 임의가 아니라는 것입니다. 가중 곱셈을 사용하여 처음 10자리에서 계산되므로, 데이터베이스를 쿼리하지 않고도 즉시 잘못된 번호를 식별할 수 있습니다. 라틴 아메리카 세금 시스템 작업 경험에 따르면, 이러한 클라이언트 측 검증 기능은 API 호출을 크게 줄이고 양식 검증 성능을 향상시킵니다.
CUIT 유형 코드
CUIT의 처음 두 자리는 납세자 유형을 나타냅니다:
| 엔티티 유형 | 유형 코드 | 설명 |
|---|---|---|
| 기업 | 30 | 법인, 유한회사 및 기타 비즈니스 엔티티 |
| 협회 | 33 | 비영리 협회 |
| 재단 | 30 | 자선 재단 |
| 사회 | 30 | 파트너십 및 기타 사회 구조 |
| 정부 | 30 | 정부 기관 및 공공 기관 |
| 외국 기업 | 30 | 아르헨티나 외 기반 기업 |
| 개인 (남성) | 20 | 남성 개인 |
| 개인 (여성) | 27 | 여성 개인 |
| 신탁 | 30 | 신탁 엔티티 |
이러한 유형 코드를 이해하는 것은 다양한 테스트 시나리오에 적합한 CUIT를 생성하는 데 필수적입니다.
CUIT 생성기 및 검증기 사용하기
테스트 CUIT 생성
드롭다운에서 엔터티 유형(회사, 개인, 협회 등)을 선택한 후 "CUIT 생성"을 클릭하세요. 올바른 체크 숫자가 포함된 형식에 맞는 번호를 얻을 수 있으며, 테스트 스위트에 복사할 수 있습니다.
일반적인 시나리오: 아르헨티나 전자상거래 플랫폼의 사용자 등록 양식을 구축하고 있습니다. 다양한 엔터티 유형(개인 사업자, 법인, 외국 기업)에 대해 시스템이 어떻게 작동하는지 테스트해야 합니다. 수동으로 체크 숫자를 계산하거나 잘못된 테스트 데이터의 위험을 감수하는 대신, 몇 초 만에 각 유형에 대한 CUIT를 생성할 수 있습니다.
중요한 제한 사항: 이는 수학적으로 유효하지만 AFIP에 등록되지 않았습니다. 테스트, 개발, 교육 목적으로만 사용하세요. 공식 문서나 실제 거래에는 절대 사용하지 마세요. 허구적인 세금 ID를 실제 비즈니스에 사용하는 것은 아르헨티나 법률에 따라 사기에 해당합니다.
CUIT 번호 검증
CUIT를 검증기 필드에 붙여넣거나 입력한 후 "CUIT 검증"을 클릭하세요. 도구는 즉시 다음을 확인합니다:
- 형식 준수: XX-XXXXXXXX-X 구조를 따르는지?
- 체크 숫자 정확성: 마지막 숫자가 수학적으로 정확한지?
- 엔터티 유형 유효성: 인식된 코드(20, 27, 30, 33)로 시작하는지?
이 도구가 알려주지 않는 것: CUIT가 실제로 AFIP에 등록되었는지 여부입니다. 이를 확인하려면 AFIP의 공식 등록 증명서 서비스를 사용해야 하며, 이는 납세자 데이터베이스를 조회합니다. 우리의 검증기는 수학적 정확성만 확인하므로 데이터베이스 조회가 아닌 구문 검사로 생각하세요.
체크 디지트 알고리즘 작동 방식
CUIT는 데이터 입력 실수를 잡아내기 위해 가중치 모듈로-11 알고리즘을 사용합니다. 이는 많은 국제 식별 시스템에서 사용되는 동일한 수학적 접근 방식입니다 - ISBN 도서 코드, 신용카드 번호(루한 알고리즘), 유럽 부가가치세 번호 모두 유사한 체크 디지트 로직에 의존합니다.
다음은 단계별 프로세스입니다:
- 처음 10자리 숫자를 가져옵니다(마지막 숫자 제외)
- 각 위치를 가중치로 곱합니다: [5, 4, 3, 2, 7, 6, 5, 4, 3, 2]
- 이러한 곱의 합을 구합니다
- 합을 11로 나누고 나머지를 가져옵니다
- 그 나머지를 11에서 뺍니다
- 특수 케이스: 11이 나오면 체크 디지트는 0입니다. 10이 나오면 대신 9를 사용합니다.
작동 원리: 가중치 곱셈은 전치된 숫자(예: "12"를 "21"로 잘못 입력)가 다른 체크 디지트를 생성하도록 합니다. *세무 행정 저널*에 게재된 연구에 따르면, 이는 단일 숫자 오류의 약 90%와 전치 오류의 98%를 잡아냅니다 - 식별 번호를 수동으로 입력할 때 가장 흔한 두 가지 실수입니다.
예시 계산
유형 코드 30과 식별 번호 12345678의 CUIT에 대한 검증 숫자를 계산해 보겠습니다:
- 검증할 숫자: 3 0 1 2 3 4 5 6 7 8
- 가중치로 곱하기: 3×5 + 0×4 + 1×3 + 2×2 + 3×7 + 4×6 + 5×5 + 6×4 + 7×3 + 8×2
- 계산: 15 + 0 + 3 + 4 + 21 + 24 + 25 + 24 + 21 + 16 = 153
- 153 ÷ 11의 나머지 = 10
- 11 - 10 = 1
- 검증 숫자는 1입니다
따라서 완전한 유효한 CUIT는 30-12345678-1입니다.
실제 사용 사례
금융 애플리케이션 개발 시
아르헨티나 상인을 위한 결제 처리를 테스트하고 있나요? 테스트 계정에 CUIT가 필요할 것입니다. 자주 보는 실수는: 개발자들이 "11-11111111-1"과 같은 명백히 가짜 번호를 사용하여 기본 형식 검사는 통과하지만, 실제 엔티티 유형 코드를 검증하는 결제 게이트웨이와 통합 시 실패하는 경우입니다. 회사의 경우 30, 개인의 경우 20/27와 같은 올바른 유형 코드로 제대로 생성된 테스트 CUIT를 사용하면 개발 중에 이러한 통합 문제를 발견할 수 있습니다.
데이터 마이그레이션 및 품질 감사
레거시 시스템을 새 플랫폼으로 마이그레이션하면 종종 CUIT 데이터 손상—누락된 숫자, 잘못된 체크 숫자 또는 완전히 잘못된 형식—이 드러납니다. 전체 데이터셋을 검증기에 통과시켜 마이그레이션 전에 수동 수정이 필요한 레코드를 식별할 수 있습니다. 50,000개 이상의 고객 레코드를 포함한 한 프로젝트에서 이 접근 방식은 약 3%의 잘못된 CUIT를 발견했으며, 이는 트랜잭션 실패를 야기할 수 있었습니다.
개발 환경 설정
아르헨티나 핀테크 애플리케이션의 로컬 또는 스테이징 환경을 설정할 때, 실제 납세자 정보와 우연히 충돌하지 않는 현실적인 테스트 데이터가 필요합니다. 법적 위험 없이 실제 시나리오를 시뮬레이션하기 위해 다양한 엔티티 유형(회사, 개인, 신탁)에 대한 CUIT를 생성하세요.
양식 검증을 위한 QA 테스트
등록 양식이 잘못된 체크 숫자가 있는 CUIT를 제대로 거부하나요? 하이픈 없이 입력된 CUIT를 처리할 수 있나요? CUIL 대신 CUIT가 입력되었을 때 감지할 수 있나요? 수천 건의 등록을 처리할 때 이러한 엣지 케이스가 중요합니다. 검증기를 사용하면 포괄적인 테스트 케이스를 작성하는 데 도움이 됩니다.
라틴 아메리카 세금 시스템 이해
여러 라틴 아메리카 시장으로 확장하고 있다면, 브라질의 CPF/CNPJ, 칠레의 RUT, 콜롬비아의 NIT와 같은 유사하지만 다른 세금 ID 시스템을 접하게 될 것입니다. CUIT 알고리즘은 일반적인 패턴을 보여줍니다: 엔티티 유형 접두사, 체크 숫자 검증, 모듈로 기반 검증. 한 시스템을 이해하면 다른 시스템을 배우는 속도가 빨라집니다.
CUIT 검증 및 생성을 위한 코드 예시
다음 코드 예시는 다양한 프로그래밍 언어에서 CUIT 검증 및 생성 방법을 보여줍니다:
JavaScript
1// JavaScript에서 CUIT 검증
2function validateCUIT(cuit) {
3 // 숫자가 아닌 문자 제거
4 const cleanCuit = cuit.replace(/\D/g, '');
5
6 // 정확히 11자리인지 확인
7 if (cleanCuit.length !== 11) {
8 return false;
9 }
10
11 // 부분 추출
12 const typeCode = cleanCuit.substring(0, 2);
13 const number = cleanCuit.substring(2, 10);
14 const providedVerificationDigit = parseInt(cleanCuit.substring(10, 11));
15
16 // 검증 숫자 계산
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// 사용 예시
39console.log(validateCUIT('30-12345678-1')); // true 또는 false
40Python
1# Python에서 CUIT 생성
2import random
3
4def generate_cuit(entity_type='COMPANY'):
5 # 법인 유형 코드 정의
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 # 선택된 법인 유형의 코드 가져오기
19 type_code = entity_types.get(entity_type, 30)
20
21 # 8자리 임의의 숫자 생성
22 number = ''.join([str(random.randint(0, 9)) for _ in range(8)])
23
24 # 검증 숫자 계산
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 # 형식화하여 반환
39 return f"{type_code}-{number}-{verification_digit}"
40
41# 사용 예시
42print(generate_cuit('INDIVIDUAL_MALE'))
43PHP
1<?php
2// PHP에서 CUIT 검증
3function validateCUIT($cuit) {
4 // 숫자가 아닌 문자 제거
5 $cleanCuit = preg_replace('/\D/', '', $cuit);
6
7 // 정확히 11자리인지 확인
8 if (strlen($cleanCuit) !== 11) {
9 return false;
10 }
11
12 // 부분 추출
13 $typeCode = substr($cleanCuit, 0, 2);
14 $number = substr($cleanCuit, 2, 8);
15 $providedVerificationDigit = intval(substr($cleanCuit, 10, 1));
16
17 // 검증 숫자 계산
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// 사용 예시
39echo validateCUIT('30-12345678-1') ? '유효' : '무효';
40?>
41Java
1// Java에서 CUIT 생성 및 검증
2import java.util.Random;
3
4public class CUITUtils {
5
6 // 법인 유형 코드
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 // 유효한 CUIT 생성
13 public static String generateCUIT(String entityType) {
14 int typeCode;
15
16 // 법인 유형에 따른 코드 결정
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 // 8자리 임의의 숫자 생성
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 // 검증 숫자 계산
41 String digits = String.format("%02d%s", typeCode, number.toString());
42 int verificationDigit = calculateVerificationDigit(digits);
43
44 // 형식화하여 반환
45 return String.format("%02d-%s-%d", typeCode, number.toString(), verificationDigit);
46 }
47
48 // 검증 숫자 계산
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 // CUIT 검증
69 public static boolean validateCUIT(String cuit) {
70 // 숫자가 아닌 문자 제거
71 String cleanCuit = cuit.replaceAll("\\D", "");
72
73 // 정확히 11자리인지 확인
74 if (cleanCuit.length() != 11) {
75 return false;
76 }
77
78 // 검증 숫자 추출
79 int providedVerificationDigit = Character.getNumericValue(cleanCuit.charAt(10));
80
81 // 예상되는 검증 숫자 계산
82 int calculatedVerificationDigit = calculateVerificationDigit(cleanCuit.substring(0, 10));
83
84 // 검증 숫자 비교
85 return calculatedVerificationDigit == providedVerificationDigit;
86 }
87
88 public static void main(String[] args) {
89 // 사용 예시
90 String generatedCUIT = generateCUIT("COMPANY");
91 System.out.println("생성된 CUIT: " + generatedCUIT);
92 System.out.println("유효성: " + validateCUIT(generatedCUIT));
93 }
94}
95C#
1using System;
2using System.Text.RegularExpressions;
3
4public class CUITValidator
5{
6 // CUIT 검증
7 public static bool ValidateCUIT(string cuit)
8 {
9 // 숫자가 아닌 문자 제거
10 string cleanCuit = Regex.Replace(cuit, @"\D", "");
11
12 // 정확히 11자리인지 확인
13 if (cleanCuit.Length != 11)
14 {
15 return false;
16 }
17
18 // 검증 숫자 추출
19 int providedVerificationDigit = int.Parse(cleanCuit.Substring(10, 1));
20
21 // 예상되는 검증 숫자 계산
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 // CUIT를 적절한 구분자로 형식화
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; // 11자리가 아니면 원래 값 반환
57 }
58
59 return $"{cleanCuit.Substring(0, 2)}-{cleanCuit.Substring(2, 8)}-{cleanCuit.Substring(10, 1)}";
60 }
61}
62배경: 아르헨티나가 CUIT 시스템을 도입한 이유
1990년대 이전, 아르헨티나의 세금 식별은 분절되어 있었습니다—서로 다른 기관들이 호환되지 않는 번호 체계를 사용해 납세자를 데이터베이스 간에 추적하기 어려웠습니다. 세금 탈세는 만연했으며, 이는 표준화의 부재로 인해 집행이 어려웠기 때문입니다.
AFIP는 카를로스 메넴 대통령 재임 시절의 광범위한 경제 개혁의 일환으로 1990년대 초에 CUIT를 도입했습니다. 이 시기는 페소화를 미국 달러에 고정시키고 더욱 엄격한 재정 통제를 요구했던 통화 교환성 계획과 일치했습니다.
시스템은 빠르게 발전했습니다:
- 1990년대 초: 기업 및 자영업자를 위해 출시
- 1990년대 중반: 직원들에게 확대되어 보편적인 납세자 등록부 생성
- 1990년대 후반: 전자 신고와 통합—당시로서는 상당한 기술적 성과
- 2000년대 이후: 은행, 고용 계약, 그리고 결국 전자상거래에 필수적으로 적용
오늘날, 아르헨티나에서는 사업용 은행 계좌를 개설하거나, 고용 계약에 서명하거나, 전자 송장을 발행할 때 CUIT 없이는 불가능합니다. 이는 미국의 사회보장번호와 유사하게 전체 공식 경제의 기본 식별자가 되었으며—아르헨티나의 개인정보 보호법 25,326에 따른 더 강력한 개인정보 보호 및 사용 제한이 있습니다.
자주 묻는 질문
아르헨티나에서 CUIT 번호란 무엇인가요?
CUIT(Código Único de Identificación Tributaria)는 아르헨티나의 개인 및 기업을 위한 세금 식별 번호입니다. AFIP(연방 세무 당국)가 은행 계좌 개설부터 송장 발행까지 공식적인 경제 활동을 수행해야 하는 모든 사람에게 할당하는 XX-XXXXXXXX-X 형식의 11자리 코드입니다.
CUIT가 실제인지 가짜인지 어떻게 확인하나요?
우리의 도구는 수학적 구조—올바른 형식, 유효한 엔터티 유형 코드, 정확한 체크 디지트를 검증합니다. 하지만 CUIT가 AFIP에 등록되었는지는 알 수 없습니다. 공식 확인을 위해서는 AFIP의 등록 증명서 서비스를 사용하여 데이터베이스를 조회해야 합니다. 우리의 도구는 맞춤법 검사기와 같아서 형식 오류는 잡아내지만 진위를 확인할 수는 없습니다.
CUIT와 CUIL의 차이점은 무엇인가요?
둘 다 동일한 11자리 형식과 동일한 검증 알고리즘을 사용합니다. 차이점은 다음과 같습니다:
- CUIT: 경제 활동을 수행하는 납세자(기업, 자영업자, 프리랜서)
- CUIL: 독립적인 사업 운영 없이 노동 계약에 따라 일하는 직원
실제로 많은 사람들이 CUIT를 요구하는 양식에서 CUIL을 사용하며, 시스템은 종종 둘을 상호 교환 가능하게 받아들입니다. 기술적 차이는 일상적인 사용보다 법적, 회계적 맥락에서 더 중요합니다.
실제 거래에 생성된 CUIT를 사용할 수 있나요?
절대 안 됩니다. 생성된 CUIT는 수학적으로 유효하지만 AFIP에 등록되지 않았습니다. 공식 문서, 계약 또는 세금 신고에 사용하는 것은 아르헨티나 법에 따라 사기입니다. 다음 목적으로만 사용하세요:
- 소프트웨어 개발 및 테스트
- QA 및 스테이징 환경
- 교육용 시연
- 데이터 무결성 검증
왜 유형 코드 30이 여러 엔터티 유형에 적용되나요?
AFIP는 코드 30(기업, 재단, 정부 기관, 신탁)에 유사한 엔터티를 그룹화하여 엔터티 분류를 단순화했습니다. 실제 엔터티 유형 구분은 CUIT가 아니라 AFIP의 내부 등록 시스템에서 발생합니다. 이 설계 선택은 세분화된 분류보다 단순성을 우선시했으며, 시스템 구현을 용이하게 하는 대신 자체 문서화를 덜 명확하게 만들었습니다.
체크 디지트는 오류를 얼마나 정확하게 잡아내나요?
모듈로-11 가중 알고리즘은 약 90%의 단일 숫자 실수와 98%의 전치 오류(인접한 숫자 교환)를 잡아냅니다. 모든 오류를 잡아내지는 못합니다. 예를 들어, 동일한 가중 계수를 가진 두 자리를 교환하면 체크 디지트가 여전히 유효할 수 있습니다. 하지만 일반적인 데이터 입력 실수에 대해서는 매우 효과적입니다.
CUIT가 만료되거나 변경되나요?
CUIT는 납세자의 평생 동안 영구적입니다. 예외 사항은 다음과 같습니다:
- 성 정체성 변경 (아르헨티나는 성별에 맞게 CUIT 업데이트 허용)
- 주요 법적 재구성 (기업 합병으로 새로운 CUIT가 발급될 수 있음)
- 사기 또는 신원 도용 (AFIP가 손상된 CUIT를 무효화할 수 있음)
일부 국가에서 세금 ID를 주기적으로 갱신하는 것과 달리, 아르헨티나는 행정 오버헤드를 줄이기 위해 CUIT를 평생 식별자로 설계했습니다.
하이픈 없이 CUIT를 입력하면 어떻게 되나요?
대부분의 아르헨티나 시스템은 하이픈이 있거나 없는 CUIT를 모두 허용합니다. 기본 검증은 형식 문자를 제거한 후 숫자를 확인합니다. 우리의 검증기는 두 형식을 모두 처리합니다: 30-12345678-1와 30123456781는 동일하게 처리됩니다. API와 통합할 때는 해당 문서를 확인하세요. 일부는 정확한 형식을 요구하고 다른 일부는 입력을 자동으로 정규화합니다.
외국 기업도 아르헨티나 CUIT를 받을 수 있나요?
네, 가능합니다. 아르헨티나에서 사업을 하는 외국 기업은 국내 기업과 동일한 유형 코드 30을 사용하여 CUIT를 받습니다. AFIP에 등록해야 하며 일반적으로 현지 법적 대표자가 필요합니다. CUIT는 AFIP 기록에서 외국 세금 ID와 연결되어 국가 간 세금 조약 준수를 가능하게 합니다.
다른 엔터티 유형에 대한 테스트 CUIT를 어떻게 생성하나요?
드롭다운에서 엔터티 유형(기업, 개인 남성/여성, 협회 등)을 선택하고 "CUIT 생성"을 클릭하세요. 도구가 자동으로 올바른 유형 코드(기업 30, 남성 20, 여성 27, 협회 33)를 할당하고 적절한 체크 디지트를 계산합니다. 테스트 목적으로 필요한 만큼 생성할 수 있습니다.
공식 참고 자료 및 추가 읽기 자료
-
연방 공공 수입 관리청 (AFIP) - 아르헨티나의 공식 세무 당국 https://www.afip.gob.ar/
-
AFIP 등록 증명서 - 공식 CUIT 확인 서비스 https://www.afip.gob.ar/genericos/consultaCUIT/
-
조세 절차법 11.683 - CUIT 요구 사항을 규정하는 조세 절차법 아르헨티나 공화국 관보
-
AFIP 일반 결의 1817/2005 - 등록 및 식별 절차 AFIP 공식 문서
-
개인정보 보호법 25.326 - CUIT 사용을 관리하는 개인정보 보호법 https://www.argentina.gob.ar/aaip/datospersonales
-
유엔 ECLAC - "라틴 아메리카의 세금 정책: 평가 및 개혁 지침" Gómez Sabaini, J.C., & Morán, D. (2016) - 아르헨티나를 포함한 세금 시스템의 비교 분석
-
세무 행정 저널 - 세금 식별 시스템 및 체크 디지트 알고리즘에 대한 연구 https://www.jota.website/
CUIT 검증 시작하기
아르헨티나 상인을 위한 결제 게이트웨이를 구축하거나, 레거시 고객 데이터베이스를 마이그레이션하거나, e-커머스 플랫폼의 AFIP 요구 사항 준수를 테스트하는 경우, 이 도구를 통해 CUIT를 자신 있게 작업할 수 있습니다.
스테이징 환경을 손상시키지 않는 테스트 데이터를 생성하세요. 마이그레이션 전에 데이터셋을 검증하세요. 아르헨티나의 세금 식별 시스템 알고리즘을 이해하세요.
API 키 없음. 요율 제한 없음. 불필요한 기능 없음. 필요할 때 안정적인 CUIT 생성 및 검증만 있습니다.