【n8n×生成AI】入金消込を自動化する方法|名義ゆれ・手数料差引にも対応

NoCode
この記事は約11分で読めます。

「毎朝、銀行の入金明細と請求一覧を見比べるだけで1時間が溶ける」。経理担当者なら、一度はそう感じたことがあるはずです。振込名義が半角カナで省略されていたり、振込手数料が差し引かれていたりすると、目視での突き合わせはさらに手間がかかります。

この記事では、ワークフロー自動化ツールのn8n(エヌエイトエヌ)と生成AIを組み合わせ、入金消込を半自動化する方法を解説します。名義の正規化、完全一致の自動照合、AIによる候補提示、担当者の承認までを一つの流れとして組み立てます。ノード構成、コピペで使えるコード例とプロンプト例、内部統制上の注意点まで紹介します。

対象読者は、売掛金管理や入金確認を担当する経理の実務担当者と、その仕組み化を任された管理職の方です。プログラミング経験がなくても読み進められます。

スポンサーリンク

n8nで入金消込を自動化する全体像とAIの役割

入金消込とは、銀行口座への入金を、どの請求(売掛金)に対する支払いかひも付けて消し込む作業です。ルールがはっきりした部分と、人の判断が必要な部分が混在しているのが特徴です。そこで今回は「機械で決められる部分はルールで、迷う部分はAIで候補を出し、最後は人が決める」という3段構えにします。

入金消込でつまずきやすい4つのパターン

  • 名義ゆれ:「カ)ヤマダショウジ」のように略号や半角カナで表記が異なる
  • 手数料差引:請求額から振込手数料分が差し引かれて入金される
  • 合算入金:複数の請求をまとめて1回で振り込まれる
  • 名義違い:親会社や経理代行会社など、請求先と異なる名義から振り込まれる

名義ゆれは文字列の正規化で機械的に吸収できます。一方、残りの3つは金額や取引の文脈から推測が必要です。この「推測」の部分を生成AIに担当させ、候補と理由を出してもらうのが今回の設計の肝です。

AIに任せる範囲と任せない範囲

生成AIは、もっともらしい誤答(ハルシネーション)を出すことがあります。そのため、AIに消込の確定や会計ソフトへの登録はさせません。AIの役割は「この入金はおそらくこの請求です。理由は〜です」という候補の提示までです。確定は必ず担当者が行い、誰がいつ承認したかを記録に残します。

入金消込ワークフローのノード構成(n8n)

ここでは、銀行の入出金明細CSVを共有ドライブに置き、未消込の請求一覧をGoogleスプレッドシートで管理している想定で説明します。

ワークフロー図(ノード一覧)

  1. Schedule Trigger:毎朝9時など、決まった時刻に起動
  2. Google Drive(Download):所定フォルダから当日の入金明細CSVを取得
  3. Extract From File(CSV):CSVを1行ずつのデータに変換
  4. Code(入金側の正規化):振込名義の正規化と照合キーの作成
  5. Google Sheets(Get Rows):未消込の請求一覧と顧客マスタ(振込名義カナ)を取得
  6. Code(請求側の正規化):請求側にも同じルールで照合キーを作成
  7. Compare Datasets:照合キーで入金と請求を突き合わせ
  8. Basic LLM Chain+Structured Output Parser:一致しなかった入金について、AIが候補と理由をJSONで返す
  9. Google Sheets(Append):結果を「消込候補」シートに書き込み
  10. Slack / メール通知:担当者に確認依頼を送る

Compare Datasetsは、2つのデータを指定した項目で突き合わせるn8nの標準ノードです。公式ドキュメントによると、結果は「In A only」「Same」「Different」「In B only」の4つに分かれて出力されます。照合キーが一致しても他の列が違えば「Different」に出るため、「Same」と「Different」の両方を完全一致候補として扱います。

銀行CSVを読み込むときの注意

国内の銀行が出力するCSVは、文字コードがShift_JISの場合があります。読み込み後に文字化けしていたら、事前にUTF-8へ変換する処理を挟んでください。列名や日付形式も銀行ごとに異なるため、最初は数日分で動作確認しましょう。

名義ゆれを吸収する正規化コードと照合キーの作り方

完全一致の精度は、正規化の出来でほぼ決まります。ここでは、入金側のCodeノードに貼り付けて使える例を紹介します。列名「振込依頼人名」「入金額」は、お使いのCSVに合わせて書き換えてください。

// Codeノード(Run Once for All Items)
const normalize = (s) => String(s ?? '')
  .normalize('NFKC')        // 半角カナ→全角、全角英数→半角
  .replace(/\s/g, '')        // 全角・半角スペースを除去
  .replace(/^(カ|ユ|ド)\)/, '')       // 前株の略号「カ)」等
  .replace(/\((カ|ユ|ド)\)?$/, '')   // 後株の略号「(カ」等
  .toUpperCase();

return $input.all().map((item) => {
  const name = normalize(item.json['振込依頼人名']);
  const amount = Number(String(item.json['入金額']).replace(/,/g, ''));
  return {
    json: {
      ...item.json,
      名義正規化: name,
      金額: amount,
      照合キー: `${name}|${amount}`,
    },
  };
});

請求側のCodeノードでも、顧客マスタの「振込名義カナ」と「請求額」に同じ関数を使います。入金側と請求側で正規化ルールがずれると、一致するはずのデータが外れてしまうためです。

顧客マスタに「振込名義カナ」列を持たせる

正規化だけでは、社名と振込名義が大きく異なるケースに対応できません。そこで顧客マスタに「振込名義カナ」列を追加し、実際に入金された名義を登録しておきます。1つの取引先に複数の名義がある場合は、カンマ区切りで並べておけば、Codeノードで分割して照合できます。消込確定のたびに更新すれば、一致率は少しずつ上がります。

生成AIで消込候補を出すプロンプト例と出力形式

Compare Datasetsで一致しなかった入金(In A only)だけを、AIのノードに渡します。トークン(AIが処理する文字量の単位)と送信するデータを減らすため、請求の候補は事前に絞り込みます。例えば「入金額との差が1,000円以内」や「名義の先頭3文字が一致」といった条件です。

コピペで使えるプロンプト例

あなたは経理部の入金消込アシスタントです。
以下の「入金明細」に対応する請求を「請求候補」から選んでください。

# ルール
- 確実でない場合は、無理に選ばず "unknown" と答える
- 差額がある場合は理由を次から1つ選ぶ:
  fee(振込手数料差引)/ combined(合算入金)/
  partial(一部入金)/ other(その他)
- 判断理由は60字以内の日本語で書く
- 請求候補にない請求番号を作らない

# 入金明細
{{ JSON.stringify($json.入金) }}

# 請求候補
{{ JSON.stringify($json.請求候補) }}

Structured Output Parserで出力を固定する

AIの回答を表に書き込むには、毎回同じ形のJSONで返してもらう必要があります。n8nのStructured Output Parserは、JSONの例やJSON Schemaを指定すると、その形式で出力を受け取れるサブノードです。例えば、次のようなJSON例を登録します。

{
  "invoice_ids": ["INV-2026-0912"],
  "diff_reason": "fee",
  "diff_amount": 440,
  "confidence": "high",
  "reason": "名義が一致し、差額が振込手数料相当のため"
}

公式ドキュメントでは、JSON例から生成したスキーマはすべての項目が必須として扱われると説明されています。項目は最初は上記程度の最小構成に留めましょう。なお、手数料の金額は銀行や振込方法で変わります。差額の妥当性はAIに任せきりにせず、許容範囲を社内ルールとして決めておきましょう。

消込候補シートの設計と承認フローの作り方

AIの結果は、そのまま会計ソフトに登録せず、スプレッドシートの「消込候補」シートに書き出します。担当者はこのシートで内容を確認し、承認か差し戻しを選びます。

列名内容入力者
入金日・名義・金額銀行CSVの値をそのまま転記n8n
判定区分完全一致 / AI候補 / 候補なしn8n
候補請求番号ひも付け先の請求番号(複数可)n8n
差額・差額理由fee / combined / partial / othern8n(AI)
確信度・判断理由high / medium / low と理由n8n(AI)
承認ステータス未確認 / 承認 / 差戻し担当者
承認者・承認日時誰がいつ確定したか担当者

日々の運用手順

  1. 朝の自動実行後、Slackに届いた件数サマリーを確認する
  2. 「完全一致」の行を一覧で確認し、まとめて承認する
  3. 「AI候補」の行は判断理由と差額を見て、1件ずつ承認または修正する
  4. 「候補なし」の行は、営業担当や取引先に照会する
  5. 承認済みの行を会計ソフトで消し込み、顧客マスタの振込名義カナを更新する

会計ソフトへの登録まで自動化したくなるかもしれません。ただ、最初の数か月は人が登録し、AI候補の当たり外れを記録しましょう。

入金消込自動化の導入時の注意点・リスク

入金データは、取引先との関係や資金繰りに直結する機密情報です。次の点を事前に整理しておきましょう。

情報漏えい・個人情報への配慮

入金明細には、個人の顧客名が含まれることがあります。外部の生成AIのAPIに送る前に、利用するサービスのデータ取り扱い方針と、社内の情報管理規程を確認してください。AIに渡す項目は、名義・金額・日付など判断に必要な最小限に絞るのが基本です。口座番号などの不要な情報は、Codeノードの段階で削除しておきます。

職務分掌と権限管理

ワークフローを作る人と、消込を承認する人は分けるのが理想です。n8nに登録するGoogleアカウントや銀行関連の認証情報は、必要なフォルダやシートだけにアクセスできる専用アカウントにしましょう。承認列はシートの保護機能で編集者を限定します。

クラウド版とセルフホストの選択

n8nには、提供元が運用するクラウド版と、自社サーバーで動かすセルフホスト版があります。執筆時点(2026年10月)の公式料金ページでは、クラウド版は年払いでStarterプランが月20ユーロからと案内されています。料金やプラン内容は変わることがあるため、最新情報は公式サイトをご確認ください。セルフホストはデータを社内に留めやすい反面、保守の負担が自社にかかります。

取引条件の見直しにも目を向ける

2026年1月1日から、下請法は中小受託取引適正化法(取適法)に改められました。自治体の解説ページでは、振込手数料を中小受託事業者に負担させることの禁止が改正点として紹介されています。対象取引かは個別判断ですが、取引条件を見直す良い機会です。詳細は公正取引委員会の情報をご確認ください。

導入前チェックリスト

  • AIに送る項目を最小限に絞り、不要な口座情報を削除しているか
  • AIの回答は候補扱いとし、確定は人が行うルールになっているか
  • 承認者と承認日時が記録に残る設計か
  • 手数料差額の許容範囲を社内ルールとして決めているか
  • 認証情報は専用アカウントで、権限を最小限にしているか
  • ワークフローが止まったときの手作業手順を残しているか

よくある質問(FAQ)

会計ソフトの自動消込機能があれば、n8nは不要ですか?

会計ソフト等の消込機能で十分に回っているなら、無理に導入する必要はありません。n8nが役立つのは、複数の銀行口座や複数のシステムをまたいで照合したい場合です。また、名義違いや合算入金など、標準機能で拾いきれない例外処理をAIで補いたい場合にも向いています。

freeeなどの会計ソフトにおける自動消し込みは個別請求単位で認識されること、またMF等では自分で選択する必要があること、それぞれ特徴があります。請求先の支払い方法と自社の請求書の発行方法を確認してから、何が本来適切なのかを検討する必要があります。

AIの判定精度はどのくらい信用できますか?

精度は、請求データの整備状況や取引先の振込の傾向によって大きく変わるため、一概には言えません。だからこそ、AIの回答は「候補」として扱い、確信度と判断理由を必ず出力させる設計にしています。導入初期は、AI候補が正しかったかどうかをシートに記録しましょう。数か月分のデータがたまれば、自社での精度を根拠をもって評価できます。

プログラミング未経験でも構築できますか?

n8nはノードを画面上でつなげて作るため、全体の流れは非エンジニアでも組み立てられます。コードが必要なのは正規化の部分くらいで、本記事の例をもとに列名を変えれば動かせるはずです。不安な場合は、まず「CSVを読み込んでシートに書き出すだけ」の小さなワークフローから始めてください。慣れてから照合やAIのノードを足していきましょう。

まとめ:n8n×生成AIの入金消込は「候補提示+人の承認」から始める

入金消込は、ルールで決められる部分と、人の判断が必要な部分が混在する業務です。n8nを使えば、名義の正規化と完全一致の照合を自動化し、一致しなかった入金だけをAIに渡して候補を出せます。最終的な確定は人が行い、承認の記録を残すことで、内部統制とも両立できます。

次のアクションとして、まずは直近1か月分の入金明細で、名義ゆれや手数料差引が何件あるかを数えてみてください。例外の件数と種類が分かれば、自動化の効果とAIを使うべき範囲が見えてきます。そのうえで、顧客マスタに振込名義カナ列を追加するところから始めましょう。

関連記事

参考リンク

タイトルとURLをコピーしました