CNPJジェネレーター & バリデーター - ブラジルの企業ID作成ツール
テスト用に有効なブラジルのCNPJ番号を生成するか、既存のCNPJ番号が連邦歳入庁Receita Federal公式のチェックディジット方式に合格するかどうかを検証する無料ツール。システム開発者がテストデータを準備する際に、手早く安全に、費用をかけずに活用できる。
ブラジルのCNPJ生成器と検証ツール
CNPJ生成器
テスト目的で有効なブラジルのCNPJ番号を生成します。
CNPJ検証
ブラジルのCNPJ番号が有効かどうかを確認します。
ドキュメンテーション
ブラジルのCNPJ番号の理解
**CNPJ(Cadastro Nacional da Pessoa Jurídica)**は、ブラジルの法人税ID—国内のすべての法人を識別する14桁の番号です。ブラジルのビジネスデータを扱うソフトウェアを構築する場合、登録フォーム、請求書、APIインテグレーションでこれらの番号に遭遇することになります。
このツールが実用的な理由は次の通りです:実際の会社の識別子を使用せずに、数学的に有効なCNPJを生成できます。1,000レコードのテストデータベースを設定する際や、深夜2時にバリデーションルーティンをデバッグする際、アルゴリズムチェックをパスするが、実際の企業と偶然一致しないCNPJが必要になります。これがまさにこのツールが生成するものです。
ここで作成される番号は、公式のレセイタ・フェデラル(ブラジル連邦歳入庁)の検証アルゴリズムに従っています。正しいチェックディジットと適切な書式を持っていますが、政府のデータベースには登録されていません。開発環境でコンプライアンス上の問題を引き起こさない、構文的に正確なテストデータと考えてください。
CNPJとその重要性
CNPJはブラジルの法人識別子であり、アメリカのEINや英国の会社登録番号に似ています。ブラジルで合法的に事業を行うすべての法人は、レセイタ・フェデラル(連邦歳入庁)から発行されたCNPJを持つ必要があります。
以下の場面でCNPJに遭遇します:
- 支払い処理: ブラジルの決済ゲートウェイは、加盟店アカウントのCNPJ検証を要求します
- 税務コンプライアンス: ブラジルで発行される請求書には、有効なCNPJを含める必要があります
- 事業登録: 政府機関はCNPJを使用して、システム間で法人を追跡します
- 銀行取引: 法人口座の開設や国際送金の処理
- 輸出入: 通関書類にはCNPJ検証が必要です
- 政府契約: 公共入札システムは、入札を受け付ける前にCNPJを検証します
ブラジルの電子商取引プラットフォームでの経験から、最も一般的な統合ポイントの1つは、ユーザーが法人購入のためにCNPJを入力するチェックアウトフローです。決済プロセッサーが処理する前に、フォーマットエラーを検出する検証ロジックが必要です。そうしないと、防ぐことができた取引の失敗を目にすることになります。
CNPJ の構造と形式
CNPJ は14桁で、次の形式で構成されます:XX.XXX.XXX/YYYY-ZZ
構造の内訳:
- 最初の8桁(XX.XXX.XXX):企業に一意に割り当てられる基本登録番号
- 次の4桁(/YYYY):支店または事業所の識別子 -
/0001は本社を示し、/0002、/0003は支店の場所を表します - 最後の2桁(-ZZ):重み付けアルゴリズムで計算される検証数字
例:12.345.678/0001-95
支店識別子の興味深い点:企業が複数の拠点を開設する場合、各拠点は最初の8桁が同じで、異なる支店番号を持ちます。つまり、小売チェーンに50の店舗がある場合、/0001 から /0050 で終わるCNPJを持ち、すべて同じ基本番号を共有します。これにより、複数のCNPJが同じ親組織に属していることを簡単に識別できます。
検証数字はランダムではありません。特定の重み付けシーケンスを使用したモジュラス-11アルゴリズムで計算されます。ブラジルの行政文書によく見られるこの設計は、有効な番号を偽造したり、タイプミスで偶然に有効な番号を作成したりすることを数学的に困難にしています。
CNPJの検証のしくみ
検証アルゴリズムは、重み付きモジュラス-11計算を使用します。その論理は以下の通りです:
最初のチェックディジット計算
- 最初の12桁を重み
5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2で乗算 - すべての積を合計
- 合計を11で割り、余りを取得
- 余りが2未満の場合、チェックディジットは0;そうでない場合は
11 - 余り
2番目のチェックディジット計算
- 最初の13桁(最初のチェックディジットを含む)を重み
6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2で乗算 - すべての積を合計
- 11で割り、余りを取得
- 余りが2未満の場合、チェックディジットは0;そうでない場合は
11 - 余り
このアプローチが機能する理由: 重み付き乗算システムは、12の基本桁とその結果のチェックディジットの間に独特の関係を作り出します。基本番号の1桁を変更するだけで、異なるチェックディジットが生成され、2桁を入れ替えるなどの一般的な転記エラー(12.345の代わりに12.354と入力するなど)を検出できます。
実践的な注意点:すべての桁が同一の(11.111.111/1111-11のような)CNPJは、数学的なチェックをパスしても自動的に無効とされます。レセイタ・フェデラルは、些細なケースを防ぐために、これらのパターンを明示的に除外しています。
CNPJジェネレーターとバリデーターの使い方
テストCNPJの生成
テストデータベース用の有効なCNPJが必要ですか? 以下の手順で生成できます:
- **「CNPJ生成」**をクリック
- ツールが瞬時に数学的に有効な番号を作成
- クリップボードにコピーするには**「コピー」**をクリック
- テストフォーム、データベースシード、単体テストに貼り付け
生成された各CNPJは、すべてのアルゴリズム検証チェックを通過しますが、レセイタ・フェデラルに登録されていません。つまり、実際の企業の識別子を誤って使用することを心配せずに、開発で自由に使用できます。
CNPJ番号の検証
検証が必要なCNPJがありますか? バリデーターが処理します:
- 入力フィールドにCNPJを貼り付けるか入力
- フォーマットを気にする必要はありません—
12345678000195または12.345.678/0001-95で動作 - **「検証」**をクリック
- チェックディジットが正しいかどうかをすぐに確認
バリデーターがチェックする内容:適切な長さ(14桁)、正しいチェックディジット計算、すべて同じ数字などの無効なパターンの除外。チェックしない内容:政府のデータベースに登録されているかどうか—これには、レセイタ・フェデラルに直接問い合わせる必要があります。
CNPJ生成器および検証ツールの実世界のユースケース
ソフトウェア開発とテスト
データベースシーディング: ステージング環境を現実的なテストデータで設定する際、数十または数百の有効なCNPJが必要です。手動で作成するのは面倒であり、実際の企業識別子を使用するとプライバシーの問題が生じます。生成されたCNPJはこれら両方の問題を解決します。
ユニットテストのエッジケース: 検証関数は00.000.000/0000-00を拒否し、11.222.333/0001-81を受け入れる必要があります。ジェネレーターを使用することで、ロジックが境界条件を正しく処理することを検証するために、すぐに有効および意図的に無効なテストケースを作成できます。
QA回帰テスト: 登録フォームやB2Bチェックアウトフローをテストする際、QAチームは各実行で新しいテストデータを必要とします。よくある問題は、同じ5〜6のCNPJを繰り返し使用することで、テスト環境が汚染され、特定の桁のパターンでのみ現れるバグが隠されることです。
API統合テスト: PagSeguroやMercado Pagoなどのブラジルの決済プロセッサと統合する場合、サンドボックス環境は多くの場合、有効なCNPJ形式を必要とします。本番データベースにアクセスしない場合でも、数学的に正確である必要があります。
データ処理と検証
インポートされたデータのクリーニング: 1万件のブラジル企業レコードを含むCSVを受け取りました。処理する前に、どのCNPJが不正な形式かを特定する必要があります。検証ツールを通すことで、タイポ、切り捨て、または不正なチェックディジットのあるエントリにフラグを立て、下流のデバッグ時間を節約できます。
クライアント側のフォーム検証: フォーム送信前に無効なCNPJを検出することで、ユーザーエクスペリエンスが向上します。20フィールドの登録フォームを記入した後、2桁を入れ替えたためにエラーになるのは誰も望みません。
分析のためのデータ匿名化: 本番データを分析チームや外部パートナーと共有する際、実際のCNPJを有効だが偽のCNPJに置き換える必要があります。これにより、データセットの参照整合性を維持しながら、実際の企業のアイデンティティを保護できます。
国際的なビジネス運営
ブラジルの要件の理解: ブラジル市場に進出する場合、契約、請求書、出荷書類でCNPJ要件に遭遇します。フォーマットを試すツールがあれば、システムが処理する必要があることを理解するのに役立ちます。
サードパーティ統合仕様: ブラジルのSaaSプロバイダーのAPIドキュメントを確認する際、ペイロードの例にCNPJフィールドがよく表示されます。有効なテスト値を生成できることで、統合のプロトタイプ作成を迅速に行えます。
CNPJ検証の代替アプローチ
プログラミングライブラリ
アプリケーションロジックに組み込まれたCNPJ検証が必要な場合、これらのライブラリはチェックディジットアルゴリズムを実装しています:
- JavaScript/Node.js:
cpf-cnpj-validator(週間130k+ダウンロード)、validator.js(ブラジルの文書をサポート) - Python:
validate-docbr(CPF、CNPJ、その他のブラジルの文書を検証)、python-cnpj - PHP:
respect/validation(CNPJ規則を含む)、brazilianutils - Java:
caelum-stella(包括的なブラジルの文書検証) - Ruby:
cpf_cnpjgem
これらのライブラリは通常、複数のブラジルの文書タイプ(CPF、CNPJなど)の書式設定、解析、検証を処理します。
公式検証API
実際の事業登録を確認する必要がある本番システムの場合:
- レセイタ・フェデラル公共サービス: Consulta CNPJ APIは、公式データベースに対する検証を可能にします(適切な認証と速度制限が必要)
- サードパーティのデータプロバイダー: Serasa ExperianやBoa Vista SCPCなどのサービスは、会社の詳細、登録状況、信用情報を返す商用APIを提供しています
注意:これらのサービスは、数学的な妥当性だけでなく、実際の登録を確認します。本番利用には適切な認証が必要で、APIコストが発生することを予期してください。
それぞれのアプローチを使用するタイミング
このブラウザツールを使用する場合: 依存関係をインストールせずに迅速な検証が必要な場合、デモのためのテストデータ生成、またはCNPJ検証のしくみを学ぶ場合。
ライブラリを使用する場合: フォーム処理の一部としてクライアント側またはサーバー側の検証が必要なアプリケーションを構築している場合。
公式APIを使用する場合: CNPJが実際の、アクティブな事業体で、現在の登録状況に対応していることを確認する必要がある場合。
技術的な実装の詳細
このツールは、サーバーリクエストなしで、ブラウザ内でJavaScriptを使用して完全に動作します。マシン外にデータが出ることはありません。以下に、アルゴリズムの仕組みとコードを示します。独自のプロジェクトに適応できます:
CNPJ生成アルゴリズム
1function generateCNPJ() {
2 // 最初の12桁をランダムに生成
3 const digits = Array.from({ length: 12 }, () => Math.floor(Math.random() * 10));
4
5 // 最初のチェックディジットを計算
6 const firstCheckDigit = calculateCheckDigit(digits);
7 digits.push(firstCheckDigit);
8
9 // 2番目のチェックディジットを計算
10 const secondCheckDigit = calculateCheckDigit(digits);
11 digits.push(secondCheckDigit);
12
13 // CNPJをフォーマット
14 return formatCNPJ(digits.join(''));
15}
16
17function calculateCheckDigit(digits) {
18 const weights = digits.length < 13
19 ? [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]
20 : [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];
21
22 const sum = digits.reduce((acc, digit, index) => {
23 return acc + digit * weights[index];
24 }, 0);
25
26 const remainder = sum % 11;
27 return remainder < 2 ? 0 : 11 - remainder;
28}
29CNPJ検証アルゴリズム
1function validateCNPJ(cnpj) {
2 // 数字以外の文字を削除
3 const cleanCNPJ = cnpj.replace(/\D/g, '');
4
5 // 正しい長さかチェック
6 if (cleanCNPJ.length !== 14) return false;
7
8 // 既知の無効なパターン(同じ数字)をチェック
9 if (/^(\d)\1+$/.test(cleanCNPJ)) return false;
10
11 // 数字の配列に変換
12 const digits = cleanCNPJ.split('').map(Number);
13
14 // 最初の検証ディジットをチェック
15 const expectedFirstDigit = calculateCheckDigit(digits.slice(0, 12));
16 if (digits[12] !== expectedFirstDigit) return false;
17
18 // 2番目の検証ディジットをチェック
19 const expectedSecondDigit = calculateCheckDigit(digits.slice(0, 13));
20 if (digits[13] !== expectedSecondDigit) return false;
21
22 return true;
23}
24CNPJ フォーマット関数
1function formatCNPJ(cnpj) {
2 // 数字以外の文字を削除
3 const cleanCNPJ = cnpj.replace(/\D/g, '');
4
5 // 長さに基づいてフォーマット
6 if (cleanCNPJ.length <= 2) {
7 return cleanCNPJ;
8 } else if (cleanCNPJ.length <= 5) {
9 return `${cleanCNPJ.slice(0, 2)}.${cleanCNPJ.slice(2)}`;
10 } else if (cleanCNPJ.length <= 8) {
11 return `${cleanCNPJ.slice(0, 2)}.${cleanCNPJ.slice(2, 5)}.${cleanCNPJ.slice(5)}`;
12 } else if (cleanCNPJ.length <= 12) {
13 return `${cleanCNPJ.slice(0, 2)}.${cleanCNPJ.slice(2, 5)}.${cleanCNPJ.slice(5, 8)}/${cleanCNPJ.slice(8)}`;
14 } else {
15 return `${cleanCNPJ.slice(0, 2)}.${cleanCNPJ.slice(2, 5)}.${cleanCNPJ.slice(5, 8)}/${cleanCNPJ.slice(8, 12)}-${cleanCNPJ.slice(12, 14)}`;
16 }
17}
18これらのコア関数は、同じロジックに従って他のプログラミング言語でも実装できます。以下にPythonとJavaの例を示します:
Python実装
1import random
2
3def calculate_check_digit(digits):
4 weights = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2] if len(digits) < 13 else [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]
5
6 total = 0
7 for i in range(len(digits)):
8 total += digits[i] * weights[i]
9
10 remainder = total % 11
11 return 0 if remainder < 2 else 11 - remainder
12
13def generate_cnpj():
14 # 最初の12桁をランダムに生成
15 digits = [random.randint(0, 9) for _ in range(12)]
16
17 # 最初のチェックディジットを計算
18 first_check = calculate_check_digit(digits)
19 digits.append(first_check)
20
21 # 2番目のチェックディジットを計算
22 second_check = calculate_check_digit(digits)
23 digits.append(second_check)
24
25 # CNPJをフォーマット
26 cnpj = ''.join(map(str, digits))
27 return f"{cnpj[:2]}.{cnpj[2:5]}.{cnpj[5:8]}/{cnpj[8:12]}-{cnpj[12:]}"
28
29def validate_cnpj(cnpj):
30 # 数字以外の文字を削除
31 cnpj = ''.join(filter(str.isdigit, cnpj))
32
33 # 長さをチェック
34 if len(cnpj) != 14:
35 return False
36
37 # すべての数字が同じかチェック
38 if len(set(cnpj)) == 1:
39 return False
40
41 # 整数のリストに変換
42 digits = [int(d) for d in cnpj]
43
44 # 最初のチェックディジットを検証
45 first_check = calculate_check_digit(digits[:12])
46 if digits[12] != first_check:
47 return False
48
49 # 2番目のチェックディジットを検証
50 second_check = calculate_check_digit(digits[:13])
51 if digits[13] != second_check:
52 return False
53
54 return True
55Java実装
1import java.util.Random;
2
3public class CNPJUtils {
4
5 public static String generateCNPJ() {
6 Random random = new Random();
7 int[] digits = new int[14];
8
9 // 最初の12桁をランダムに生成
10 for (int i = 0; i < 12; i++) {
11 digits[i] = random.nextInt(10);
12 }
13
14 // 最初のチェックディジットを計算
15 digits[12] = calculateCheckDigit(digits, 12);
16
17 // 2番目のチェックディジットを計算
18 digits[13] = calculateCheckDigit(digits, 13);
19
20 // CNPJをフォーマット
21 return String.format("%02d.%03d.%03d/%04d-%02d",
22 digits[0] * 10 + digits[1],
23 digits[2] * 100 + digits[3] * 10 + digits[4],
24 digits[5] * 100 + digits[6] * 10 + digits[7],
25 digits[8] * 1000 + digits[9] * 100 + digits[10] * 10 + digits[11],
26 digits[12] * 10 + digits[13]);
27 }
28
29 private static int calculateCheckDigit(int[] digits, int length) {
30 int[] weights = length < 13
31 ? new int[]{5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2}
32 : new int[]{6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2};
33
34 int sum = 0;
35 for (int i = 0; i < length; i++) {
36 sum += digits[i] * weights[i];
37 }
38
39 int remainder = sum % 11;
40 return remainder < 2 ? 0 : 11 - remainder;
41 }
42
43 public static boolean validateCNPJ(String cnpj) {
44 // 数字以外の文字を削除
45 cnpj = cnpj.replaceAll("\\D", "");
46
47 // 長さをチェック
48 if (cnpj.length() != 14) {
49 return false;
50 }
51
52 // すべての数字が同じかチェック
53 boolean allDigitsSame = true;
54 for (int i = 1; i < cnpj.length(); i++) {
55 if (cnpj.charAt(i) != cnpj.charAt(0)) {
56 allDigitsSame = false;
57 break;
58 }
59 }
60 if (allDigitsSame) {
61 return false;
62 }
63
64 // 整数の配列に変換
65 int[] digits = new int[14];
66 for (int i = 0; i < 14; i++) {
67 digits[i] = Character.getNumericValue(cnpj.charAt(i));
68 }
69
70 // 最初のチェックディジットを検証
71 int firstCheck = calculateCheckDigit(digits, 12);
72 if (digits[12] != firstCheck) {
73 return false;
74 }
75
76 // 2番目のチェックディジットを検証
77 int secondCheck = calculateCheckDigit(digits, 13);
78 if (digits[13] != secondCheck) {
79 return false;
80 }
81
82 return true;
83 }
84}
85重要な制限と考慮事項
このツールができること・できないこと
検証対象: 数学的な正確性 - チェックディジットがアルゴリズムの計算と一致するかどうか。
検証対象外: CNPJが国税局に登録されているか、アクティブな企業に属しているか、期待するビジネス名に関連しているかどうか。
スペルチェックと事実確認を比較すると、このツールはCNPJが数学的ルールに従って「正しく綴られている」かどうかを示しますが、実際の活動中のビジネス事業体に対応しているかどうかは判断できません。
法的および倫理的な使用
生成されたCNPJは、テストと開発のみを目的としています。数学的に有効ですが、ブラジルの当局に登録されていないため、以下のことに注意してください:
- ✅ 使用可能な場合: テストデータベースの入力、単体テストの検証ロジック、QA環境、ドキュメンテーションのコード例
- ❌ 決して使用しないでください: 税務申告、企業登録、契約の締結、実際の取引の処理、またはビジネスアイデンティティの虚偽表示
偽のCNPJを公式目的で使用することは、倫理的に問題があるだけでなく、ブラジル法に基づく違法行為であり、詐欺罪に問われる可能性があります。
技術的な制限を知っておくべきこと
ランダム生成の影響: ツールは最初の12桁をランダムに生成します。国税局が発行する実際のCNPJは、登録日、地域事務所、ビジネスタイプに関連する内部パターンに従います。生成された番号はこれらのパターンと一致しないため、洗練された検証システムでフラグが立つ可能性があります。
セマンティック検証なし: 有効なCNPJ形式は、有効なビジネスコンテキストを意味するわけではありません。例えば、政府機関には特定のCNPJ範囲があり、このジェネレーターが偶然にそれを作成したとしても、意味のあるものではありません。
フォーマット処理: バリデーターは様々な入力形式(12345678000195、12.345.678/0001-95)を受け入れますが、一部の従来のシステムでは正確な書式が求められます。特定の統合要件で必ずテストしてください。
プライバシーとセキュリティ
すべての処理はブラウザ上でクライアント側で行われます。生成または検証するCNPJはサーバーに送信されず、ログに記録されず、保存されません。ツールは個人情報を要求、処理、または取り扱いません。
CNPJバリデーションに関するよくある質問
CNPJの「バリデーション」と「検証」の違いは何ですか?
バリデーションは、数字が数学的に正しいかどうかをチェックします - 適切な形式、正しいチェックディジット、無効なパターンがないことを確認します。このツールはバリデーションを行います。
検証は、CNPJが実際の会社としてレセイタ・フェデラルのデータベースに登録されているかをチェックします。検証には政府のデータベースに問い合わせる必要があり、このツールでは行いません。
完全に有効なCNPJで検証されていないもの(このツールが生成するテスト番号など)や、実際の会社に属する無効なCNPJ(入力時のタイプミスなど)が存在する可能性があります。
生成されたCNPJを本番環境でのテストに使用できますか?
「本番環境でのテスト」の意味によって異なります。ステージング環境、負荷テスト、本番前QAには適しています。しかし、「本番環境でのテスト」が実際の取引、政府API、金融システムでのテストを意味する場合は、実際に登録されたCNPJが必要です。
より安全なアプローチは、生成されたCNPJを隔離されたテスト環境で使用し、本番統合をテストする際は、管理できる少数の実際のテスト会社のCNPJに切り替えることです。
なぜバリデーターは11.111.111/1111-11を拒否するのですか?
すべての数字が同じCNPJでも、数学的に有効なチェックディジットを生成できますが、レセイタ・フェデラルはこれらのパターンを明示的に除外しています。これは数学的な規則ではなく、ビジネス上の規則です。同様のことが一部のバリデーションシステムの連続パターンにも当てはまります。
これは、多くのシステムが「password123」のようなパスワードを長さの要件を満たしていても拒否するのと似ています - 技術的には有効ですが、実質的に受け入れられません。
異なるロケールでCNPJバリデーションを処理するにはどうすればよいですか?
ブラジルの企業が国際的なビジネスを行う際、外国のシステムにCNPJを入力する際に書式設定文字を省略することがあります。バリデーションロジックは、チェック前に数字以外の文字を削除する必要があります:
1const cleanCNPJ = input.replace(/\D/g, ''); // 数字以外のすべてを削除
212.345.678/0001-95、12345678000195、12 345 678 0001 95を同等の入力として受け入れます。
CNPJとCPFのバリデーションについて
CPF(個人納税者ID)はブラジルの個人向け、CNPJは企業向けです。異なるチェックディジットアルゴリズムと長さ(CPFは11桁、CNPJは14桁)を使用します。両方を扱うブラジルのアプリを構築する場合、別々のバリデーション関数が必要です - ただし、多くのライブラリが両方の形式をサポートしています。
一般的なパターンは、ユーザーに書式設定文字を削除した後の長さに基づいて、同じフィールドでCPFまたはCNPJを入力させることです。
これは、ブラジルで事業を行う外国企業にも適用されますか?
ブラジルで事業を行う外国企業も、レセイタ・フェデラルからCNPJを取得する必要があります。そのCNPJは国内企業と同じ形式とバリデーションルールに従います。「外国企業」用の特別なCNPJ形式はありません。
ただし、外国企業は追加の文書要件や異なる登録プロセスを持つ可能性があります - 詳細については、ブラジルの企業弁護士に相談してください。
CNPJ登録を確認するために政府のデータベースに問い合わせることはできますか?
はい、レセイタ・フェデラルは公開CNPJ照会サービスを通じて、基本的なCNPJ情報を公開でアクセスできます。CNPJを手動で検索したり、適切な認証があれば、プログラムで APIにアクセスしたりできます。
大量の使用には登録が必要で、悪用を防ぐためのレート制限があることに注意してください。
CNPJはどのくらいの頻度で変更されますか?
CNPJは、会社が名前、住所、所有構造を変更しても変更されない永久的な識別子です。ただし、会社が閉鎖され後に再登録する場合、新しいCNPJを受け取る可能性があります。支店番号(/XXXX部分)は、会社が新しい拠点を開設するにつれて追加される可能性がありますが、基本8桁の番号は一定のままです。
参考文献と追加リソース
公式政府情報源
- レセイタ・フェデラル・ド・ブラジル - 公式ポータル - CNPJ登録と検証サービスを提供するブラジル連邦歳入庁の公式ウェブサイト
- 公開CNPJ照会 - 公開CNPJ検索 - CNPJ登録状況を確認するための公式政府サービス
- 規範指示RFB第1863/2018号 - ブラジルにおけるCNPJ登録と使用に関する法的規制
技術標準と文書
- モジュラー演算アルゴリズム - チェックディジットの計算にはモジュロ11演算を使用し、検証桁の標準的なアプローチ
- ISO/IEC 7064 - ブラジルの文書検証設計に影響を与えたチェックディジットシステムの国際標準
- ブラジル民法典(法律第10.406/2002号) - CNPJ登録を必要とする事業体分類を定義する法的枠組み
開発者リソース
- NPMパッケージレジストリ - npmjs.com - ブラジルの文書検証ライブラリを含むJavaScriptライブラリのリポジトリ
- PyPI(Pythonパッケージインデックス) - pypi.org - CNPJ検証とブラジルの文書処理のためのPythonライブラリ
- GitHub - 複数のプログラミング言語でのCNPJ検証のオープンソース実装
CNPJの生成と検証を開始する
ブラジルの電子商取引プラットフォームを構築している場合、Mercado Pagoの支払い連携をテストしている場合、またはCNPJ検証のしくみを理解したい場合、このツールは生成と検証の機能に即座にアクセスできます。
インストール不要、APIキー不要、複雑な設定不要。ブラウザを開いてすぐに、有効なブラジルの企業識別子を操作できます。