アルゼンチンCUIT生成器と検証ツール | 税務IDテスト
テスト用のアルゼンチンCUIT(税務識別番号)を生成し、既存の番号が正しいかどうかを検証する無料ツール。正しいチェックディジットを持つ数学的に有効な税務IDを瞬時に作成でき、システムを開発するエンジニアがテストデータを準備する際にも、手軽かつ確実に役立つ実用的なツールである。
アルゼンチンCUIT生成・検証ツール
数学的に有効なアルゼンチンCUIT番号を生成するか、既存の税務識別コードをすぐに検証します。
CUIT生成
CUIT検証
形式:XX-XXXXXXXX-X
CUITについて
CUIT(Código Único de Identificación Tributaria)は、アルゼンチンで個人および法人に使用される税務識別コードです。
- 形式はXX-XXXXXXXX-Xで、Xは数字です。
- 最初の2桁は事業体の種類を示します(男性個人は20、女性個人は27、企業は30など)。
- 最後の桁は、前の桁に基づいて特定のアルゴリズムで計算される検証数字です。
ドキュメンテーション
アルゼンチンのCUITとその重要性とは?
アルゼンチンのすべての個人と企業は、税務当局であるAFIP(連邦公共歳入管理局)と取引するためにCUIT(Código Único de Identificación Tributaria)が必要です。これは、アルゼンチンの納税者番号やEINに相当するもので、CUITがなければ、公式なビジネス取引、銀行口座、税務申告ができません。
アルゼンチンの金融データを扱うアプリケーションを構築する際、検証の難しさに直面します。CUITは正しい形式に従っているか?チェックディジットは正確に計算されているか?テスト用にどのようなエンティティタイプコードを使用すべきか?これらの疑問は、開発およびQAテスト中に常に発生します。
通常、開発者はCUITの検証を完全に省略し(データの整合性に問題が生じる)、または数学的に有効でない可能性のあるテスト番号を手動で生成するのに時間を浪費します。このツールは、任意のエンティティタイプの適切な形式のCUITを生成し、アルゼンチンの公式アルゴリズムに対して既存の番号を検証することで、これらの問題を解決します。
CUITナンバーの構造
アルゼンチンのCUIT形式は、特定のパターンを持つ11桁の数字で構成されています:XX-XXXXXXXX-X
詳細は以下の通りです:
- 最初の2桁:事業体タイプを示すインジケーター(男性は20、女性は27、企業は30など)
- 次の8桁:固有の識別番号
- 最後の桁:モジュロ11演算を使用して計算されるチェックディジット—これにより、ほとんどの入力ミスやデータ入力エラーを検出できます
このデザインの賢明な点は、検証桁がランダムではないことです。最初の10桁を使用して重み付け乗算で計算されるため、データベースに問い合わせることなく、無効な番号をすぐに特定できます。ラテンアメリカの税務システムでの経験から、このクライアント側の検証機能により、APIコールが大幅に削減され、フォーム検証のパフォーマンスが向上します。
CUITタイプコード
CUITの最初の2桁は、納税者のタイプを示します:
| 事業体タイプ | タイプコード | 説明 |
|---|---|---|
| 企業 | 30 | 法人、LLC、その他の事業体 |
| 協会 | 33 | 非営利団体 |
| 財団 | 30 | 慈善財団 |
| 社会 | 30 | パートナーシップおよびその他の社会構造 |
| 政府 | 30 | 政府機関および公共機関 |
| 外国企業 | 30 | アルゼンチン外に拠点を置く企業 |
| 個人(男性) | 20 | 男性個人 |
| 個人(女性) | 27 | 女性個人 |
| 信託 | 30 | 信託事業体 |
これらのタイプコードを理解することは、さまざまなテストシナリオに適切なCUITを生成するために不可欠です。
CUITジェネレーターとバリデーターの使用
テストCUITの生成
ドロップダウンからエンティティタイプ(企業、個人、団体など)を選択し、「CUIT生成」をクリックします。正しいチェックディジットを持つ適切にフォーマットされた番号が生成され、テストスイートにコピーできます。
一般的なシナリオ:アルゼンチンのEコマースプラットフォームのユーザー登録フォームを構築している場合。個人事業主、法人、外国企業など、異なるエンティティタイプのシステム動作をテストする必要があります。チェックディジットを手動で計算したり、無効なテストデータを使用するリスクを避けるため、各タイプのCUITをわずか数秒で生成できます。
重要な制限:これらは数学的に有効ですが、AFIPに登録されていません。テスト、開発、教育目的にのみ使用し、公式文書や実際の取引には決して使用しないでください。架空の納税者IDを実際のビジネスに使用することは、アルゼンチン法律下で詐欺となります。
CUIT番号の検証
任意のCUITをバリデーターフィールドに貼り付けるか入力し、「CUIT検証」をクリックします。ツールは即座に以下を確認します:
- フォーマットの準拠:XX-XXXXXXXX-X構造に従っているか?
- チェックディジットの正確性:最後の桁が数学的に正しいか?
- エンティティタイプの妥当性:認識されたコード(20、27、30、33)で始まっているか?
これで分からないこと:CUITが実際にAFIPに登録されているかどうか。そのためには、納税者データベースを照会するAFIPの公式登録証明書サービスを使用する必要があります。私たちのバリデーターは数学的な正確性のみを確認します。データベース検索ではなく、構文チェックと考えてください。
チェックディジットアルゴリズムの仕組み
CUITは、データ入力ミスを検出するために重み付きモジュロ-11アルゴリズムを使用します。これは、多くの国際的な識別システム(ISBNブックコード、クレジットカード番号(ルーン・アルゴリズム)、欧州VATナンバーなど)が採用している同様の数学的アプローチです。
手順は以下の通りです:
- 最初の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アルゴリズムは、エンティティタイプの接頭辞、チェックディジットの検証、モジュロベースの検証など、一般的なパターンを示しています。1つのシステムを理解することで、他のシステムの学習が加速します。
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) - 「ラテンアメリカの税制政策:評価とガイドライン」 ゴメス・サバイニ, J.C., & モラン, D. (2016) - アルゼンチンを含む税制システムの比較分析
-
税務管理ジャーナル - 税務識別システムとチェックディジットアルゴリズムに関する研究 https://www.jota.website/
CUITバリデーションを始めよう
アルゼンチンの商人向けの決済ゲートウェイを構築する場合、レガシー顧客データベースを移行する場合、またはe-コマースプラットフォームのAFIP要件への準拠をテストする場合、このツールを使用すれば自信を持ってCUITを扱えます。
ステージング環境を壊さないテストデータを生成します。データセットを移行前に検証します。アルゼンチンの税務識別システムの背後にあるアルゴリズムを理解します。
APIキーは不要。レート制限なし。不要な機能なし。必要なときに信頼できるCUITの生成と検証だけを提供します。