【ITニュース解説】Validate VAT Numbers on Subscription Renewal, Not Purchase
2026年09月25日に「Dev.to」が公開したITニュース「Validate VAT Numbers on Subscription Renewal, Not Purchase」について初心者にもわかりやすく解説しています。
ITニュース概要
EUのB2Bサブスクリプションサービスでは、顧客のVAT番号を「購入時」だけでなく「更新時」にも再確認すべきだ。VAT番号は途中で無効になる可能性があり、各請求書発行前に再検証することで、正しい税務処理とコンプライアンスを維持できる。これは請求プロバイダーの更新イベントにフックしAPIで実装する。
ITニュース解説
現代のサブスクリプション型サービス、特に企業間で提供されるSaaS(Software as a Service)のようなデジタルサービスでは、消費税の一種であるVAT(付加価値税)の適切な処理が非常に重要となる。特にヨーロッパ連合(EU)域内での取引では、VATの課税ルールが複雑であり、顧客が事業者であると証明するために使用される「VAT番号」の有効性を、常に正確に把握しておくことが求められる。
多くの企業では、顧客がサービスを購入する際に一度だけVAT番号の有効性を確認しているかもしれない。しかし、この方法には大きな問題がある。購入時に有効だったVAT番号が、数か月後や1年後のサブスクリプション更新時にも有効である保証はどこにもないからだ。EUのVAT指令では、サブスクリプションの各更新は「新しいサービスの提供」とみなされる。そのため、顧客を事業者として扱い、VATの特別な処理(リバースチャージ)を適用するためには、それぞれのサービス提供時点、つまり各更新時点でのVAT番号の有効性を証明する証拠が必要となる。購入時の証拠は、数か月後の新しい提供には適用されないのだ。
リバースチャージとは、EU域内の事業者間取引において、本来であればサービスを提供する側(売り手)が徴収し、税務当局に納付すべきVATを、サービスを受ける側(買い手)が自ら計算して納付するという仕組みである。これにより、国際的な取引におけるVATの納税手続きが簡素化され、二重課税を防ぐ目的がある。このリバースチャージを適用するには、買い手である顧客がEU域内に設立された事業者であり、有効なVAT番号を持っていることが絶対的な条件となる。
なぜ購入時に有効だったVAT番号が、後に無効になることがあるのだろうか。VAT登録は永続的なものではない。顧客の企業は、自主的に登録を抹消したり、法令違反により登録を取り消されたり、倒産したり、あるいは事業再編によって新しいVAT番号を取得したりすることがある。また、特定のEU加盟国では、国内でのVAT番号は有効なままで、EU域内取引に使うVIES(VAT情報交換システム)ステータスが停止されるケースもある。これらの変化は売り手側に自動的に通知されることはないため、システムに保存されているVAT番号は、時間とともに古くなり、実情と合わなくなるリスクを抱えることになる。
VAT番号を再確認するタイミングとして考えられるのは、主に三つある。一つはアカウント作成時(サインアップ時)、二つ目は個別の購入時(チェックアウト時)、そして三つ目は定期的な一括検証(バッチ処理)である。しかし、サブスクリプションの更新時は、これらの中間に位置する最適なタイミングだと言える。更新時には新しい請求書が発行され、新しいサービス提供が行われるため、この時点でVAT番号を再確認することは、コンプライアンス上極めて理にかなっている。税務当局は、VAT番号をどのくらいの頻度で再確認すべきかという明確なルールを定めていないが、請求サイクルに合わせた確認は、低コストで高いリスク管理効果が得られる賢明な判断だ。
このVAT番号の再検証は、自社の請求システムに組み込むことができる。例えば、Stripeのような主要な請求プロバイダーは、請求書が最終決定される数日前に「invoice.upcoming」といった「更新前イベント」を発生させる機能を提供している。システムエンジニアは、このイベントをフック(特定のイベント発生時に自動的に呼び出されるプログラムの一部)として利用し、顧客のVAT番号を検証するためのAPI(vatnodeのようなサービスが提供する)を呼び出すコードを実装する。
具体的には、顧客の登録済みVAT番号を検証APIにGETリクエストで送信し、その有効性を確認する。この際、ネットワークの障害や検証システムの一時的な停止、あるいは誤った形式のVAT番号が登録されているといった様々なケースを想定し、適切なエラーハンドリングを実装することが重要である。例えば、一時的なネットワーク障害や外部サービスの停止であれば、即座に「無効」と判断せずに「保留」として後で再試行するべきだ。一方、システムに保存されているVAT番号の形式がそもそも誤っている場合や、APIキーの認証エラーなど、システム側の設定ミスであれば、再試行しても解決しないため、運用担当者への通知(「要対応」)を促すべきである。
APIからの応答は、VAT番号が「有効(valid)」であるか、「無効(invalid)」であるか、あるいは「保留(pending)」や「要対応(needs_attention)」といったステータスを返す。最も重要な点は、「無効」と判定された場合でも、自動的に顧客の課税処理を変更してはいけないということだ。VAT番号が無効と出たからといって、すぐにその顧客にVATを課税する方針に切り替えるのは早計である。これは、一時的なシステムエラーの可能性や、顧客が新しいVAT番号を取得しているがまだ通知していない可能性、あるいは本当に登録が抹消されたが税務上の処理を別途検討する必要があるなど、様々なケースが考えられるためだ。したがって、「無効」の結果が出た場合は、まず人間の手でレビューを行うか、顧客に直接連絡を取って状況を確認することが不可欠である。税務上の判断を要する場合は、資格のある税務アドバイザーに相談することも重要となる。
EUのVIESシステムは、VAT番号の有効性をリアルタイムで確認できるが、そのデータは各加盟国のデータベースに依存しており、欧州委員会はその正確性を完全に保証するものではない。VIESで検証が行われると、「コンサルテーションナンバー(照会番号)」という固有の番号が発行される。これは、特定の時間に特定のVAT番号が公式システムによって検証されたという証拠となり、将来的な監査において非常に有用な証拠となる。ただし、一部の加盟国ではVIESシステムが利用できない場合に、国内のデータベースで検証が行われることがあり、その際にはこのコンサルテーションナンバーは発行されない。
この更新時検証の仕組みは、vatnodeが提供する常時監視サービスとは異なる点にも注意が必要だ。更新時検証は、開発者が自身のコードでビルドプロバイダーのイベントをフックし、必要に応じてVAT検証APIを呼び出す方式であり、無料プランでも利用可能である。一方、vatnodeの常時監視サービスは、VAT番号を登録すると、vatnodeが自身のスケジュールで自動的に監視・再検証を行い、ステータス変更があった場合にウェブフックで通知してくれる有料サービスだ。どちらを選ぶかは、ビジネス要件や開発リソースによって決定することになるだろう。
結論として、EU域内でB2Bのサブスクリプション型SaaSサービスを提供する企業にとって、VAT番号の継続的かつ適切なタイミングでの検証は、法的なコンプライアンスを維持し、税務リスクを軽減するために不可欠なプロセスである。システムエンジニアは、このようなシステムの設計・実装において、購入時だけでなく更新時にもVAT番号を再確認するロジックを組み込み、その結果を慎重に扱い、安易な自動課税変更を避けるという重要な視点を持つべきだ。