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

法人番号は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 です。
| 右からの桁 n | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 数字 Pn | 1 | 7 | 7 | 8 | 1 | 0 | 1 | 0 | 3 | 0 | 8 | 1 |
| 重み Qn | 1 | 2 | 1 | 2 | 1 | 2 | 1 | 2 | 1 | 2 | 1 | 2 |
| Pn × Qn | 1 | 14 | 7 | 16 | 1 | 0 | 1 | 0 | 3 | 0 | 8 | 2 |
合計は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")) # FalseJavaScriptで確かめる
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で確かめましょう。





