法人番号のチェックディジットは形式確認だけ|登記状態とインボイス登録の確認手順

読了 約10分 たびすけ
AIによる新規取引先チェックと企業照合を表す記事のアイキャッチ

次に読む記事

関連するテーマの記事を、先に確認できます。

チェックディジットが計算式に合っていても、分かるのは法人番号13桁の形式だけです。法人の実在、登記記録の状態や閉鎖、承継先、インボイス登録の現在状態は証明しません。取引先確認では、番号の形式、国税庁の法人番号公表情報、閉鎖日と閉鎖事由・承継先、別システムのインボイス登録情報を順に照合し、エラーや解釈できない結果は「未確認」のまま人へ回します。

判定を一つの「有効」にまとめないのは、番号の入力ミス検出と、登記上の情報・取引先申請の照合と、インボイス登録の確認が別工程だからです。チェックディジットが通った後も、公式情報との照合が完了するまでは登録状態を決められません。

チェックディジットは先頭1桁と後ろ12桁の計算だけを見る

法人番号は、先頭に1桁の検査用数字、その後ろに12桁の基礎番号が続く13桁です。基礎番号を右端から1、2、1、2……の重みで掛けて合計し、その合計を9で割った余りを9から引くと検査用数字になります。検査用数字の値は1〜9です。国税庁はこれを入力時の誤りを確認するための数字と説明しています。

def validate_corporate_number(number: str) -> bool:
    if not isinstance(number, str) or len(number) != 13:
        return False
    if any(ch < "0" or ch > "9" for ch in number):
        return False
    weighted_sum = sum(
        int(ch) * (1 if position % 2 == 0 else 2)
        for position, ch in enumerate(reversed(number[1:]))
    )
    return int(number[0]) == 9 - (weighted_sum % 9)

国税庁のチェックディジット計算資料にある仮定例では、基礎番号「700110005901」の右からの奇数位置の合計が11、偶数位置が13です。13×2+11=37、9で割った余りは1なので、検査用数字は9−1=8となり、番号は「8700110005901」です。この基礎番号は計算説明のための仮定で、実在する法人への割当を示す例ではありません。

関数がTrueを返すのは、入力が半角数字13桁で、先頭の検査用数字が計算式と合ったという意味です。法人番号公表情報の照会はしていません。したがってTrueを「相手先が実在する」「登記記録が現在も開いている」「インボイス登録中」と読み替えず、次の照合へ進みます。

法人番号公表情報では閉鎖記録も含めて照合する

形式を確認した番号は、国税庁の法人番号公表サイトで検索し、申請された商号と公表上の名称、登記記録を照らし合わせます。閉鎖の有無も確認する場合は、検索画面の「登記記録の閉鎖等が生じた法人を検索対象に含める」を選びます。番号欄は13桁の半角数字です。APIを使わない場合も、この公式画面で手動照会できます。

番号指定の法人番号システムWeb-APIは最大10件をまとめて照会できます。利用には無料のアプリケーションIDが必要です。API仕様や利用条件は改定されるため、接続時には国税庁の最新案内を確認してください。

Web-API Ver.4.0の提供データ仕様では、CSVの先頭行に「lastUpdateDate」「count」「divideNumber」「divideSize」の4項目があり、法人データは次の行から始まります。下表の位置は、先頭の応答行を除いた法人データ行の0始まりです。

データ行の位置項目読む意味
row[1]corporateNumber法人番号
row[6]name公表されている商号・名称
row[18]closeDate登記記録の閉鎖等の事由が生じた日
row[19]closeCause閉鎖等の事由を示すコード
row[20]successorCorporateNumber該当する場合の存続法人の番号
row[23]latest1は最新情報、0は過去情報

closeDateとcloseCauseは別の情報です。closeDateは閉鎖等の事由が生じた日で、閉鎖理由そのものではありません。closeCauseの01は設立登記法人の清算結了等、11は合併による解散等、21は登記官による閉鎖、31は設立登記法人以外のその他の清算結了等を示します。日付が入っているというだけで「合併」と判定せず、事由コードを確認します。

successorCorporateNumberは、合併など事業承継に伴って登記記録が閉鎖された場合の存続法人番号です。番号が返った場合は、閉鎖法人の番号と混同せず、必要に応じて承継先の番号も法人番号公表情報で照合します。履歴を含む応答ではlatestも確認し、latest=0の過去情報を現在の状態として扱わないようにします。

公表データは当日11時と16時に更新されますが、処理が遅れる場合もあります。応答のlastUpdateDateと実際の照会日時は別々に記録します。参照したVer.4.0第六編は2021年10月版です。列の位置は公式仕様の順序を合成CSVで照合したもので、認証付きの実API応答を示すものではありません。仕様書のtype=02はCSV/Unicodeと記載されていますが、この表記だけからバイト列をUTF-8と決めず、実装時に最新仕様を確認してください。

また、国税庁のWeb-API利用規約の改正告知では、2026年9月24日の改正施行が案内されています。利用を始める時点の規約と仕様を確認してください。

エラー応答は法人の状態を示す検索結果ではありません。たとえば400-041は一度に指定する番号が10件を超えた場合、400-042と400-043は半角数字または13桁の条件を満たさない場合、404は未登録・無効なアプリケーションID等、500は公表機能の障害等です。403は同じIDからの多数アクセスによる制限を示します。

400-041なら照会を10件以下に分け、400-042/043なら入力を確認します。404ならアプリケーションIDの状態を確かめ、403や500では同じ要求を繰り返さず、公式検索画面などで照合を続けます。いずれもエラーのまま相手先を「存在しない」と判定できるものではありません。

検索結果にデータ行がない場合も、提供資料では認証付きの実応答を使った意味確認ができていません。0件だけで法人不存在と決めず、番号の入力と閉鎖記録を含める検索条件を再確認します。

インボイス登録状態は別の公表情報で確かめる

登録番号の形式は事業者の種類で異なります。法人番号を持つ課税事業者は、登録番号の先頭にTを付けて13桁の法人番号を続けます。一方、個人事業者や人格のない社団等は、法人番号や個人番号と重複しない事業者別の13桁番号です。形式上の関係だけでは、適格請求書発行事業者として現在登録中かどうかは分かりません。

登録状態は法人番号公表サイトとは別の適格請求書発行事業者公表サイトで登録番号を検索し、登録年月日、登録取消年月日、登録失効年月日を確認します。登録番号の成り立ちは国税庁の登録番号とはにも説明があります。法人番号APIの照会結果や番号の形だけで登録中と判定せず、対象となる日付に照らして別に確認します。

エラーや曖昧な状態は人の確認へ回す

人が確認する状態に止めるのは、チェックディジットが合わない、法人番号APIに接続できない、結果行がない、名称が申請と一致しない、closeDateがあるのにcloseCauseを解釈できない、承継先が示される、またはインボイス登録の日付を対象取引に当てはめられない場合です。閉鎖や不一致が見つかっても、それだけで取引先の登録可否まで決めず、該当する公表情報と申請内容を並べて確認します。

確認を引き継ぐときは、申請された法人番号・商号・登録番号、チェックディジットの結果、法人番号公表情報のname・closeDate・closeCause・successorCorporateNumber・latest、lastUpdateDateと照会日時、インボイス公表情報の登録・取消・失効年月日をそろえます。人はどの情報が一致し、どこが未確認かを見て判断できます。エラーや曖昧さを「問題なし」に変えないことが、自動照合の境界です。

自動処理の範囲、根拠の残し方、例外時の承認者を分ける考え方は、経理AIの内部統制で作業・責任・証跡を分ける方法にもまとめられています。

記録上も、①チェックディジットの形式結果、②法人番号公表情報との照合結果、③インボイス登録情報の確認結果、④人の判断を別々に残します。「番号が有効」という一つの値にまとめず、未確認の欄が残っていれば確認が終わるまで承認判断を保留します。