法人番号のチェックデジットとは?計算方法と確かめ方

法人番号は13桁で、先頭の1桁がチェックデジット(検査用数字)です。残りの12桁から決まった計算で求められるので、入力された法人番号が正しい形かどうかを、国税庁に問い合わせなくても確かめられます。

この記事では、チェックデジットの計算方法と、Excel・Python・JavaScriptでの確かめ方を説明します。法人番号の情報そのものをシステムで取得する方法は法人番号APIの比較にまとめています。

チェックデジットの役割

チェックデジットは、番号の打ち間違いを見つけるための数字です。1桁の打ち間違いや、隣り合う数字の入れ替えの多くは、計算が合わなくなるので見つけられます。

ただし、計算が合っても、その法人番号が実在するとは限りません。 実在するか、どの法人の番号かは、国税庁の公表サイトやAPIで確かめる必要があります。

チェックデジットの計算方法

法人番号の2桁目から13桁目までの12桁を「基礎番号」と呼びます。チェックデジットは次の式で求めます。

チェックデジット = 9 −( Σ(Pn × Qn)を 9 で割った余り )
  • Pn: 基礎番号の、右から数えてn桁目の数字(n = 1〜12)
  • Qn: nが奇数なら1、偶数なら2

つまり、基礎番号を右から見て、奇数桁はそのまま、偶数桁は2倍して全部足し、9で割った余りを9から引きます。

計算例

法人番号 1180301018771 で確かめてみます。基礎番号は 180301018771 です。

右からの桁 n123456789101112
数字 Pn177810103081
重み Qn121212121212
Pn × Qn11471610103082

合計は53です。53を9で割った余りは8なので、チェックデジットは 9 − 8 = 1 になります。先頭の1桁と一致するので、正しい形の法人番号です。

Excelで確かめる

A2セルに13桁の法人番号が文字列で入っているとき、次の式で「正しい形かどうか」を判定できます。

=IF(LEN(A2)<>13,FALSE,VALUE(LEFT(A2,1))=9-MOD(SUMPRODUCT(VALUE(MID(A2,14-ROW($1:$12),1))*(2-MOD(ROW($1:$12),2))),9))

MID(A2,14-ROW($1:$12),1) で右から1桁ずつ取り出し、2-MOD(ROW($1:$12),2) で奇数桁は1、偶数桁は2の重みを付けています。法人番号は先頭が0のこともあるので、セルは文字列の書式にしておきます。

Pythonで確かめる

def is_valid_corporate_number(number: str) -> bool:
    if len(number) != 13 or not number.isdigit():
        return False
    base = number[1:]
    total = 0
    for n, digit in enumerate(reversed(base), start=1):
        weight = 1 if n % 2 == 1 else 2
        total += int(digit) * weight
    return int(number[0]) == 9 - total % 9


print(is_valid_corporate_number("1180301018771"))  # True
print(is_valid_corporate_number("1180301018772"))  # False

JavaScriptで確かめる

function isValidCorporateNumber(number) {
  if (!/^\d{13}$/.test(number)) return false;
  const base = number.slice(1).split("").reverse();
  const total = base.reduce(
    (sum, digit, i) => sum + Number(digit) * (i % 2 === 0 ? 1 : 2),
    0,
  );
  return Number(number[0]) === 9 - (total % 9);
}

console.log(isValidCorporateNumber("1180301018771")); // true

入力フォームでこのチェックをしておくと、打ち間違いのままAPIに問い合わせることが減ります。

インボイスの登録番号の場合

法人のインボイスの登録番号(T番号)は「T+法人番号」なので、Tのあとの13桁に同じ計算が使えます(法人番号とインボイス番号の違い)。

まとめ

法人番号の先頭1桁はチェックデジットで、基礎番号12桁を右から奇数桁は1倍、偶数桁は2倍して足し、9で割った余りを9から引いて求めます。打ち間違いは見つけられますが、実在するかどうかは国税庁の公表サイトやAPIで確かめましょう。

この記事を書いた人

Bango API の開発者です。国税庁の法人番号Web-APIとインボイスWeb-APIを使ったシステムを実装してきた経験をもとに書いています。

本サービスは、国税庁法人番号システムWeb-API機能および国税庁適格請求書発行事業者公表システムのWeb-API機能を利用して取得した情報をもとに作成していますが、サービスの内容は国税庁によって保証されたものではありません。取得した情報は編集・加工して提供しています。