メニュー

税番号の検証で分かること: 形式と実在の距離

税番号の検証は何を確かめているのか、計算で判定できる番号とできない番号の違い、形式は通ったのに登録がない理由を順に整理します。

公開日

  • 税番号
  • 検証

税番号の検証という言葉は、幅の広い作業をまとめて指しています。入力された文字列が決められた書き方に沿っているかを見るのか、番号が実際に発行されているかを確かめるのかで、やることはまったく違います。この記事では、検証が答える問いを分け、計算で判定できる部分と外部に問い合わせるしかない部分を見きわめ、誤りを利用者にどう説明するかを整理します。

税番号の検証とは何を確かめる作業か

税番号の検証は、大きく三つの問いに分けられます。第一に、必要な項目が埋まっているか。第二に、値が決められた書き方に沿っているか。第三に、その番号が現に発行されているか、です。

この三つは難易度も確実性も違います。最初の二つは手元の情報だけで判定でき、結果は決定的です。三つ目は外部の記録に頼るため、通信の状態に左右されます。ところが実際の実装では、この三つが一つの「エラー」にまとめられがちです。まとめてしまうと、利用者は何を直せばよいのか分からなくなります。

計算で真偽を判定できる番号はあるのか?

あります。ただし一部です。番号の末尾に検査用の数字や文字を組み込む仕組みを採っている国や制度では、桁の並びから計算して、書き写しの誤りを検出できます。一文字の取り違えや、隣り合う二文字の入れ替わりは、この計算でよく引っかかります。

ここで期待しすぎないことが大切です。計算が保証するのは「その並びが規則どおりに作られている」ことだけであり、実在や有効性ではありません。規則に沿った並びは無数に作れます。検査用の数字は、入力の誤りを見つけるための道具であって、番号の正しさを証明する道具ではないと考えてください。

計算の方法が定まっていない番号も多くあります。長さと使える文字だけが決まっていて、それ以上の判定ができない場合は、形式の確認で止めるのが正しい設計です。

形式が通ったのに登録がないのはなぜか?

理由はいくつかあります。最も単純なのは、書き方の規則を満たす並びを人が作れてしまうことです。もう一つは、番号が過去に有効だったことです。事業を畳んだ、区分が変わった、登録が取り消された、といった事情で、番号そのものは形として残ります。

さらに、問い合わせた瞬間の状態しか分からないという限界があります。昨日まで登録があった番号が、今日も同じとは限りません。逆もあります。登録があるのに、照会の仕組みが一時的に応答を返さないこともあります。この場合、利用者が入力した値は何も間違っていません。それでも実装が「未登録」と即断すれば、正しい入力を拒むことになります。

検証の三段階を整理する

段階 確かめること 判定の性質 失敗したときの説明
必須の確認 項目が埋まっているか 決定的 入力を促す
形式の確認 長さと文字種と並び 決定的 書き方を示す
実在の確認 発行されているか 時点に依存する 保留として伝える

三段階を分けておくと、それぞれの結果に対して別の案内を返せます。とくに第三段階は、失敗を拒否と同一視しないことが重要です。判定できない状態を、判定できないまま伝える設計にしてください。

検証用の番号を生成して試す

自分の手元の値だけで確かめようとすると、通る例ばかりを集めてしまいがちです。狙って失敗させる材料があると、分岐の漏れが見つけやすくなります。当サイトのテスト用の会社データ生成ツールでは、国と地域を選ぶと、その土地の書き方に沿った税番号を含む企業の記録を一件用意できます。

生成される値はテスト専用であり、発行の記録に対応するものではありません。つまり「形式は通るが登録はない」という状態を安全に再現できます。国ごとに書き方がどう違うかはVAT 番号の形式と在冊確認で、登録の調べ方は会社の登録番号は国ごとにどう違うのかで扱っています。

開発者向け: 誤りを説明できる形で返す

検証の結果は、真偽の二値ではなく、理由の付いた構造として返してください。おすすめは、どの段階で止まったか、どの項目が原因か、利用者が直せるのか、そして今すぐ再試行すべきかを、それぞれ別の値として持たせる形です。

段階を分けずに一つの真偽値へ潰すと、画面には「無効な番号です」しか出せません。これは、書き方の誤りにも、登録の不在にも、通信の失敗にも同じ文言が付くことを意味します。前三者は利用者の行動がまったく違うため、同じ案内は役に立ちません。

通信の失敗は、必ず成功でも失敗でもない第三の状態として扱ってください。時間切れと応答なしと混雑を区別し、再試行できるかどうかを結果に含めます。保留の状態をそのまま画面に残し、後から再確認できる導線を用意するのが安全です。

検証の結果を保存するなら、判定の時点と、根拠となった仕組みの種類も併せて記録します。古い結果を無期限に使い回すと、実態から離れた判断が残り続けます。正規化は比較のためだけに行い、保存する値は入力どおりに保ってください。

値を検査用の数字の計算に通す場合、前後の空白や区切り記号をどう扱うかを先に決めます。空白を許すのか、落としてから計算するのかで、結果が変わるためです。

次のステップ

まず、手元の検証がどの段階までを担っているかを書き出してください。三段階のどこかが抜けている、あるいは全部が一つの判定に混ざっている箇所が見つかるはずです。次に、第三段階の失敗を保留として扱うよう改めます。

確かめ用の値はテスト用の会社データ生成ツールで用意できます。請求の流れ全体を通す場合は請求フォームのテストを参照してください。

本記事は検証の考え方を一般的に説明するものであり、特定の制度の要件や個別の税務判断を示すものではありません。

続けて読む

テスト用の会社データ生成の関連記事