税務 › 消費税・インボイス活用案

仕訳データの消費税区分を一括チェックする

数千行の仕訳から、税率の取り違え・非課税と不課税の混同・インボイス経過措置の適用漏れを機械的に洗い出し、人が見るべき行だけを一覧にする方法です。プログラムはAIに書かせ、判定ルールは人が決めます。

AI操作難易度★★★★☆ 経理財務 実務難易度★★★☆☆ 使う道具Claude Code/Python

1. Before ― 手元はどうなっているか

架空のIT企業、サンライズソリューションズ株式会社。月次の仕訳伝票をExcelで出力し、消費税区分の誤りを探しています。手元の仕訳データはこうなっています。

  • 摘要欄が自由入力。「○○社 9月分」「9月度 業務委託」「請求書No.1234」と、書き方が担当者ごとに違う。
  • 税区分が空欄の行がある。会計システムの初期値のまま登録された行。
  • 1つの伝票に複数の明細が入っている。明細ごとに税区分が違うのに、伝票単位でしか見ていない行がある。
  • 補助科目が使われていない。「支払手数料」に、振込手数料も海外送金手数料も専門家報酬も混ざっている。
  • 件数が多い。月に1,200件前後あり、全件を目で見るのは現実的ではない。

2. 問題の分解 ― 何を整えれば進むのか

(a) 判定ルールを決める
科目と摘要のキーワードから、想定される税区分を表にする。

(b) 機械的に当てる
ルール表に沿って全件を判定する。ここは毎月同じ処理。

(c) 例外を人が見る
ルールと違う行を一覧にして、1行ずつ判断する。

(d) ルール表を育てる
正当な例外はルール表に足し、翌月の例外を減らす。

ここはAIを使わない

ルール表に沿った判定そのもの。毎月1,200件をAIに判定させると、月によって結果が変わる可能性があり、しかも根拠が残りません。ここはプログラム(またはExcelの関数)で機械的に処理し、結果を再現できる形にします。AIを使うのは、ルール表のたたき台作り、判定プログラムの作成、例外一覧の設計、そして新しいパターンが出たときの相談です。

3. AIに任せること/人が判断すること

AIに任せる
  • 判定ルールをもとにしたチェックプログラムの作成
  • 全仕訳に対するルールの機械的な適用と、例外行の一覧化
  • 「なぜ引っかかったか」の理由を行ごとに付けること
  • ルール変更(控除割合の切替など)時のプログラム修正
人が判断する
  • 判定ルール表の作成(科目・摘要のキーワード → 想定される税区分)
  • 例外行の最終判断(本当に誤りか、正当な例外か)
  • 訂正仕訳の起票と承認
  • ルール表の更新と、その承認記録

4. 実行 ― AIとのやりとり

  1. ルール表を作る。Excelで「勘定科目」「摘要に含まれるキーワード」「想定される税区分」「根拠メモ」の4列を用意し、自社でよくある取引から30〜50行ほど埋めます。全部を網羅する必要はなく、件数の多いものと間違えやすいものから始めます。
  2. 仕訳データを書き出す。会計ソフトから当期の仕訳をCSV(またはExcel)で出力します。必要な列は、日付・勘定科目・摘要・金額・税区分・取引先・(あれば)登録番号の有無です。
  3. Claude Codeにプログラムを書かせる。下の指示文のように、ルール表と仕訳データの列名を伝えて、チェック用のプログラムを作らせます。動かすのはご自身のパソコンの中なので、仕訳データが社外に出ることはありません(AIに渡すのは列名とルール表の構造だけで済みます)。
  4. 例外一覧を人が見る。プログラムが出した「引っかかった行」の一覧を、理由ごとに確認し、誤りなら訂正、正当な例外ならルール表に追記します。翌月からは例外が減っていきます。
用語:Claude Codeとは、AIに「こういうプログラムを作って」と日本語で頼むと、プログラムを書いて、その場で動かして、結果まで見せてくれる道具です。プログラミングの知識がなくても、「何を・どんな条件で・どう出してほしいか」を日本語で説明できれば使えます。用語集
Claude Codeへの指示例(要点を自社の列名に置き換えて使います)【場面と読み手】 消費税申告の前に、会計ソフトから出した仕訳データの税区分を一括チェックするプログラムを作りたい。読み手は経理担当者と税務の確認者で、私はプログラミング経験がないので、専門用語は避けて説明してください。 【事実/入力】 ・仕訳データ:journal.csv(列:日付, 勘定科目, 摘要, 税抜金額, 税額, 税区分, 取引先, 登録番号) ・ルール表:rules.xlsx(列:勘定科目, キーワード, 想定税区分, 根拠メモ) 【依頼】次の観点で該当する行を抜き出してください。 1. ルール表と照合し、勘定科目とキーワードが一致するのに税区分が想定と違う行 2. 「飲食料品」「弁当」「新聞」を含む摘要で税区分が10%の行(軽減税率の可能性) 3. 勘定科目が「地代家賃」「支払利息」「保険料」「租税公課」「印紙」なのに税区分が課税の行(非課税・不課税の可能性) 4. 取引先が海外を示す(摘要に「海外」「輸入」「USD」など)のに税区分が非課税の行(不課税との混同) 5. 登録番号が空欄の課税仕入で、税額が全額控除になっている行。日付が2026年9月30日以前なら「80%控除」、2026年10月1日以降なら「70%控除」の適用が必要な可能性 6. 税額 ÷ 税抜金額が税率(10%または8%)と1円以上ずれている行 【出力の型】 ・exceptions.xlsx:引っかかった行を、元の列+「チェック番号」「理由」「確認状況(空欄)」の列付きで出力 ・画面に、チェック番号ごとの件数を表示 ・控除割合と切替日は、プログラムの先頭で変数として書き、後で変えやすくする ・プログラムの中で何をしているか、日本語のコメントを付ける 【禁止事項】 ・税区分の正誤を断定しない(「〜の可能性がある行」として抽出するにとどめる) ・ルール表にない科目を推測で判定しない(「ルールなし」として別シートに件数だけ出す) ・仕訳データにない取引先名・金額・登録番号を補わない

出力のイメージ(例外一覧の抜粋)

日付勘定科目摘要税区分チェック理由
2026-08-12会議費打合せ弁当代(10名)課税10%2摘要に「弁当」。軽減8%の可能性
2026-08-20地代家賃駐車場(更地)月額課税10%3土地の貸付は非課税の可能性(ただし駐車場設備がある場合は課税)
2026-10-03外注費デザイン制作(個人)課税10%・全額控除5登録番号なし。2026-10-01以降のため70%控除の経過措置の可能性

※ 説明用の架空の例です。実際の判定は取引の実態によります。

往復1回目 ― ルール表に無いものをAIが判定した

AIの初稿

判定プログラムを作らせたところ、「摘要に『手数料』を含む行は課税仕入10%と判定する」という処理が入っていた。

ここが問題

ルール表に書いていない判定をAIが足しています。「手数料」には、振込手数料のほかに海外送金に関するものなど、扱いが異なりうるものが混ざります。一律に課税と判定すると、誤りを「正しい」と表示してしまう。誤りを見逃すより悪い状態です。

追加で出した指示

「ルール表に無いキーワードで判定しないでください。ルール表に該当しない行は『判定不能』として、例外一覧に出してください。プログラムの中に、ルール表に書いていない条件を書かないでください。」

修正版

ルール表に無い行が「判定不能」に回るようになりました。初回は判定不能が多く出ましたが、それは正しい状態です。

人が最後にやること

判定不能の行を見て、繰り返し出るものをルール表に追記します。追記には、なぜその区分なのかの根拠を1行添えて、承認を受けます。

往復2回目 ― 例外一覧が多すぎて使えなかった

AIの初稿

1,200件のうち約300件が例外一覧に出た。全部見るのは現実的ではない。

ここが問題

例外一覧は、人が1行ずつ見られる量でなければ意味がありません。300件あると、結局見ずに流すことになります。

追加で出した指示

「例外一覧を、①金額の大きい順に並べる ②同じ理由・同じ科目・同じ取引先のものはまとめて1行にし、件数と合計金額を表示する、という形にしてください。」

修正版

300件が、まとめると48グループになりました。金額の大きい上位10グループで、例外の金額の大部分を占めていました。

人が最後にやること

上位から順に見ます。全部見るのではなく、金額の影響が大きいところから見て、どこまで見るかを自分で決めます。その判断と、見た範囲を記録に残します。

5. エラーと例外 ― うまくいかないとき

仕様表

INPUT入れるもの会計システムから出力した仕訳伝票のExcelと、判定ルール表(科目・キーワード・想定される税区分・根拠)。
PROCESSすること元ファイルは読むだけ。ルール表に沿って全件を判定し、ルールと異なる行・判定できない行を抜き出す。
OUTPUT出るもの例外一覧(グループ化・金額順)と、判定結果の全件一覧、実行ログ。
VALIDATION正しさの確かめ方元データの件数=判定済み件数+判定不能件数。税区分ごとの金額合計が、会計システムの消費税集計表と一致するか。
ERROR止める条件ルール表に無い列名がある/税区分の欄が空欄/金額が数値でない/件数が一致しない。ルール表に無い判定を足さない。
RE-RUNやり直し同じ月のデータで何度でも実行でき、結果は同じ。ルール表を更新したら、同じ月を再実行して差分を確認する。
CHANGE変更対応税率や控除割合の変更は、プログラム本体ではなく設定値とルール表で切り替えられるようにする。変更の適用開始日を設定に持たせ、月をまたいでも過去月の再実行結果が変わらないようにする。

6. 検証 ― 正しいとどう言えるか

  1. 件数照合:元データの件数=判定済み+判定不能。
  2. 金額照合:税区分ごとの金額合計を、会計システムの消費税集計表と突き合わせる。
  3. 抜き取り:例外一覧の上位5件について、請求書などの原本と突き合わせる。
  4. 判定不能がゼロでないことの確認:毎月ゼロなら、ルールが緩すぎて何も弾いていない可能性を疑う。
  5. 見た範囲の記録:例外一覧のどこまでを確認したかを記録に残す。監査で聞かれるのはここです。

7. 注意点

プログラムが判定するのは「疑わしい行」であって「誤り」ではありません。駐車場の例のように、同じ科目でも実態で課非が分かれます。例外一覧は必ず人が一行ずつ判断し、正当な例外はルール表に理由つきで追記してください。
ルール表は税務上の判断そのものです。誰が作り、誰が承認し、いつ変えたかを記録してください。ルール表の誤りは全行に波及します。作成時には国税庁のタックスアンサーや通達で根拠を確認し、迷う項目は顧問税理士に相談してください。
2026年10月1日の控除割合切替に注意。免税事業者等からの仕入に係る経過措置は、2026年9月30日までが80%、10月1日から2028年9月30日までが70%です(国税庁Q&A 問113、令和8年4月改訂)。取引日ではなく課税仕入れを行った日で判定されるため、請求書の日付と役務提供日がずれる取引は個別に確認してください。
仕訳データは社外に出さない設計にします。この活用例では、AIに渡すのは列名とルール表の構造だけで、仕訳データ本体は自分のパソコンの中でプログラムが処理します。Claude Codeに実データを読ませる場合は、会社が認めた環境かを確認してください。共通ルール
プログラムを動かす段階では、仕訳データはAIに送られません。ただし作る段階で列名やサンプル行をAIに見せていれば、それは送信しています。開発は架空データか、取引先名・金額をダミーに置き換えたデータで行ってください。詳しくはセキュリティとガバナンスを参照してください。
ログに取引先名と金額を残しません。行番号と項目名だけにします。
消費税の最終判断は人が行います。プログラムが出すのは「ルールと違う行の一覧」であって、「誤っている行の一覧」ではありません。

8. After ― 翌月以降、何が変わるか

  • 1,200件を目で見る作業が、例外の上位グループを見る作業に変わります。
  • ルール表が毎月育ち、判定不能の件数が減っていきます。減り方そのものが、業務が整ってきた証拠になります。
  • 判断の根拠がルール表に残るので、担当者が代わっても同じ判定になります。
  • 制度改正が来ても、設定値とルール表の更新で対応できます。
明日の仕事で試すこと
  • 先月の仕訳から「支払手数料」の行だけを抜き出し、摘要の書き方が何通りあるかを数える
  • そのうち、税区分の判断が分かれうるものに印をつける
  • 印がついたパターンを、ルール表の最初の5行にする

応用 ― 難易度を下げる場合

★〜★★:プログラムを作らず、Excelのフィルタと条件付き書式で同じ考え方を手動で行うこともできます。たとえば摘要に「弁当」を含む行を抽出して税区分を目視する、登録番号が空欄の行を抽出して日付で並べる、といった方法です。件数が少ない会社なら十分に実用的で、まずはここから始めて「ルール表」を育て、行数が増えたらプログラム化する順番が無理がありません。