Media > AI活用ユースケース > 経理 > 複数の銀行口座の入出金を毎日集めて、口座間の資金移動の指示案まで作る

複数の銀行口座の入出金を毎日集めて、口座間の資金移動の指示案まで作る

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

複数の銀行口座の残高と入出金明細を毎朝集め、摘要から相手先と取引区分を判別して、当日の支払予定と照らした口座別の過不足を出します。担当者の作業は、各行のサイトを回って集計することから、過不足の一覧を見て資金移動を決めることに変わります。

サマリー
利用ツール
ChatGPT/Claude/Gemini/Google Apps Script/Power Automate/Python
対象業界
商社/小売/建設/物流/製造
対象部門
経理/財務
対象業務
データ入力・転記/集計・分析
主な課題
データ分析に時間がかかる/判断に時間がかかる/属人化している
AIで行う処理
分類
主な効果
判断支援/属人化解消/工数削減
導入難易度
★★★☆☆
実装レベル
半自動化
費用感
API連携(中)
人間の確認
必須
現在工数
30h/月
AI導入後
8.7h/月
想定削減
71%
年間削減
256h
モデル条件による試算値です。実在企業の実績ではありません。

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

導入前(Before)
  1. 朝、各行のインターネットバンキングに順にログインする
  2. 12口座の前日残高と、当日朝の入出金明細を画面から拾う
  3. 表計算ソフトの残高一覧に手で転記する
  4. 入金明細の摘要を見て、どの取引先からの入金かを判断する
  5. 会計システムの売掛金一覧と突き合わせ、消込の対象を確認する
  6. 当日と翌営業日の支払予定(手形、振込、口座振替、給与、税金)を確認する
  7. 口座ごとの過不足を計算する
  8. 不足する口座へ、余裕のある口座から振り替える指示を作る
  9. 上長の承認を受け、インターネットバンキングで振替を実行する
導入後(After)
  1. 自動毎営業日の朝、各口座の残高と入出金明細を取り込む
  2. 自動明細の摘要から、相手先と取引区分(売掛回収/仕入支払/経費/振替/利息/その他)を判別する
  3. 自動売掛金一覧と照らして、消込の候補を付ける
  4. 自動販売管理システムと会計システムから、当日・翌営業日の支払予定を集める
  5. 自動口座ごとに「当日の予定を差し引いた後の残高」を計算する
  6. 自動不足する口座と余裕のある口座を突き合わせ、資金移動の案を作る
  7. 自動判別できなかった明細を、要確認として一覧に出す
  8. 資金担当が過不足の一覧を見て、資金移動を決める
  9. 上長の承認を受け、インターネットバンキングで振替を実行する
各工程の詳しい説明を読む
  1. 朝、各行のインターネットバンキングに順にログインする
  2. 12口座の前日残高と、当日朝の入出金明細を画面から拾う
  3. 表計算ソフトの残高一覧に手で転記する
  4. 入金明細の摘要を見て、どの取引先からの入金かを判断する
  5. 会計システムの売掛金一覧と突き合わせ、消込の対象を確認する
  6. 当日と翌営業日の支払予定(手形、振込、口座振替、給与、税金)を確認する
  7. 口座ごとの過不足を計算する
  8. 不足する口座へ、余裕のある口座から振り替える指示を作る
  9. 上長の承認を受け、インターネットバンキングで振替を実行する

問題は4つあります。

(a)ログインして回るだけで時間がかかる。 5行分のログイン(ワンタイムパスワードの入力を含む)と画面の遷移だけで、15分前後かかります。

(b)摘要の読み取りが属人化している。 振込名義は半角カナで略されており、正式名称と一致しません。ベテランは見た瞬間に分かりますが、代わりの担当者には分かりません。担当者が休むと、その日の資金繰りが止まります。

(c)判断の根拠が残らない。 「なぜその日にその金額を振り替えたのか」は記録されていません。翌月に見返しても再現できません。

(d)当座貸越の利息が出ている。 移動の判断が遅れて、ある口座が一時的にマイナスになることがあります。別の口座に十分な残高があっても、気づかなければ利息が発生します。

  1. 【自動】 毎営業日の朝、各口座の残高と入出金明細を取り込む
  2. 【自動】 明細の摘要から、相手先と取引区分(売掛回収/仕入支払/経費/振替/利息/その他)を判別する
  3. 【自動】 売掛金一覧と照らして、消込の候補を付ける
  4. 【自動】 販売管理システムと会計システムから、当日・翌営業日の支払予定を集める
  5. 【自動】 口座ごとに「当日の予定を差し引いた後の残高」を計算する
  6. 【自動】 不足する口座と余裕のある口座を突き合わせ、資金移動の案を作る
  7. 【自動】 判別できなかった明細を、要確認として一覧に出す
  8. 【人】 資金担当が過不足の一覧を見て、資金移動を決める
  9. 【人】 上長の承認を受け、インターネットバンキングで振替を実行する

自動化されるのは「集める」「摘要を読む」「突き合わせる」「過不足を計算する」「案を作る」の5つです。残るのは、資金移動を決めることと、実行することです。

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

構成図
各行のインターネットバンキング / 全銀形式の入出金明細ファイル
   │  (API連携が使える行はAPI、使えない行はファイルの取り込み)
   ▼
明細の取り込みフォルダ(Google ドライブ)
   │
   ▼【トリガー】時間主導型トリガー(毎営業日 8:00)
Google Apps Script
   │
   ├──▶ 明細を正規化(日付・金額・摘要・口座)
   │
   ├──▶ Claude API ── 摘要から相手先と取引区分を判別
   │
   ├──▶ 取引先マスタ・売掛金一覧と照合(Google スプレッドシート)
   │
   ├──▶ 支払予定を取得(販売管理システム / 会計システムのエクスポート)
   │
   ├──▶ 口座別の過不足を計算
   │
   └──▶ 資金ポジション表(スプレッドシート)を作成
   │
   ▼
資金担当が確認 ──【人】資金移動を決める
   │
   ▼
上長が承認 ──【人】
   │
   ▼
インターネットバンキングで振替を実行 ──【人】
役割想定する製品代替候補
実行環境Google Apps ScriptPython、Power Automate
生成AIClaude APIOpenAI API、Gemini API
集計Google スプレッドシートExcel
保管Google ドライブSharePoint、Box

資金管理システム(CMS)や、金融機関が提供する複数行の残高照会サービスがあるなら、まずそちらを検討してください。 複数の銀行の残高を1画面で見る機能は、既製のサービスが持っています。自前で組む価値があるのは、「摘要から取引区分を判別して、自社の支払予定と突き合わせる」部分です。

振替の実行は、どの構成でも自動化しません。 理由は後述します。

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

Step1

処理の起点を決める

毎営業日の決まった時刻(朝8時)を起点にします。Google Apps Script の時間主導型トリガーは、1分おきから月1回までの間隔でスクリプトを実行できます。日次の実行はこの範囲に収まります。

営業日の判定を必ず入れてください。 土日祝に実行すると、前営業日の明細を重複して取り込むことになります。祝日は年によって変わるため、カレンダーのシートを持つか、カレンダーサービスを参照します。

入金が午後に反映される銀行があるため、朝だけでなく午後にもう一度実行する構成も考えられます。 ただし最初は朝1回で始め、必要が出てから増やしてください。

Step2

入力データを集める

データ中身取得元
口座残高口座ごとの前日残高・当日残高各行のAPIまたは明細ファイル
入出金明細日付、金額、入出金区分、摘要(振込依頼人名など)同上
取引先マスタ正式名称、振込名義(半角カナ)、取引先コードスプレッドシート
売掛金一覧取引先、請求番号、請求額、入金予定日会計システムのエクスポート
支払予定支払先、金額、支払日、支払方法、引落口座販売管理システム・会計システム
口座マスタ口座の用途、最低維持残高、当座貸越の枠スプレッドシート
Step3

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

入出金明細: 銀行によって取得方法が違います。3通りを想定します。

方式内容
API連携銀行が提供するAPIで残高と明細を取得する。利用可否と手続きは銀行に確認する
ファイル取り込みインターネットバンキングから全銀形式またはCSVで明細をダウンロードし、フォルダへ置く
手作業上記が使えない口座は、担当者が画面から転記する

すべての口座をAPIにする必要はありません。 残高の大きい主要口座だけAPIにして、残りはファイル取り込みでも、この構成は成立します。利用可否と費用は銀行ごとに異なるため、個別に確認してください。

取引先マスタ: 振込名義(半角カナ)の列を持たせることが要です。「カ)マルマルショウジ」と「株式会社マルマル商事」を結びつける表がないと、AIも判別できません。この列は最初は空でも構いません。 運用しながら、判別できなかった明細を人が確定するたびに追記していきます。

支払予定: 会計システムから日次でエクスポートします。手形の期日、口座振替の引落日、給与、税金・社会保険料を漏らさないでください。 月末に集中するこれらを見落とすと、過不足の計算が意味をなしません。

Step4

AIへ渡す前に整形する

  1. 明細の正規化 … 銀行ごとに違うCSVの列を、共通の形(日付/口座/入出金/金額/摘要)に直します
  2. 重複の除去 … 同じ明細を2回取り込まないよう、「口座+日付+金額+摘要」で既存データと照合します
  3. 半角カナの正規化 … 摘要の半角カナを全角に直し、記号(( ) . など)を統一します。この処理だけで、機械的に一致する明細が大きく増えます
  4. 機械的に一致するものの先行処理 … 取引先マスタの振込名義と完全一致する明細は、AIを通さずに確定します。全明細をAIに渡す必要はありません。 費用も処理時間も減ります
Step5

AIに処理させる

前処理で機械的に一致しなかった明細だけをAIへ渡します。月1,800明細のうち、実際に渡るのは2〜3割程度のはずです。

処理内容
相手先の推定略された振込名義から、取引先マスタの候補を挙げる
取引区分の判別売掛回収/仕入支払/経費/口座間振替/利息・手数料/税金・社会保険/給与/その他
消込候補の提示金額と相手先から、売掛金一覧の該当しそうな請求を挙げる
分割・合算の検出1件の入金が複数請求の合算である、1請求が分割入金されている、といった形を指摘する
確信度high / medium / low

金額の計算はAIにさせません。 過不足の計算、合算の検算はすべて表計算側で行います。AIにさせるのは「この明細は何か」という区分づけだけです。

Step6

指示内容を固定する

あなたは財務部の資金担当を支援する担当者です。
銀行の入出金明細の摘要から、相手先と取引区分を判別してください。

【厳守事項】
- 金額、日付、口座番号を書き換えないでください。明細の値をそのまま引き継いでください。
- 相手先は、下の取引先マスタにあるものからのみ選んでください。
  マスタに候補がない場合は counterparty_code を null にし、
  reason に摘要のどの部分が手がかりになったかを書いてください。
  **新しい取引先を作らないでください。**
- 取引区分は、下の区分一覧からのみ選んでください。判断できない場合は「その他」にし、
  confidence を low にしてください。
- 消込候補は、下の売掛金一覧に存在する請求からのみ挙げてください。
  金額が一致しない場合でも、合算・分割の可能性があれば候補として挙げ、
  match_type に「合算」「分割」と書いてください。
- 金額の計算をしないでください。合計や差額を出さないでください。
- 推測で取引の内容を補わないでください。摘要に書かれた文字だけを手がかりにしてください。

【取引区分の一覧】
売掛回収 / 仕入支払 / 経費 / 口座間振替 / 利息・手数料 / 税金・社会保険 / 給与 / その他

【判別する明細】
{transactions}

【取引先マスタ(正式名称 / 振込名義 / コード)】
{counterparty_master}

【売掛金一覧(未消込・相手先と金額が近いもの)】
{receivables}

「新しい取引先を作らない」の1行が重要です。 これを書かないと、AIは摘要をそのまま取引先名として返します。存在しない取引先コードが台帳に入ると、後の集計がすべて狂います。

Step7

出力形式を固定する

{
  "transaction_id": "",
  "account_code": "",
  "value_date": "",
  "direction": "in | out",
  "amount": 0,
  "raw_description": "",
  "counterparty_code": "",
  "counterparty_name": "",
  "category": "売掛回収 | 仕入支払 | 経費 | 口座間振替 | 利息・手数料 | 税金・社会保険 | 給与 | その他",
  "matched_receivables": [
    { "invoice_no": "", "amount": 0, "match_type": "完全一致 | 合算 | 分割" }
  ],
  "confidence": "high | medium | low",
  "needs_review": [],
  "reason": ""
}

JSON Schema を指定して出力を固定します。Claude API では output_config.formatjson_schema を渡すことで、応答をスキーマに沿った形に制約できます。

金額は数値で受け取り、AIが返した値と元の明細の値が一致するかを機械で検算してください。 書き換えないよう指示していても、検算は必ず入れます。一致しなければその明細を破棄して人へ回します。

Step8

システムへ連携する

判別結果と口座残高から、資金ポジション表をスプレッドシートに作ります。Apps Script は SpreadsheetApp でシートの範囲を読み書きできるため、行の追記と書式の設定はスクリプト内で完結します。

表の構成は次のとおりです。

シート中身
口座別サマリー口座ごとの当日残高、当日の支払予定、差引後残高、最低維持残高との差
資金移動の案不足口座、充当元口座、金額、理由
明細一覧判別結果つきの全明細。confidence が low の行に色を付ける
要確認相手先が特定できなかった明細、金額の検算が合わなかった明細

資金移動の案は「案」として出すだけです。 振替の実行データを作ったり、インターネットバンキングへ送ったりはしません。

消込候補は、会計システムへ自動反映しません。入金消込の確定は、別の業務として人が行う前提です。 ここではあくまで「この入金はこの請求らしい」という情報を、資金担当が相手先を特定するための手がかりとして使います。

Step9

人が確認する

資金移動は、全件、人が決めます。承認も人が行います。

理由は、金銭の移動を伴うためです。この構成で減らしているのは「集めて読んで計算する時間」であって、「いくら動かすかを決める責任」ではありません。

確認を速くするための設計が効きます。

  • 口座別サマリーを、差引後残高が少ない順に並べる
  • 最低維持残高を下回る口座を赤で表示する
  • 当座貸越の枠に入る見込みの口座を最上部に出す
  • confidence が low の明細の件数を、サマリーの先頭に出す(多い日は過不足の計算自体が怪しい
  • 前日に人が確定した相手先を、取引先マスタへ追記する導線を作る

最後の項目が、運用の質を決めます。判別できなかった明細を人が確定するたびにマスタが育ち、翌月以降の判別率が上がります。 この仕組みを入れないと、いつまでも同じ明細で迷います。

Step10

例外に対処する

起きること対応
銀行のサイトが一時的に使えないその口座を「取得できず」として表示する。古い残高を最新として表示しない
明細の取り込みが重複した「口座+日付+金額+摘要」で重複を検出し、後から来たものを破棄する
相手先が特定できないcounterparty_code を null にして要確認へ。推測で当てない
AIが返した金額が元と違う検算で検出し、その明細を破棄して人へ回す
1件の入金が複数請求の合算match_type を「合算」として候補を並べる。消込の確定は人が行う
新規取引先からの入金要確認へ。人が確定してから取引先マスタへ追記する
祝日に実行された営業日判定でスキップする
支払予定のエクスポートが失敗した過不足の計算を行わず、残高一覧だけを表示する。 支払予定なしの過不足は誤った数字になる
月末に支払が集中して不足口座が多数出る案を出すだけにとどめ、優先順位は人が決める。自動で配分しない
外貨預金口座があるこの構成の対象外とする。為替の評価が必要なため別扱いにする
Step11

記録を残す

この業務のログは、資金の動きの説明責任に直結します。

  • 取り込んだ明細の原本(銀行から取得したファイルまたはAPIの応答)
  • 判別結果(相手先、区分、confidence
  • 人が修正した相手先・区分と、修正前後の値
  • 資金ポジション表の日次スナップショット
  • 資金移動の案と、実際に実行した内容の差
  • 承認者、承認日時

「案と実際の差」を残すことに意味があります。 案のとおりに動かさなかった日が続くなら、案の作り方に前提の抜けがあります。

日次スナップショットは、後から「その日、なぜその判断をしたか」を再現する材料になります。月次で圧縮して保管しても構いません。

04実装レベルの3段階

最小構成:明細をダウンロードして表計算で機械一致させ、残りをチャット画面で判別する / 摘要の読み取りの一部
半自動化:ファイル取り込み+機械一致+AI判別+過不足の計算+資金ポジション表の作成 / 集約と計算のすべて
本格構成:上記+主要口座のAPI連携+支払予定の自動取得+取引先マスタの自動追記 / 取得から案の作成まで

半自動化の時点で、45分が18分程度になります。 摘要の読み取りと過不足の計算が消えるためです。本格構成では13分になりますが、減るのは各行へのログインの手間です。 API連携は最後でよい、というのがこの構成の考え方です。ファイルをダウンロードして所定のフォルダへ置く作業は、1口座あたり1分程度です。 判別と計算が自動化されていれば、そこだけ手作業でも効果は十分に出ます。

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

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

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

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

AI活用について相談する

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

向いている
  1. 銀行口座が5口座以上あり、拠点や事業ごとに口座を分けている企業。毎日の残高確認と口座間の資金移動を人が判断している場合。当座貸越や短期借入の利息を減らしたい場合。入出金明細の摘要から相手先を読み取る作業が手作業になっている場合。
向いていない
  1. 口座が1〜2口座で、残高を見れば判断が済む場合。資金管理システム(CMS)や全社的なプーリングの仕組みを導入済みの場合。入出金の件数が月数十件で、通帳を見れば足りる場合。

07最小構成で試す方法

  1. 直近1か月の入出金明細を、口座をまたいで300明細ぶん用意する(CSVで足りる)
  2. 取引先マスタの「正式名称/振込名義」の2列を、上位50社ぶんだけ作る
  3. 表計算ソフトで、振込名義と完全一致する明細を機械的に判別する
  4. 一致しなかった明細を、生成AIのチャット画面に貼り付けて判別させる
  5. 相手先と取引区分が正しかった件数を数える

まず3番の「機械的な一致だけで何割片付くか」を測ってください。 ここが7割を超えるなら、AIに渡す量は少なく、費用も小さく収まります。

機械一致 + AI判別の合計正解率判断
9割以上自動化する価値がある
7〜9割使える。要確認の件数が1日10件程度なら実用の範囲
7割未満取引先マスタの振込名義の整備が足りない。まずそこを埋める

銀行のAPI連携を試す前に、この検証を済ませてください。 API連携には銀行との手続きが必要で、時間がかかります。判別の精度が出ないと分かってから手続きするのは無駄になります。

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

問題対策
銀行ごとにCSVの列が違う取り込み時に共通の形へ正規化する。銀行ごとの変換定義を表で持つ
半角カナで一致しない正規化(全角化・記号統一)を前処理に入れる。これだけで一致率が上がる
存在しない取引先コードが作られるマスタからのみ選ばせる。null を許す
金額が書き換えられる元の明細と機械で検算する。一致しなければ破棄
同じ明細を2回取り込む「口座+日付+金額+摘要」で重複を検出する
祝日に実行して古い明細を再取得する営業日判定を入れる。祝日カレンダーを持つ
支払予定に手形や税金が入っていない支払予定の元データの範囲を、経理と決めてから作る
取引先マスタが育たない人が確定したらマスタへ追記する導線を作る。これがないと精度が上がらない
資金移動を自動実行してしまう実行の経路を作らない。案の提示までで止める
外貨預金を同じ表に混ぜる対象外にする。為替評価が必要なため別管理にする

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

この構成で扱うデータ: 口座番号、残高、入出金の相手先と金額。自社の資金繰りの状況と、取引先との取引規模が読み取れる情報です。

  1. 外部AIへ渡す範囲を絞る口座番号と残高をAIへ渡す必要はありません。 判別に必要なのは摘要と金額だけです。渡すデータを最小限にしてください。取引先名と金額だけでも十分に機微な情報です
  2. 認証情報の管理 … 銀行のAPIの認証情報、インターネットバンキングのIDを、スクリプトに直接書かないでください。スクリプトのプロパティや秘密情報の保管機能を使い、閲覧できる人を限定します
  3. 学習利用 … 入力を学習に使わないことが契約で保証されるサービスを選びます
  4. アクセス権限 … 資金ポジション表の閲覧を、財務部と経営層に限定します。全社共有のドライブに置かないでください
  5. 振込先口座の扱いこの構成で、振込先口座を自動で更新する処理を絶対に作らないでください。 取引先を装って口座変更を依頼する手口の詐欺があります。口座情報の変更は、必ず別の経路での確認を経て人が行います
  6. 自動実行してよい範囲 … 明細の取得、区分の判別、過不足の計算、案の提示までです。資金移動の実行、承認、会計システムへの消込の反映は自動化しないでください

誤りが起きた場合のリスクは、誤った資金移動、必要な口座への手当ての漏れによる引落不能、相手先の誤認による消込の誤りです。いずれも金銭または取引先との関係に直接影響します。日次のスナップショットと承認ログを残し、後から追跡できる状態にしてください。

10まず何から始めるか

1週目:機械一致で何割片付くかを測る

直近1か月の明細300件と、取引先マスタの上位50社で、振込名義の完全一致だけを試します。ここで7割を超えるなら、この構成は軽く作れます。 超えないなら、まず振込名義の列を埋めることから始めてください。

2週目:支払予定の元データをそろえる

当日・翌営業日の支払予定を、どこから取るかを経理と決めます。手形の期日、口座振替の引落日、給与、税金・社会保険料の4つが漏れやすい項目です。 ここが揃わないと、過不足の計算が成り立ちません。

3〜4週目:ファイル取り込みの半自動化を作る

API連携はまだ作りません。各行から明細をダウンロードしてフォルダへ置く運用で、判別と過不足の計算だけを自動化します。資金担当1名が2週間使い、1回あたりの時間と要確認の件数を実測します。

2か月目以降: 効果が確認できたら、残高の大きい主要口座からAPI連携を検討します。同時に、導入前3か月の当座貸越の発生日数と金額を集計し、比較できる状態にしておいてください。 時間削減より、こちらのほうが説明しやすい効果になることがあります。


11関連ユースケース

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

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

技術仕様確認日:2026-09-21/最終更新:2026-09-21
確認した内容情報源確認日
Google Apps Script の時間主導型トリガーが、1分おきから月1回までの間隔でスクリプトを実行できること。フォーム送信時などのインストール型トリガーも用意されていることGoogle: Installable triggers2026-09-21
Apps Script が SpreadsheetApp を通じてスプレッドシートの範囲を読み書きし、行の追記や書式の設定を行えること。スクリプトをスプレッドシートに紐づけて動かせることGoogle: Extending Google Sheets2026-09-21
Claude API で output_config.formatjson_schema を渡すと、応答をスキーマに沿った形に制約できることClaude Docs: Structured outputs2026-09-21

銀行のAPIの利用可否、料金、明細ファイルの形式は金融機関によって異なります。この部分は取引銀行への個別確認が必要です。 会計システム・販売管理システムからの支払予定のエクスポート方式も、製品によって異なります。

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

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

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

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