Media > AI活用ユースケース > 経理 > 仕入先・支払先の適格請求書発行事業者の登録状況を国税庁の公表サイトのWeb-APIで毎月確かめ、登録の取消・失効と名称の変更を支払先台帳と照らして経理へ知らせる

仕入先・支払先の適格請求書発行事業者の登録状況を国税庁の公表サイトのWeb-APIで毎月確かめ、登録の取消・失効と名称の変更を支払先台帳と照らして経理へ知らせる

実装ステータス:構成例 技術的に実現可能な構成として設計したもの。自社未検証

支払先台帳にある登録番号を、国税庁の適格請求書発行事業者公表システムの Web-API で毎月照会します。登録の取消・失効と、公表されている名称と台帳の名称の食い違いを拾い、支払の前に経理へ知らせます。

サマリー
生成AI
ChatGPT/Claude/Gemini
連携・自動化
Make/n8n/Power Automate/Zapier
対象業界
商社/小売/建設/製造
対象部門
経理
対象業務
内容確認・チェック/台帳・マスタ管理
主な課題
人手が足りない/期限・対応漏れが起きる/確認ミスが多い
AIで行う処理
判定
主な効果
入力漏れ削減/品質標準化/工数削減
導入難易度
★★★☆☆
実装レベル
本格構成
費用感
API連携(中)
人間の確認
条件付き
現在工数
30h/月
AI導入後
5h/月
想定削減
83%
年間削減
300h
モデル条件による試算値です。実在企業の実績ではありません。

01導入前 / 導入後の業務フロー

導入前(Before)
  1. 支払予定表から、その月に支払がある支払先を書き出す
  2. 公表サイトの検索画面に登録番号を入れて検索する(一度に10件まで)
  3. 検索結果の名称・登録年月日・取消や失効の有無を、台帳の名称と見比べる
  4. 名称が違うものは、表記の違いか、商号が変わったのか、番号の誤りかを、取引先のサイトや過去の請求書で調べる
  5. 取消・失効があったもの、名称が食い違うものを一覧にし、経理の責任者と購買の担当に回す
  6. 台帳の確認日を書き換える
導入後(After)
  1. 自動毎月3日の朝、ワークフローが支払予定表と支払先台帳を読む
  2. 自動その月に支払がある支払先の登録番号を10件ずつまとめ、Web-API で照会する
  3. 自動支払予定の請求書ごとに、取引年月日を基準日にして、その日に登録されていたかを照会する
  4. 自動返ってきた事業者処理区分と取消・失効の年月日から、`registered` / `disposed` / `expired` / `not_found` を機械的に決める
  5. 【AI】 台帳の名称と公表の名称が文字として一致しないものについて、表記の違いか、商号の変更か、別の事業者の疑いかを判定し、根拠を書き出す
  6. 自動判定の結果を照合の一覧に書き、取消・失効と別の事業者の疑いを経理の責任者へ知らせる
  7. 人経理の担当者が、取消・失効、別の事業者の疑い、判断できないものを確かめる
  8. 人仕入税額控除の扱い、取引先や購買への連絡、台帳の修正を決める
各工程の詳しい説明を読む
  1. 支払予定表から、その月に支払がある支払先を書き出す
  2. 公表サイトの検索画面に登録番号を入れて検索する(一度に10件まで)
  3. 検索結果の名称・登録年月日・取消や失効の有無を、台帳の名称と見比べる
  4. 名称が違うものは、表記の違いか、商号が変わったのか、番号の誤りかを、取引先のサイトや過去の請求書で調べる
  5. 取消・失効があったもの、名称が食い違うものを一覧にし、経理の責任者と購買の担当に回す
  6. 台帳の確認日を書き換える

(a)取消・失効に支払の後で気づく。 600社を毎月検索し切れず、支払額の大きい相手から順に見て、残りは翌月に回しています。後回しにした相手の登録が先月失効していたことに、決算の前に気づくことがあります。

(b)名称の食い違いのほとんどは表記の違い。 「㈱」と「株式会社」、全角と半角、支店名の有無、カナと漢字。食い違いと出た相手の大半は同じ事業者で、その確認に時間が消えます。 その中に、商号の変更と番号の打ち間違いが紛れています。

(c)個人の支払先の名称が台帳と合わない。 台帳には屋号で登録していても、公表されるのは氏名で、屋号は本人が申し出た場合だけ載ります。屋号と氏名を見比べても、同じ人かどうかは名称からは分かりません。

(d)確認の記録が残らない。 誰が、いつ、何を見て「同じ相手」と判断したかが台帳に残らず、翌月も同じ相手で同じ確認をくり返しています。

  1. 【自動】 毎月3日の朝、ワークフローが支払予定表と支払先台帳を読む
  2. 【自動】 その月に支払がある支払先の登録番号を10件ずつまとめ、Web-API で照会する
  3. 【自動】 支払予定の請求書ごとに、取引年月日を基準日にして、その日に登録されていたかを照会する
  4. 【自動】 返ってきた事業者処理区分と取消・失効の年月日から、registered / disposed / expired / not_found を機械的に決める
  5. 【AI】 台帳の名称と公表の名称が文字として一致しないものについて、表記の違いか、商号の変更か、別の事業者の疑いかを判定し、根拠を書き出す
  6. 【自動】 判定の結果を照合の一覧に書き、取消・失効と別の事業者の疑いを経理の責任者へ知らせる
  7. 【人】 経理の担当者が、取消・失効、別の事業者の疑い、判断できないものを確かめる
  8. 【人】 仕入税額控除の扱い、取引先や購買への連絡、台帳の修正を決める

4番目をAIにさせないのは、意図してのことです。 取消か失効か、いつからかは、Web-API が区分と年月日で返します。言葉で判断させる余地がありません。 AIに読ませると、区分の読み違えという新しい誤りが入ります。

5番目は、文字として一致しないものだけに絞ります。 600社のうち名称が完全に一致する相手はAIに渡しません。AIの判定の数が減るほど、人が確かめる数も減ります。

02今回想定するシステム構成

構成図
支払予定表・支払先台帳(スプレッドシート)
   │
   ▼【トリガー】Schedule Trigger(毎月3日 8時、Asia/Tokyo)
n8n のワークフロー
   ├──▶ Google Sheets ノードで台帳と支払予定表を読む
   ├──▶ Loop Over Items で登録番号を10件ずつに分ける
   ├──▶ HTTP Request で Web-API を照会
   │      ・登録番号の指定(/1/num、履歴情報あり)
   │      ・登録番号と日付の指定(/1/valid、基準日=取引年月日)
   ├──▶ 事業者処理区分と年月日から、登録の状態を規則で決める
   ├──▶ 名称が文字として一致しないものだけを次へ
   ▼
Basic LLM Chain + Claude(名称の比較の判定)
   │  Structured Output Parser で決まった形のJSONを返す
   ▼
Google Sheets ノードで照合の一覧に書く → 経理の責任者へ通知
   ▼【人】取消・失効と別の事業者の疑いの確認、仕入税額控除の扱いの判断
役割想定する製品代替候補
ワークフローn8nMake、Power Automate、Zapier
生成AIClaude API(n8n の Anthropic Chat Model ノード)OpenAI API、Gemini API
保管Google スプレッドシート(支払先台帳、支払予定表、照合の一覧)データベース
通知社内チャットメール

新しく足すのは、n8n のワークフローと、照合の一覧のシートだけです。 支払先台帳には書き込みません。台帳の名称や番号を直すかは、人が照合の一覧を見て決めます。

土台になるのは、国税庁の適格請求書発行事業者公表システム Web-API 機能です。 利用者のシステムからリクエストを送ると、指定した登録番号で抽出した情報や、指定した期間の更新(差分)情報を返すシステム間連携の仕組みで、設計方式は REST とされています。提供されている機能は「登録番号の指定」「取得期間の指定」「登録番号と日付の指定」の3つです。

使うにはアプリケーションIDが要ります(発行は無料)。 インボイスの Web-API を使える「インボイス用アプリケーションID」は、メールアドレスの仮登録の後、基本情報を入力し、「公表情報の取得方法及び利用方法」が分かる資料を提出して、国税庁の審査を経て発行されます。Web-API 機能の利用規約への同意も要ります。ワークフローを組む前に、まずこの申請を出します。 検証用の事業者の名称を使った検証環境も用意されています。

n8n を選ぶ理由は、照会が「10件ずつ」「基準日つき」で何百回にも分かれるからです。 Loop Over Items で番号を束ね、HTTP Request で照会し、返ってきた区分で分岐する、という流れをノードの並びのまま見て直せます。 生成AIを呼ぶのは名称の比較の1か所だけです。

03どうやって実装するのか

Step1

処理の起点を決める

毎月3日の朝8時に、Schedule Trigger で動かします。 支払予定表は前月末の締めで固まり、支払は月の半ばです。3日に照会すれば、支払の前に10日ほど確かめる時間が残ります。

Schedule Trigger は月の何日に動かすかを1から31で指定できます。ワークフローのタイムゾーンが無ければインスタンスのタイムゾーンを使い、セルフホストの既定は America/New York とされています。ワークフローのタイムゾーンを Asia/Tokyo にします。 保存して公開しないと動かない点も確かめます。

臨時の支払があるときは、手で動かせるようにしておきます。 同じワークフローを、支払予定表の対象の行だけを指定して動かします。

Step2

入力データを集める

データ中身取得元
支払先台帳支払先コード、名称、登録番号、個人か法人か、屋号、前回の照合の結果と日付スプレッドシート
支払予定表支払先コード、請求書の番号、取引年月日、金額、支払日スプレッドシート
公表情報登録番号、事業者処理区分、人格区分、登録年月日、取消年月日、失効年月日、氏名又は名称、主たる屋号、通称・旧姓、最新履歴Web-API
過去の判定の記録支払先ごとに、名称の違いを人が「同じ相手」と判断した記録と理由照合の一覧

質を決めるのは、いちばん下の過去の判定の記録です。 「㈱山田製作所」と「株式会社ヤマダ製作所」を一度人が同じ相手と確かめたら、同じ組み合わせは翌月から判定に回しません。 第3章の(d)は、この記録で解きます。

公表情報の「主たる屋号」と「通称・旧姓」も必ず取ります。 個人の支払先は台帳に屋号で載っていることが多く、公表の側に屋号があれば、名称の比較の材料が1つ増えます。 屋号が空なら、名称だけでは判定できないものとして扱います。

Step3

データの取得方法を決める

照会リクエスト何に使うか
登録番号の指定https://web-api.invoice-kohyo.nta.go.jp/1/num?id=…&number=…&type=21&history=1最新の状態と、登録・取消・失効の履歴
登録番号と日付の指定https://web-api.invoice-kohyo.nta.go.jp/1/valid?id=…&number=…&day=YYYY-MM-DD&type=21請求書の取引年月日に登録されていたか

登録番号は「T」に13桁を付けた形で、カンマ区切りで最大10件まで指定できます。 600社なら60回の照会です。Loop Over Items のバッチの大きさを10にし、1回ごとに10件の番号をまとめて送ります。 応答形式は CSV(01)、XML(11)、JSON(21)から選べ、後段で扱いやすい JSON にします。

JSON の応答には、最終更新年月日(lastUpdateDate)、総件数(count)、分割番号、分割数が先頭に付き、その下に公表情報(announcement)が並びます。 1件ごとに、登録番号(registratedNumber)、事業者処理区分(process)、氏名又は名称(name)、登録・取消・失効の年月日が入ります。送った番号の数と返ってきた番号を突き合わせ、返ってこなかった番号を not_found にします。 総件数だけを見ると、履歴つきの応答では1つの番号に複数の行が返るため数が合いません。

履歴情報要否(history)を「1」にすると、登録・取消・失効に係る履歴も返ります。 指定しなければ「0」として扱われ、リクエスト時点の最新情報だけが返ります。最新履歴(latest)が「1」のものが今の状態、「0」のものが過去の情報です。

2つ目の照会は、登録番号と日付を基準日にして、直近の登録・取消・失効に紐づく情報を返す機能です。 支払予定表の請求書ごとに、取引年月日を基準日(day)にして照会します。月の途中で失効した相手は、月初の取引は登録の期間内、月末の取引は期間外になることがあります。支払先単位ではなく、請求書単位で確かめる理由はここです。

支払先が数万社ある場合は、取得期間の指定(/1/diff)を使います。 期間内に更新年月日が含まれる公表情報を返す機能で、指定できる期間は最大50日、該当が500件を超えると応答が分割され、分割番号を分割数まで増やしながら取り直します。全国の更新が返るため、本記事の規模では登録番号の指定のほうが軽くなります。

Step4

AIへ渡す前に整形する

  1. 登録番号の書き方をそろえる … 全角・半角、「T」の有無、ハイフンや空白を除き、「T」+13桁にします。桁数が合わないものは照会せず、台帳の不備として一覧に出します
  2. 登録番号が空の支払先を分ける … 免税事業者として取引している相手と、番号の聞き漏れとを、台帳の区分で分けます
  3. 同じ番号の重複をまとめる … 1つの事業者に支払先コードが複数あることがあります。照会は番号ごとに1回にします
  4. 名称の比較の前に、規則で正規化する … 「㈱」「(株)」を「株式会社」に、全角英数字を半角に、空白を除きます。正規化して一致したものはAIに渡しません
  5. 過去に人が同じ相手と判断した組み合わせを外す … 台帳の名称と公表の名称の組が記録にあれば、判定を省きます
  6. 支払予定表と台帳を支払先コードで結ぶ … 支払予定表にあって台帳に無い支払先は、照会の前に一覧へ出します。臨時の支払先が台帳の登録を飛ばしていることがあります

4番目と5番目で、AIに渡す件数が大きく減ります。 表記の違いの大半は、規則の正規化で片づきます。AIに残るのは、カナと漢字、旧社名と新社名、屋号と氏名のように、規則では決められない組み合わせだけです。

Step5

AIに処理させる

させるのは、台帳の名称と公表の名称の組1件ごとに、同じ事業者と見てよいかを4つに分けて判定し、根拠を書き出すことです。

判定意味例
notation表記の違いで、同じ事業者と見てよい「ヤマダ製作所」と「山田製作所」、支店名の有無
renamed商号の変更の可能性がある公表の履歴に名称の変更があり、業態の語が共通
different別の事業者の疑いがある名称の主要な語が共通しない、法人と個人が逆
undetermined名称だけでは判断できない個人で、台帳が屋号、公表に屋号が無い
させないこと理由
登録の状態を決める取消・失効は区分と年月日で規則が決める
仕入税額控除の扱いを書く経過措置や特例の当てはめは、経理と顧問税理士が決める
台帳の名称を書き換える直すかどうかは、取引先に確かめたうえで人が決める
正しい登録番号を推測する桁を入れ替える、近い番号を挙げることをさせない
取引先のことを知識で補う「この会社は○年に社名を変えた」と書かせない。公表の履歴だけを根拠にする

4行目がいちばん起きやすい失敗です。 名称が合わない番号を渡すと、生成AIは「番号の末尾の2桁が入れ替わっている可能性があります」と、それらしい番号を挙げます。照会もしていない番号を候補として出されると、担当者がそれを台帳に書き写す危険があります。 番号の誤りが疑われるときは different とし、正しい番号は取引先に確かめます。

Step6

指示内容を固定する

Basic LLM Chain の System のメッセージに、次のように書きます。

あなたは経理部で、支払先台帳の名称と、国税庁の適格請求書発行事業者
公表システムが返した名称を比べる担当です。入力は、1つの登録番号に
ついての、台帳の情報と公表情報の組です。

【判定の区分】
- notation ..... 表記の違い(カナと漢字、支店名、法人の種類の略し方)で、
                 同じ事業者と見てよい
- renamed ...... 公表情報の履歴に名称の変更があり、商号の変更と考えられる
- different .... 名称の主要な語が共通しない、法人と個人が台帳と逆など、
                 別の事業者を指している疑いがある
- undetermined . 名称だけでは判断できない
迷ったときに notation を選ばないでください。

【厳守事項】
- 判断の根拠は、入力に含まれる台帳の情報と公表情報だけにしてください。
  取引先について知っていることを補わないでください。
- 登録の状態(登録・取消・失効)は判定しないでください。入力の
  status は、すでに決まったものとして読むだけにしてください。
- 正しい登録番号を推測しないでください。番号の誤りが疑われるときは
  different とし、suspected_cause に「番号の誤りの疑い」と書いてください。
- 個人の事業者で、台帳が屋号、公表情報に主たる屋号が無いときは
  undetermined としてください。
- evidence には、比べた語をそのまま書いてください。
- 仕入税額控除の扱いや、取引先への連絡の要否を書かないでください。

【台帳の情報】{ledger}
【公表情報(最新と履歴)】{announcement}

「迷ったときに notation を選ばない」が、この指示の要です。 名称の比較を頼むと、生成AIは同じ相手と見る方向に寄りがちです。同じ相手と判定されたものは人が見ないので、誤りがそのまま残ります。 迷ったら人が見る側へ倒します。

「知っていることを補わない」も同じ考えです。 有名な企業ほど、生成AIは旧社名や合併の経緯を知識から書きます。根拠が公表の履歴に無いものは、確かめようがありません。

Step7

出力形式を固定する

Structured Output Parser で、次の形のJSONを返させます。

{
  "registration_no": "",
  "vendor_code": "",
  "ledger_name": "",
  "published_name": "",
  "published_trade_name": "",
  "kind": "corporate | individual",
  "judgment": "notation | renamed | different | undetermined",
  "evidence": [""],
  "suspected_cause": "",
  "name_history": [ { "name": "", "update_date": "" } ]
}

1つ目の理由は、judgment で人の見る順番を決められることです。 notation は一覧で流し見、renamed は台帳の名称の更新の候補、different と undetermined は取引先や購買に確かめるものです。

2つ目は、登録の状態とAIの判定を別の層に置けることです。 規則で決めた status と、AIの judgment を同じ行に並べ、ワークフローが次の表のとおりに知らせ方を決めます。

statusjudgment知らせ方
disposed / expired問わないすぐに経理の責任者へ。 取消・失効の年月日と、それ以降の取引日の請求書を並べる
not_found問わないすぐに経理の責任者へ。番号の誤りか、未登録か
registereddifferent / undetermined週内に担当者が確かめる
registeredrenamed台帳の名称の更新の候補として一覧へ
registerednotation / 判定なし(一致)件数だけ

3つ目は、name_history で商号の変更を確かめやすくなることです。 公表の履歴に名称の変更があれば、いつ変わったかを担当者が一目で見られます。

Step8

システムへ連携する

つなぎ先方式内容
支払先台帳・支払予定表Google Sheets ノード(Get Row(s))照会する番号と取引年月日を読む
公表システム Web-APIHTTP Request(GET)登録番号の指定と、登録番号と日付の指定
Claude APIAnthropic Chat Model ノード(Basic LLM Chain)名称の比較の判定
照合の一覧Google Sheets ノード(Append Row)状態、判定、根拠、照会した日時
社内チャット通知取消・失効、別の事業者の疑いを知らせる

支払先台帳と会計システムへは書き込みません。 照合の一覧に書くところまでで、台帳を直すのも支払を止めるのも人の仕事です。 書き込みを足すと、AIの判定の誤りが台帳にそのまま残ります。

アプリケーションIDは、ワークフローの資格情報として持ちます。 URLの中に直接書くと、実行の記録にIDが残ります。照会の回数は、毎月の支払先の数を10で割った回数に収まります。

Step9

人が確認する

  1. 取消・失効を先に見る … 失効・取消の年月日と、それより後の取引年月日の請求書を確かめます。ここは必ず人が見ます
  2. not_found を確かめる … 台帳の番号の打ち間違いか、相手がまだ登録していないのかを、取引先に確かめます
  3. different と undetermined を確かめる … 過去の請求書の名称と番号を見て、同じ相手かを判断します。 判断したら照合の一覧に理由を残します
  4. renamed を台帳に反映するか決める … 取引先から変更の届出が来ているかも確かめます
  5. 仕入税額控除の扱いと連絡先を決める … 経理の責任者が、必要に応じて顧問税理士と相談します

3番目で「同じ相手」と判断した記録が、翌月の判定を減らします。 記録を残さないと、毎月同じ組み合わせがAIに回り、同じ確認をくり返します。

notation と判定されたものも、最初の3か月は件数と中身を流し見ます。 別の事業者を表記の違いとした誤りは、人が見ない側に入るので、そのままでは見つかりません。 3か月見て誤りが無ければ、件数を見るだけに切り替えます。

目標は、600件をならして1件0.5分です。 一致したものは件数を見るだけで、取消・失効と別の事業者の疑いだけを詳しく見るという見込みです。

Step10

例外に対処する

起きること対応
Web-API がエラーを返す・応答しない照会できなかった番号を一覧に「未照会」として残し、翌日にもう一度照会する。「登録あり」と扱わない
台帳の番号の桁が合わない照会せず、台帳の不備として一覧に出す
1つの番号に複数の支払先コード照会は1回、結果はすべての支払先コードに付ける
公表情報に訂正があった訂正区分を見て、履歴と一緒に人に回す
個人で屋号が公表されていないundetermined。過去に同じ相手と判断した記録があれば判定を省く
判定の出力がスキーマに合わない名称の組だけを一覧に載せ、人に回す
取引年月日が支払予定表に無い請求書単位の照会をせず、支払先単位の結果だけで知らせる
送った番号の一部が応答に無い返ってこなかった番号を not_found にする。応答の総件数だけで判断しない
前月まで登録ありだった相手が not_found になる番号の書き換えを疑い、前月の照会に使った番号と台帳の番号を並べて人に回す

上の1行目を「登録あり」として流すと、この構成の意味が無くなります。 照会できなかった番号は、照会できなかったことが分かる形で必ず残します。

Step11

記録を残す

  • 照会ごとの日時、送った登録番号、返った応答の全文と状態コード
  • 支払先ごとの登録の状態と、それを決めた区分と年月日
  • AIの判定の出力と、そのとき比べた台帳の名称
  • 人の判断 … 同じ相手と判断した組み合わせと理由、判断した人と日付
  • 取消・失効を知った日と、その相手の最後の取引年月日

最後の行が、この構成の物差しです。 失効の年月日から何日で気づいたかを毎月並べると、支払の前に気づけているかが分かります。

応答の全文を残すのは、後から当時の状態を確かめるためです。 公表情報には訂正が入ることがあり、照会した日に何が返ってきたかが残っていないと、その月の支払の判断の根拠を示せません。保存の期間は、請求書の保存の期間に合わせて決めます。

04実装レベルの3段階

最小構成:公表サイトで検索した名称を、生成AIの画面で台帳と比べる / 名称の比較の判定
半自動化:n8n で Web-API を照会し、取消・失効と名称の一致・不一致を規則で一覧にする / 照会と、登録の状態の判定
本格構成:上記+名称が一致しないものの AI による判定、取引年月日を基準日にした請求書単位の照会、過去の判断の記録 / 照会から、人が見るものの絞り込みまで

半自動化だけでも、①の検索の時間はほぼ無くなります。 照会と取消・失効の判定は、AIを使わずに組めます。残るのは、名称が一致しない相手を調べる②です。 本格構成で減るのは、その②です。 半自動化を2〜3か月回すと、規則の正規化で片づかない名称の組がどれくらい残るかが分かります。その件数を見てから、AIの判定を足してください。

05工数削減シミュレーション

前提値(モデル条件)
対象人数
3 名
月間件数
600 件
1件あたり現在時間
3 分
1件あたり導入後時間
0.5 分
現在  600件 × 3分 ÷ 60 = 30 時間/月
導入後 600件 × 0.5分 ÷ 60 = 5 時間/月
月間削減時間
25h
削減率
83%
年間削減時間
300h
年間金額換算(時間単価3,000円)
90万円
モデル条件による試算であり、実際の効果は業務内容・運用方法によって異なります。

自社条件で導入効果を整理したい方へ

このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。

AI活用について相談する

06向いている企業・向いていない企業

向いている
  1. 仕入先・外注先・経費の支払先が数百社以上あり、支払先台帳に登録番号の列を持っている商社・製造業・建設業・小売業。登録番号を取引の開始時に一度確かめたきりで、その後の取消・失効や商号の変更を追えていない場合。小規模な事業者や個人の外注先が多く、登録をやめる・やめさせられる相手が出てくる場合。n8n を使える、または使える体制を作れる場合。
向いていない
  1. 支払先が数十社に限られ、公表サイトで毎月手で検索しても負担にならない場合。支払先台帳に登録番号が入っていない場合(先に台帳の整備が要ります)。会計システムや請求書の受領サービスが、登録番号の公表情報との照合まで提供している場合。なお、仕入税額控除をどう扱うかの判断、取引先への連絡の要否は、この構成では代替できません。

07最小構成で試す方法

  1. 支払先台帳から、名称が公表と違いそうな相手を20社選ぶ(個人の屋号、カナの社名、最近社名を変えた相手を入れる)
  2. 公表サイトで20社の番号を検索し、名称と履歴を書き写す
  3. 生成AIの画面に台帳の名称と公表の名称の組を貼り、「表記の違い、商号の変更、別の事業者の疑い、判断できない、の4つに分け、根拠の語を書いてください。知識で補わず、番号を推測しないでください」と指示する
  4. 出てきた判定を、経理の担当者の判断と比べる
出てきた内容判断
担当者の判断とおおむね同じWeb-API のアプリケーションIDを申請し、ワークフローを組む
別の事業者を表記の違いとした指示の書き方で直る。迷ったら人へ倒す指示を足す
判断できないが多い台帳に屋号と氏名の両方が無い。 台帳の整備が先

アプリケーションIDの申請は、試すのと並行して出してください。 審査があるので、ワークフローを組み始める時期に間に合うように早めに出します。

08実装時につまずきやすいポイント

問題対策
別の事業者を表記の違いと判定する迷ったら人へ倒す指示を書き、notation も件数で見る
AIが正しい番号を推測して書く指示で禁じ、suspected_cause に疑いだけを書かせる
照会できなかった番号が「登録あり」になる「未照会」として残し、翌日に照会し直す
月の途中の失効を見落とす請求書の取引年月日を基準日にして照会する
毎月同じ名称の組がAIに回る人が同じ相手と判断した組み合わせを記録して外す
個人の支払先がすべて判断できないになる台帳に氏名と屋号の両方を持たせる
1回に10件を超える番号を送るLoop Over Items のバッチの大きさを10にする
URL にアプリケーションIDを直接書く資格情報として持つ

上の2行が、この構成の失敗のほとんどです。 どちらも、AIが「同じ相手」「正しい番号」と言い切ってしまう問題です。AIに言い切らせず、迷ったら人へ回す線を、指示と出力の形で守ってください。

09セキュリティ・AIガバナンス上の注意点

この構成で扱うデータ: 支払先の名称、登録番号、取引年月日と金額、個人の支払先の氏名です。公表情報そのものは公開されていますが、自社がどの事業者とどれだけ取引しているかは公開されていません。

  1. AIに渡す範囲を絞る … 名称の比較に要るのは、台帳の名称、屋号、公表の名称と履歴だけです。取引の金額や請求書の番号は渡しません
  2. 公表情報の扱いを守る … 公表サイトは、取得したデータを個人情報保護法に基づき適切に扱うよう求めています。個人の支払先の照合の結果は、経理部の中だけで扱います
  3. Web-API の利用規約に沿う … 利用規約への同意が前提です。Web-API を使ったサービスを公開する場合は、情報の取得元の明示が求められています
  4. 仕入税額控除の判断は人が行う … インボイスの無い仕入れは原則として仕入税額控除ができませんが、簡易課税制度や特例、経過措置があります。どれが当てはまるかは、経理の責任者と顧問税理士が決めてください
  5. 台帳に書き込ませない … 台帳と会計システムには、照合の一覧を見た人だけが手を入れます

誤りが起きた場合のリスクは、取消・失効を見落として支払うことと、登録のある相手を別の事業者と疑って取引先を煩わせることの2つです。 前者は照会の失敗を「登録あり」と扱うと起き、後者は表記の違いを different に回しすぎると起きます。

10まず何から始めるか

1週目:アプリケーションIDを申請する

Web-API 機能の利用規約を読み、インボイス用アプリケーションIDの発行を届け出ます。取得方法と利用方法が分かる資料には、この記事の第6章と第7章の流れを自社の言葉で書きます。

2週目:台帳を整える

登録番号の桁と「T」をそろえ、個人の支払先に氏名と屋号の両方を入れ、重複している支払先コードを洗い出します。

3週目:20社で試す

第8章の手順で名称の比較をさせ、別の事業者を表記の違いとしていないかを最優先で見ます。

4週目:照会と状態の判定を n8n で動かす

アプリケーションIDが届いたら、検証環境で照会を確かめ、登録番号の指定と状態の判定までを組みます。AIの判定はまだ入れず、名称が一致しないものの件数を見ます。

2か月目以降: 名称の比較の判定と、取引年月日を基準日にした照会を足します。取消・失効を支払の前に知り、同じ確認をくり返さなくなった時点で、この構成は完成です。


11関連ユースケース

12この仕組みを理解するための記事

13技術仕様の確認日・参考情報

技術仕様確認日:2026-10-07/最終更新:2026-10-07
確認した内容情報源確認日
公表サイトの検索画面で一度に10件まで検索できること。利用規約の遵守と、取得したデータを個人情報保護法に基づき適切に取り扱うよう求めていること(原文を取得して確認)国税庁 インボイス制度 適格請求書発行事業者公表サイト2026-10-07
Web-API 機能が、指定した登録番号で抽出した情報と、指定した期間の更新(差分)情報を返すシステム間連携の仕組みで、REST 方式であること。「登録番号の指定」「取得期間の指定」「登録番号と日付の指定」の3つの機能があること。利用規約への同意とアプリケーションID(発行無料)が必要で、インボイス用アプリケーションIDは「公表情報の取得方法及び利用方法」が分かる資料を提出し、審査を経て発行されること。検証環境があること。サービスを公開する場合に情報の取得元の明示を求めていること(原文を取得して確認)国税庁 適格請求書発行事業者公表サイト: Web-API機能2026-10-07
登録番号の指定(/1/num)で、"T"+13桁の番号をカンマ区切りで最大10件指定でき、応答形式が CSV(01)・XML(11)・JSON(21)であること。履歴情報要否(history)が0(既定、最新のみ)と1(登録・取消・失効の履歴あり)であること。取得期間の指定(/1/diff)の期間が最大50日で、500件を超えると応答が分割されること。登録番号と日付の指定(/1/valid)が判定基準日(day)を基準に直近の登録・取消・失効に紐づく情報を返すこと。事業者処理区分が01新規・02公表内容の変更・03登録の失効・04登録の取消であること。提供項目に氏名又は名称、主たる屋号、通称・旧姓、最新履歴、取消年月日、失効年月日があること(PDFの原文を取得して確認)国税庁: 適格請求書発行事業者公表システムWeb-API機能 第二編(リクエストの設定方法及び提供データの内容)2026-10-07
仕入税額控除にインボイスの保存が必要で、インボイスの無い仕入れは原則として控除できないこと。簡易課税制度や2割特例・3割特例、令和13年9月末までの経過措置があること(原文を取得して確認)国税庁: インボイス制度の概要2026-10-07
Schedule Trigger で月の日(1〜31)を指定できること。ワークフローかインスタンスのタイムゾーン(セルフホストの既定は America/New York)を使うこと。保存して公開しないと動かないことn8n Docs: Schedule Trigger2026-10-07
HTTP Request ノードの方法(GET など)、応答の形式(JSON など)、応答の状態コードを含める設定、ページ分けの設定があることn8n Docs: HTTP Request2026-10-07
Loop Over Items が決めた件数ずつ項目を返し、API の上限に合わせる用途に使えることn8n Docs: Loop Over Items (Split in Batches)2026-10-07
Basic LLM Chain でプロンプトとシステムのメッセージを指定し、出力の形式を指定するときに Structured Output Parser などをつなぐことn8n Docs: Basic LLM Chain2026-10-07
Structured Output Parser で JSON の例または JSON Schema から形を定めること。例から作るとすべての項目が必須になることn8n Docs: Structured Output Parser2026-10-07
Google Sheets ノードの操作に Get Row(s)、Append Row、Update Row などがあることn8n Docs: Google Sheets2026-10-07

仕入税額控除の扱いは、国税庁の資料と顧問税理士に確かめてください。 本記事は上記の公式ページで確認できた範囲だけを扱っています。このサービスは適格請求書発行事業者公表システムWeb-API機能を利用して取得した情報をもとに作成する構成例で、その内容は国税庁によって保証されたものではありません。

実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。

自社の業務に使えるAI活用候補を整理します

このユースケース(UC-0775)についてのご相談はこちらから。

AI活用について相談する
目次