Media > AI活用ユースケース > 経理 > 取引先から届く「支払がまだ」「金額が違う」の問い合わせメールに、支払データと請求書の受付記録から状況を調べて回答の文面を作る

取引先から届く「支払がまだ」「金額が違う」の問い合わせメールに、支払データと請求書の受付記録から状況を調べて回答の文面を作る

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

取引先から届く「支払がまだ」「金額が違う」という問い合わせメールを読み、請求書の受付記録と支払データを引いて状況を判定し、回答の文面の下書きを作ります。担当者は下書きと調べた記録を見比べ、直して送ります。

サマリー
生成AI
ChatGPT/Claude/Gemini/Microsoft Copilot
連携・自動化
Make/n8n/Power Automate
対象業界
商社/小売/建設/製造
対象部門
経理
対象業務
問い合わせ対応/情報検索
主な課題
人手が足りない/問い合わせが多い/情報が見つからない
AIで行う処理
生成
主な効果
品質標準化/対応スピード向上/工数削減
導入難易度
★★☆☆☆
実装レベル
半自動化
費用感
API連携(中)
人間の確認
条件付き
現在工数
80h/月
AI導入後
24h/月
想定削減
70%
年間削減
672h
モデル条件による試算値です。実在企業の実績ではありません。

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

導入前(Before)
  1. 共有メールボックスに届いた問い合わせを、担当者が開く
  2. 送信者のメールアドレスと署名から、取引先を特定する
  3. 本文と添付から、どの請求書の話かを探す(請求書番号、金額、対象月)
  4. 受付台帳で、その請求書が届いているか、どこまで処理が進んでいるかを調べる
  5. 会計システムで、支払済みか、いつ、いくら支払ったかを調べる
  6. 金額が違うという問い合わせなら、振込手数料、相殺、一部の支払などの内訳を調べる
  7. 回答の文面を書いて送る。分からないことは購買部門や承認者に問い合わせ、後で回答する
導入後(After)
  1. 自動共有メールボックスに問い合わせが届くと、Power Automate が動く
  2. 自動送信者のメールアドレスのドメインで、取引先マスタから取引先を特定する
  3. 【AI】 ChatGPT がメールの本文から、問い合わせの種類と、請求書を特定する手がかり(請求書番号、金額、対象月)を取り出す
  4. 自動手がかりで受付台帳と支払データ、購買システムの検収の記録を引く
  5. 自動規則で状況を判定する(支払済み/支払予定/承認待ち/差戻し中/受付記録なし/差額あり)
  6. 自動回答してはいけない問い合わせを分ける(検収から日数がたっている、差額の説明がつかない、など)
  7. 【AI】 分けられなかった問い合わせについて、ChatGPT が判定された状況と記録の値だけから回答の文面の下書きを作る
  8. 自動下書きを Outlook の下書きフォルダに置き、調べた記録を一覧に書き出す
  9. 人担当者が、下書きと調べた記録を見比べ、直して送る
  10. 人6番目で分けられた問い合わせは、担当者が購買部門や上長と確かめてから回答する
各工程の詳しい説明を読む
  1. 共有メールボックスに届いた問い合わせを、担当者が開く
  2. 送信者のメールアドレスと署名から、取引先を特定する
  3. 本文と添付から、どの請求書の話かを探す(請求書番号、金額、対象月)
  4. 受付台帳で、その請求書が届いているか、どこまで処理が進んでいるかを調べる
  5. 会計システムで、支払済みか、いつ、いくら支払ったかを調べる
  6. 金額が違うという問い合わせなら、振込手数料、相殺、一部の支払などの内訳を調べる
  7. 回答の文面を書いて送る。分からないことは購買部門や承認者に問い合わせ、後で回答する

(a)請求書を特定するまでに時間がかかる。 問い合わせには請求書番号が書かれていないことが多く、「9月分」「先月の加工代」のような書き方です。3番目と4番目で、金額や月から候補を探すことになります。 取引先の請求書番号と、自社の受付番号が一致しないこともあります。

(b)状況が分かっても、伝え方が担当者ごとに違う。 承認待ちのまま止まっている請求書について、「処理中です」とだけ書く人もいれば、承認者の名前まで書く人もいます。伝え方がばらばらだと、同じ取引先から「前回と説明が違う」と言われます。

(c)差戻し中の請求書が伝わっていない。 記載の不備で差し戻した請求書について、差戻しの連絡が取引先の担当者に届いていないことがあります。取引先は「請求書は送った」と思っているので、支払がまだという問い合わせになります。

(d)支払が遅れていることに、問い合わせで初めて気づく。 承認が滞ったり、検収の記録が漏れていたりして、支払予定に載っていない請求書があります。問い合わせを受けた担当者が調べて初めて分かり、そのときには支払期日が近い、または過ぎていることがあります。

  1. 【自動】 共有メールボックスに問い合わせが届くと、Power Automate が動く
  2. 【自動】 送信者のメールアドレスのドメインで、取引先マスタから取引先を特定する
  3. 【AI】 ChatGPT がメールの本文から、問い合わせの種類と、請求書を特定する手がかり(請求書番号、金額、対象月)を取り出す
  4. 【自動】 手がかりで受付台帳と支払データ、購買システムの検収の記録を引く
  5. 【自動】 規則で状況を判定する(支払済み/支払予定/承認待ち/差戻し中/受付記録なし/差額あり)
  6. 【自動】 回答してはいけない問い合わせを分ける(検収から日数がたっている、差額の説明がつかない、など)
  7. 【AI】 分けられなかった問い合わせについて、ChatGPT が判定された状況と記録の値だけから回答の文面の下書きを作る
  8. 【自動】 下書きを Outlook の下書きフォルダに置き、調べた記録を一覧に書き出す
  9. 【人】 担当者が、下書きと調べた記録を見比べ、直して送る
  10. 【人】 6番目で分けられた問い合わせは、担当者が購買部門や上長と確かめてから回答する

6番目が、この設計の分かれ目です。 支払が遅れているかもしれない問い合わせに、整った文面で「確認中です」と返すと、遅れているという事実が経理の中で止まります。 文面を作る前に分け、人が確かめる側に回します。

9番目で、担当者は全件を見ます。 下書きは記録の値から作っていますが、送る文面は取引先にとって支払の約束になります。 送信は必ず人が行います。

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

構成図
取引先からの問い合わせメール
   ▼【トリガー】共有メールボックスへの着信
Power Automate ── 送信者のドメインで取引先を特定
   ▼
ChatGPT(OpenAI API)── 問い合わせの種類と請求書の手がかりを取り出す
   ▼
Power Automate ── 受付台帳・支払データ・検収の記録を引く
   ▼
規則で状況を判定 ──▶ 回答してはいけない問い合わせ ──▶【人】購買部門・上長と確認
   ▼
ChatGPT(OpenAI API)── 判定された状況と記録の値から回答の文面の下書き
   ▼
Outlook の下書きフォルダ + 調べた記録の一覧
   ▼
【人】下書きと記録を見比べ、直して送信
役割想定する製品代替候補
処理ChatGPT(OpenAI API の Structured Outputs。手がかりの取り出しと文面の下書き)Claude、Gemini、Microsoft Copilot
連携Power Automate(共有メールボックスの監視、台帳と支払データの検索、下書きの作成)Make、n8n
メールOutlook の共有メールボックスGmail
受付台帳SharePoint のリスト会計システムの請求書の受付機能

会計システムと購買システムは、今のまま使います。 支払データと検収の記録は、毎日の夜間に書き出したものを読むだけで、この構成から書き込みません。

メールの監視には、Office 365 Outlook のコネクタを使います。 コネクタの説明には、共有メールボックスに新しいメールが届いたときのトリガーがあり、利用者どうしで共有しているメールボックスでは、どちらかがもう一方のメールボックスへの完全なアクセス権を持っていない限り動かない、といった制限が既知の問題として書かれています。経理部の共有メールボックスに、フローを作る人がアクセス権を持っていることを先に確かめます。 添付ファイルを含める設定にすると、添付のダウンロードを待つため、多数のメールが同時に届くとタイムアウトすることがあるともされています。

下書きは、同じコネクタのメールの下書きを作る操作(Draft an email message)で置きます。 宛先・件名・本文を指定して下書きを作る操作で、送信の操作は使いません。

生成AIには OpenAI API の Structured Outputs を使います。 公式ドキュメントでは、モデルが供給された JSON Schema に準拠した応答を生成することを保証し、必須キーの省略や無効な enum 値の生成を心配する必要がないとされています。問い合わせの種類を決まった語で返させることが、規則での判定につながります。

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

Step1

処理の起点を決める

共有メールボックスへの着信を起点にします。 1日に何回かまとめて処理すると、月末の支払日の直後に問い合わせが積み上がり、返信が翌日以降になります。 1通ずつ動かします。

動かすのは、支払の問い合わせだけです。 共有メールボックスには請求書そのものや、請求書の送付の連絡も届きます。件名と本文から ChatGPT が問い合わせの種類を判定し、not_inquiry なら何もせずに終わります。 請求書の受付は別の仕組みの仕事です。

同じ取引先から同じ件で2通目が届いたときは、1通目の下書きと同じ一覧の行にまとめます。 返信の前に2通目が届くと、別々の下書きができて、片方だけに返信して片方が残ります。

Step2

入力データを集める

データ中身取得元
問い合わせメール送信者、件名、本文、添付のファイル名共有メールボックス
取引先マスタ取引先コード、名称、メールアドレスのドメイン、締め日と支払日、振込手数料の負担、取適法の対象か購買部門が管理する一覧
請求書の受付台帳受付番号、取引先の請求書番号、金額、受付日、状態(受付済み/承認待ち/差戻し中/支払予定)、承認者、差戻しの理由と連絡日SharePoint のリスト
支払データ支払日、支払額、振込手数料の差引、相殺額、対象の受付番号会計システムの書き出し
検収の記録発注番号、検収日、検収金額購買システムの書き出し

質を決めるのは、2行目の「取適法の対象か」と、5行目の検収日です。 取適法の対象となる取引では、物品等を受領した日から起算して60日以内に定めた支払期日までに全額を支払わないと違反になるとされています。対象かどうかと受領の日が分からないと、問い合わせが支払の遅れにあたるかを分けられません。

取適法の対象かどうかは、購買部門が取引先マスタに記録しておきます。 この構成が判断するものではありません。列が空の取引先は、対象として扱います。

Step3

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

取引先は、送信者のメールアドレスのドメインで引きます。 署名の会社名から引くと、表記ゆれで引けないことがあります。ドメインが複数の取引先に当たる場合(グループ会社が同じドメインを使うなど)は、本文の会社名で絞り、絞れなければ担当者へ回します。

請求書は、取り出した手がかりで受付台帳を引きます。 引く順番を決めておきます。

手がかり引き方
請求書番号がある取引先コード+取引先の請求書番号で引く
金額と対象月がある取引先コード+金額(完全一致)+受付日の月で引く
対象月だけ取引先コード+受付日の月で引き、全件を候補として出す
何も無い取引先コードで直近3か月の未払いと支払済みを引き、担当者が選ぶ

3行目と4行目は、候補が1件に絞れないことがあります。 その場合は下書きを作らず、候補の一覧を担当者に渡します。候補のどれかを選んで文面を作ると、別の請求書について答えることになります。

支払データと検収の記録は、受付番号と発注番号でつなぎます。 受付台帳に発注番号の列が無いと、検収日を引けません。最初の準備は、受付台帳に発注番号を必ず入れる運用にすることです。

支払データと検収の記録は、夜間の書き出しを使います。 問い合わせの多くは「昨日が支払日だったのに入っていない」というもので、前日までの支払が書き出しに入っていれば答えられます。 当日の振込の状況は書き出しに入らないため、支払日の当日に届いた問い合わせは、記録の上で scheduled のまま判定されます。その場合は文面に「本日お支払いの予定です」とは書かせず、担当者が銀行の振込の記録を見て直します。

Step4

AIへ渡す前に整形する

  1. 引用部分を除く … 返信の引用(「>」で始まる行や、過去のやり取り)を除きます。過去の金額が手がかりとして取り出されるのを防ぎます
  2. 署名を除く … 署名の電話番号や住所は使いません
  3. 全角・半角をそろえる … 請求書番号と金額の表記をそろえます
  4. 取引先の特定を先に行う … ChatGPT に渡す前に取引先コードを決め、本文を渡すときは取引先コードと一緒に渡します
  5. 添付は渡さない … 請求書の写しが添付されていても、この構成では読みません。添付があることだけを一覧に書き、担当者が開きます

1番目を軽く見ないでください。 取引先が何度もやり取りしたメールに返信してくると、引用部分に前回の金額や前回の請求書番号が残っています。それを手がかりとして取り出すと、前回の請求書の状況を答えることになります。

Step5

AIに処理させる

ChatGPT にさせることは2つで、呼び出しも2回に分けます。

呼び出しさせること
1回目(取り出し)問い合わせの種類(not_paid/amount_diff/schedule/other/not_inquiry)と、請求書番号・金額・対象月・取引先が主張する入金額を、本文に書かれているとおりに取り出す
2回目(文面)規則で判定した状況と、記録の値(支払日、支払額、支払予定日、差戻しの理由など)だけを使って、回答の文面の下書きを作る

2回の間で、規則が状況を判定します。

状況条件
paid支払データに対象の受付番号がある
scheduled受付台帳の状態が支払予定で、支払予定日がある
pending_approval状態が承認待ち
returned状態が差戻し中
not_received受付台帳に該当が無い
diff_explained支払額と請求額の差が、振込手数料・相殺の記録で説明できる
escalate下の表のどれかに当たる

escalate にする条件は、文面を作る前に規則で決めます。

条件理由
取適法の対象で、検収日から60日に近づいている(または過ぎている)のに支払っていない支払の遅れにあたるおそれがある
差額が振込手数料・相殺の記録で説明できない減額にあたるおそれがある
承認待ちが社内の目安の日数を超えている承認者に確かめる必要がある
候補の請求書が1件に絞れない別の請求書について答えるおそれがある

どこで「60日に近づいている」とするかは、自社で決めます。 本記事では検収日から45日を過ぎたものを例にしています。取適法の対象となる取引では、受領した日から起算して60日以内に定めた支払期日までに全額を支払わないこと、発注時に決めた代金を中小受託事業者の責に帰すべき理由が無いのに減額することが、それぞれ禁止されているとされています。 この2つにあたるおそれのある問い合わせを、整った文面で流さないための条件です。

させないこと理由
状況の判定規則で決める。推し量らせると記録に無い状況が書かれる
記録に無い支払予定日の記載取引先にとって支払の約束になる
差額の理由の推測「振込手数料と思われます」と書くと、説明のつかない差額が消える
お詫びの範囲を広げること支払が遅れたかどうかは、escalate の側で人が判断する
Step6

指示内容を固定する

1回目(取り出し)の指示:

あなたは経理部で、取引先からの支払に関する問い合わせを受け付ける立場です。
渡すメールの本文から、次の項目を書かれているとおりに取り出してください。

- inquiry_type:not_paid(支払がまだ)/amount_diff(金額が違う)/
  schedule(支払予定日を知りたい)/other(支払に関するその他)/not_inquiry(問い合わせではない)
- invoice_no:取引先の請求書番号。書かれていなければ空
- amount:請求額。書かれていなければ空
- target_month:対象の月。書かれていなければ空
- claimed_received:取引先が受け取ったと書いている入金額。書かれていなければ空

【厳守事項】
- 書かれていない項目を推測で埋めないでください。
- 引用部分(過去のやり取り)に書かれた番号や金額は使わないでください。
- 金額はカンマを除いた数字だけにしてください。計算はしないでください。

【取引先】{vendor_name}
【メール本文】{mail_body}

2回目(文面)の指示:

あなたは経理部の担当者として、取引先への回答の文面の下書きを作ります。
渡す「状況」と「記録の値」だけを使って書いてください。

【厳守事項】
- 記録の値に無い日付・金額・予定を書かないでください。
- 状況が scheduled のときだけ支払予定日を書いてください。それ以外の状況で予定日を書かないでください。
- 状況が returned のときは、差戻しの理由と差戻しの連絡日を書き、再送の方法を案内してください。
- 状況が not_received のときは、請求書が当社で確認できていないことを伝え、
  送付先と送付日を教えてもらうよう依頼してください。
- 状況が diff_explained のときは、記録にある内訳(振込手数料、相殺)だけを書いてください。
- 差額の理由を推測しないでください。
- 支払の遅れを認める表現や、遅延の理由の説明を書かないでください。
- 文末に担当者の名前は入れず、{signature} と書いてください。

【状況】{status}
【記録の値】{record_values}
【取引先名と問い合わせの要旨】{vendor_name} / {inquiry_summary}

「状況が scheduled のときだけ支払予定日を書く」を明記しないと、承認待ちの請求書にも「〇月末のお支払いを予定しております」と書きます。 締め日と支払日の規則から、予定日をもっともらしく導くためです。承認待ちの請求書は、承認されなければその日に支払われません。

「支払の遅れを認める表現を書かない」は、遅れを隠すための制約ではありません。 遅れのおそれのある問い合わせは escalate で人に回っており、文面の下書きが作られるのは、記録の上で遅れていないものだけだからです。 そこに「遅くなり申し訳ありません」と書かれると、事実と違うことを認める文面になります。

Step7

出力形式を固定する

1回目は次の形のJSONで受け取ります。

{
  "inquiry_type": "not_paid | amount_diff | schedule | other | not_inquiry",
  "invoice_no": "",
  "amount": "",
  "target_month": "",
  "claimed_received": ""
}

2回目は次の形です。

{
  "subject": "",
  "body": "",
  "used_values": ["payment_date", "paid_amount"]
}

たとえば、状況が returned のときの下書きの本文は次のようになります。

いつもお世話になっております。お問い合わせの請求書(請求書番号 A-2026-0915、
金額 482,900円)について確認いたしました。

本請求書は、9月18日に当社より、請求書に発注番号の記載が無い旨をご連絡し、
差し戻しております。発注番号を記載のうえ、あらためてお送りいただけますでしょうか。
再送いただいた請求書は、受付後に通常の手順で処理いたします。

{signature}

このときの used_values は、請求書番号、金額、差戻しの理由、差戻しの連絡日の4つです。本文に出てくる日付と金額がこの4つの値と一致していることを、担当者は記録の一覧と見比べて確かめます。 支払予定日は書かれていません。差し戻した請求書には、まだ予定日が無いからです。

1つ目の理由は、inquiry_type を enum で縛れることです。 5つ以外の言い方で返ってくると、not_inquiry を除く分岐が作れません。

2つ目は、used_values で文面に使った記録の値が分かることです。 担当者は、文面に出てくる日付と金額が、記録の一覧のどの値から来ているかを確かめられます。 used_values に無い日付が本文に出てきたら、その下書きは使いません。Power Automate で、本文中の日付と金額が記録の値と一致するかを機械的に確かめることもできます。

3つ目は、件名と本文を分けて下書きに渡せることです。 件名には取引先の請求書番号を入れさせ、2通目の問い合わせが届いたときに同じ件として見分けやすくします。

Step8

システムへ連携する

つなぎ先方式内容
共有メールボックスOffice 365 Outlook コネクタのトリガー問い合わせの着信を検知
取引先マスタ・受付台帳Power Automate での検索取引先、請求書、状態
支払データ・検収の記録夜間に書き出したファイルの読み取り支払日、支払額、検収日
OpenAI APIHTTP での呼び出し(2回)取り出しと文面の下書き
Outlook の下書きフォルダメールの下書きを作る操作送信はしない
調べた記録の一覧SharePoint のリストに書き出し状況、記録の値、escalate の理由

受付台帳にも会計システムにも書き込みません。 差戻し中の請求書が再送されてきても、受付台帳の状態を直すのは受付の担当者の仕事です。

Step9

人が確認する

担当者は、調べた記録の一覧を先に開きます。

  1. escalate を先に見る … 理由ごとに、購買部門・承認者・上長に確かめます。取適法の対象で日数がたっているものを最優先にします
  2. 下書きの日付と金額を、記録の一覧と見比べる … used_values と本文が合っているか
  3. 候補が1件に絞れなかった問い合わせは、請求書を選んでから下書きを作り直す
  4. 文面を直して送る … 言い回しは直してよいが、日付と金額は記録の値から変えない
  5. 送った文面と、直した箇所を一覧に残す

目標は、240件をならして1件6分です。 支払済みと支払予定の問い合わせは記録と見比べて数分、escalate のものは確かめに時間がかかります。escalate が月に1割を超えるなら、承認の滞りか、検収の記録の漏れが増えています。

Step10

例外に対処する

起きること対応
ドメインで取引先が引けない下書きを作らず担当者へ。個人のメールアドレスから届くことがある
候補の請求書が複数ある下書きを作らず候補の一覧を渡す
受付台帳に発注番号が無い検収日が引けない。取適法の対象なら escalate
支払データの書き出しが古い書き出しの日付が前営業日より古ければ止める
本文が暗号化されていて読めないコネクタの説明では、暗号化されたメールはトリガーの出力に本文が含まれない。担当者へ
添付が多く、トリガーがタイムアウトする添付を含めない設定にし、添付の有無だけを見る
同じ件の2通目が届く一覧の同じ行にまとめ、下書きを作り直す
OpenAI API が応答しない一覧に「未処理」として残し、担当者が通常どおり対応する

上の3行が大半を占めます。 どれもAIの問題ではなく、取引先マスタと受付台帳の整い方の問題です。 ドメインと発注番号の列を埋めるほうが、指示文を直すより効きます。

Step11

記録を残す

  • 問い合わせメールの本文と、受け付けた日時
  • 1回目の取り出しの結果
  • 規則で判定した状況と、そのとき引いた記録の値(受付台帳の状態、支払日、検収日)
  • escalate の理由と、確かめた相手と結果
  • 2回目の下書きと、担当者が送った文面、直した箇所
  • 返信までにかかった時間

3つ目で記録の値を残すのは、回答の根拠を後から示せるようにするためです。 取引先から「前回はこう回答された」と言われたとき、その時点の記録で何と判定したかが残っていれば、説明が食い違った理由が分かります。

escalate の記録は、毎月まとめて購買部門と見ます。 同じ承認者のところで止まる請求書や、検収の記録が漏れがちな部署が分かります。

04実装レベルの3段階

最小構成:担当者が記録を調べ、ChatGPT の画面に本文と記録の値を貼って文面を作る / 文面の下書き
半自動化:上記+共有メールボックスの着信を起点に、Power Automate が取引先の特定、記録の検索、状況の判定、下書きの作成まで行う / 調べる作業と文面の下書き
本格構成:上記+取引先向けの窓口で、請求書の受付状況と支払予定を取引先自身が見られるようにする / 問い合わせそのものを減らす

本記事の想定は半自動化です。 1件20分のうち、時間がかかっているのは①と②の調べる作業です。最小構成では、この部分が減りません。 本格構成は、問い合わせに答える仕組みではなく、問い合わせを減らす仕組みです。 半自動化で returned と pending_approval の問い合わせが多いと分かれば、受付状況を取引先に知らせるほうが、答えるより速いということです。 段階を飛ばさないでください。 半自動化の一覧を2〜3か月見ると、どの状況の問い合わせが多いか、どの取引先が繰り返し問い合わせてくるかが分かります。それを見てから、本格構成で何を見せるかを決めます。

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

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

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

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

AI活用について相談する

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

向いている
  1. 部品や資材の仕入先・外注先が数百社あり、支払に関する問い合わせが毎月100件を超えるメーカー・建設会社・商社。問い合わせが経理の共有メールボックスに届き、担当者が請求書の受付記録と支払データを別々の画面で調べて返信している場合。請求書の差戻しや承認待ちの状況を取引先に伝えきれず、同じ取引先から何度も問い合わせが来る場合。Microsoft 365 と ChatGPT の法人向けのプランをすでに使っている場合。
向いていない
  1. 取引先が数十社で、支払の問い合わせが月に数件の場合。取引先向けのポータルで請求書の処理状況と支払予定を取引先自身が見られる場合。請求書の受付記録が紙や個人のメモで管理されており、状況を機械で引けない場合。なお、支払の遅れや減額が法令に触れるかどうかの判断は、この構成では代替できません。

07最小構成で試す方法

  1. 先月の問い合わせメールから30件を選ぶ(支払済み、支払予定、承認待ち、差戻し中、差額ありを混ぜる)
  2. それぞれについて、担当者が当時調べた記録(受付台帳の状態、支払日、支払額)を書き出す
  3. ChatGPT の画面に、メールの本文と記録の値を貼り、2回目の指示で文面を作らせる
  4. 当時担当者が送った文面と並べ、日付と金額が記録どおりか、書いてはいけないことが書かれていないかを見る

最小構成では、取り出しと規則の判定は人が行います。 確かめるのは、記録の値を渡せば、記録に無いことを書かずに文面を作れるかです。

出てきた内容判断
日付と金額が記録どおりで、言い回しも使えるPower Automate での自動化に進む
承認待ちに支払予定日が書かれた指示の書き方で直る。構成は有効
差額の理由を推測して書いた指示で禁じ、diff_explained 以外では内訳を書かせない

30件のうち、escalate にあたるものがいくつあったかも数えてください。 当時、整った文面で返していた問い合わせの中に、支払の遅れのおそれがあったものが見つかることがあります。

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

問題対策
承認待ちに支払予定日が書かれる予定日は scheduled のときだけと明記する
引用部分の金額を手がかりにする前処理で引用を除き、指示でも禁じる
候補の1件を選んで文面を作る絞れなければ下書きを作らない
差額の理由を推測するdiff_explained 以外では内訳を書かせない
遅れのおそれのある問い合わせに整った文面で返す文面を作る前に escalate で分ける
取適法の対象かが分からない購買部門が取引先マスタに記録する。空なら対象として扱う
検収日が引けない受付台帳に発注番号を必ず入れる
共有メールボックスでトリガーが動かないフローを作る人のアクセス権を確かめる
添付の多いメールでタイムアウトする添付を含めない設定にする
下書きがそのまま送られる送信の操作を使わない。日付と金額を記録と見比べる手順を決める

上の2行が、この構成の失敗のほとんどです。 どちらも、記録に無いことを、もっともらしく書くという同じ性質から来ています。指示文で禁じたうえで、used_values と本文の日付を見比べる手順で止めます。

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

この構成で扱うデータ: 取引先の名称と担当者のメールアドレス、請求書の番号と金額、支払日と支払額、検収日です。

  1. 生成AIに渡す範囲を、本文と記録の値に限る … 取引先マスタや受付台帳の全体を渡す必要はありません。口座番号は、文面を作るのに要りません
  2. 送信を自動にしない … 回答は取引先にとって支払の約束になります。下書きまでにし、送信は担当者が行います
  3. 支払の遅れや減額にあたるかを、この構成で判断しない … escalate は「おそれがあるもの」を分けるだけです。あたるかどうかの判断は、購買部門と法務部門が行います
  4. 遅れのおそれを経理の中で止めない … escalate の記録を毎月購買部門と見る運用にします。問い合わせが来なかった請求書にも同じ遅れがあるかもしれないからです
  5. 入力したデータの扱いを確かめる … API については、公式ドキュメントで送られたデータは明示的にオプトインしない限りモデルの学習や改善に使われないとされ、不正利用の監視のログは最大30日保持されるとされています
  6. 取引先の個人の情報を広げない … 取引先の担当者の氏名やメールアドレスは、文面に必要な範囲で使い、調べた記録の一覧を経理部の外へ出しません

誤りが起きた場合のリスクは、記録と違う日付や金額を取引先に伝えることと、支払の遅れのおそれを見過ごすことの2つです。 前者は下書きと記録を見比べる手順で止め、後者は文面を作る前の escalate で止めます。どちらの手順も、時間を減らすために省かないでください。

10まず何から始めるか

1週目:取引先マスタと受付台帳を整える

取引先マスタに、メールアドレスのドメインと、取適法の対象かの列を足します。問い合わせの多い上位50社から埋めます。 受付台帳に発注番号を必ず入れる運用を、受付の担当者と決めます。

2週目:30件で試す

先月の問い合わせから30件を選び、記録の値を渡して ChatGPT の画面で文面を作らせます。承認待ちに支払予定日が書かれていないか、差額の理由を推測していないかを最優先で見ます。

3週目:escalate の条件を決める

検収日から何日で「60日に近づいている」とするか、承認待ちを何日で止まっているとするかを、購買部門と決めます。 30件の中で escalate にあたったものを見ながら決めます。

4週目:着信から記録の一覧までをつなぐ

Power Automate で共有メールボックスの着信を受け、取引先の特定、記録の検索、状況の判定、一覧への書き出しまでを作ります。この時点では下書きを作らず、一覧だけを担当者が使います。

2か月目: 2回目の呼び出しを足し、下書きを Outlook の下書きフォルダに置きます。3か月目以降: 1件あたりの時間を実測し、escalate の記録を毎月購買部門と見ます。同じ取引先からの繰り返しの問い合わせが減り、escalate の件数が毎月落ち着いた時点で、この構成は完成です。


11関連ユースケース

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

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

技術仕様確認日:2026-10-06/最終更新:2026-10-06
確認した内容情報源確認日
取適法で委託事業者に11項目の禁止事項が課されていること。物品等を受領した日から起算して60日以内に定めた支払期日までに製造委託等代金を全額支払わないと違反となること。手形の交付などが支払遅延に該当すること。発注時に決定した代金を中小受託事業者の責に帰すべき理由が無いのに発注後に減額すると違反となること公正取引委員会: 委託事業者の禁止行為2026-10-06
Structured Outputs がモデルに供給された JSON Schema に準拠した応答を生成することを保証し、必須キーの省略や無効な enum 値を防ぐことOpenAI: Structured Outputs2026-10-06
API に送られたデータは明示的にオプトインしない限り学習や改善に使われないこと。不正利用の監視のログが最大30日保持されることOpenAI: API に送ったデータの扱い2026-10-06
共有メールボックスに新しいメールが届いたときのトリガーがあること。利用者どうしで共有するメールボックスでは完全なアクセス権が無いと動かないこと、添付を含めるとタイムアウトしうること、暗号化されたメールは本文が出力に含まれないこと。メールの下書きを作る操作(Draft an email message)があることMicrosoft Learn: Office 365 Outlook connector2026-10-06

支払の遅れや減額が取適法に触れるかどうかは、購買部門・法務部門と、必要に応じて公正取引委員会の相談窓口で確かめてください。 本記事は、公正取引委員会のページで確認できた範囲だけを扱っています。

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

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

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

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