学習・技術検証用デモ — 本システムは実際の銀行サービスではありません。

公開情報をもとに構築した教育目的のシステムです。実在する個人情報・口座情報・機密情報・認証情報等を入力しないでください。

ミニ銀行ACADEMY SYSTEM LEARNING
教材メニュー
学習進捗0 / 134
あと134項目
INTERMEDIATE · 中級COURSE 09 · BANKING ENGINEERING

銀行エンジニアリング 10:総勘定元帳と補助元帳、Clearing AccountとSuspense Account

総勘定元帳(GL)の1つの残高には、必ず「誰の・どの取引の分か」という内訳があります。MiniBankの4つの補助元帳と、未決済為替・仮受金という銀行特有の勘定を学びます。

12 / 55
BANKING ENGINEERING · 銀行エンジニアリング

v8以降に実装した台帳・記帳エンジンなどを実際に動かし、正常時と異常時の両方から銀行システムの構造を学ぶ。

Prerequisite: BANKING SYSTEM

LEARNING GOALS

このページで学ぶこと

  • GL(統制勘定)と補助元帳の関係
  • 7つの補助元帳照合と差異の検出
  • Clearing Account(未決済為替)と Suspense Account(仮受金)の役割

PLAIN LANGUAGE

まず、ここだけつかむ

1

GLの統制勘定と、その内訳(補助元帳)の合計を照合します。

2

MiniBankでは普通預金・定期預金・未決済為替・仮受金に、v14で貸出金・未収収益・貸出金利息を加えた7つを照合します。

3

仮受金は入金先が分からないお金の一時置き場で、特定できたら顧客へ振り替えます。

DIFFICULT PARTS, STEP BY STEP

難しいポイントを、順番にほどく

専門用語を覚えることより、「なぜ必要か」「このシステムのどこで使うか」を理解することが目標です。

01

Control Account(統制勘定)

やさしく言うと

内訳を持つGLの科目です。

なぜ必要?

全体と明細を別の粒度で管理するためです。

Minibankでは

gl.accounts の subledger 列がある科目。

02

Clearing Account

やさしく言うと

決済が終わるまで一時的に置く勘定です。

なぜ必要?

受付と決済の間の義務を表すためです。

Minibankでは

2300 未決済為替(INTERBANK_OUTBOUND_PENDING)。

03

Suspense Account(仮受金)

やさしく言うと

誰の分か分からない入金を置く勘定です。

なぜ必要?

分からないまま誤った口座に入れないためです。

Minibankでは

2900 仮受金と gl.suspense_items。

Level 1 基礎:合計と内訳

GLの「普通預金」は全顧客の預金の合計です。その内訳(口座ごとの残高)を持つのが補助元帳です。合計と内訳の合計が一致していれば、少なくとも数字の抜けや重複はないと確かめられます。

Level 2 銀行業務:MiniBankの7つの補助元帳(照合)

GL統制勘定補助元帳(内訳)
2100普通預金口座ごとの残高(bank_accounts.cached_balance)
2200定期預金有効な定期預金の元本(time_deposits)
2300未決済為替(Clearing Account)未決済の他行宛送金(interbank.payments)
2900仮受金(Suspense Account)未解消の仮受金明細(gl.suspense_items)
1300貸出金(v14)融資契約の元本残高(lending.contracts)
1400未収収益(v14)融資契約の未収利息(lending.contracts)
4110貸出金利息(v14・収益)融資契約の利息計上の合計(lending.accrual_events、訂正済みを除く)

Level 2 銀行業務:Clearing AccountとSuspense Account

  1. 01未特定の入金(SUSPENSE_RECEIPT:中央銀行預け金/仮受金)
  2. 02調査(振込人・金額・日付の照合)
  3. 03振替(SUSPENSE_CLEAR:仮受金/顧客の預金)
  • 未決済為替(2300):顧客から預かったが、まだ他行へ決済していない送金。v9の資金確保で増え、決済で減る
  • 仮受金(2900):お金は届いたが、誰の預金にすべきか分からない入金を一時的に置く場所。特定できたら顧客の預金へ振り替える
  • どちらも「一時的に置く」勘定なので、残高が残り続けること自体が調査のきっかけになる

Level 3 システム:MiniBankでの実装

  • gl.subledger_reconciliation() が7つの科目(v14で融資の3科目を追加)について GL残高・明細合計・差額・MATCHED/MISMATCH を返す
  • 仮受金の振替は管理責任者だけが行え、同じ明細を2回振り替えることはできない(GL005)
  • DBテストでは、テスト用DBに限り1口座の残高キャッシュを7円ずらし、普通預金が MISMATCH(差額 −7)になり、日次締めが BLOCKED になることを確認している

異常時:GLと補助元帳に差異がある

段階内容
症状照合の普通預金が MISMATCH、日次締めが SUBLEDGERS_MATCHED で BLOCKED
調査v8 の残高再計算で、どの口座のキャッシュが仕訳と食い違うかを特定する
考えられる原因キャッシュの直接更新、記帳漏れ、状態だけ変わった支払
対応原因の口座を残高修復手続きで直す。GL側(仕訳)は正なので触らない
再発防止差異がある限り締めを止め、翌日以降の数字に混ざらないようにする

Level 4 アーキテクチャ:統制勘定という設計パターン

統制勘定(Control Account)と補助元帳を分けると、会計は少ない科目で全体を把握でき、業務は明細で個別に管理できます。2つの粒度を定期的に照合することが、別々のテーブルに分かれたデータの整合性を保証する最も確実な方法です。

どこを確認すればよいか

  • 管理画面「銀行会計・締め」→ GLと補助元帳の照合
  • 仮受金の一覧と振替

CHECK YOUR UNDERSTANDING

3問で理解チェック

答えを頭の中で考えてから、各項目を開いて確認してください。

Q1普通預金のGLと口座残高の合計が7円違ったら、締めはどうなりますか?
答え

SUBLEDGERS_MATCHED で BLOCKED になります。

Q2仮受金の振替を2回できますか?
答え

できません(GL005)。

Q3差異があるとき、仕訳を直しますか?
答え

仕訳は正なので、原因の明細(キャッシュ等)側を調べて直します。

ここまで読めましたか?

完全に暗記する必要はありません。大切な考え方を説明できそうなら押してください。

SOURCE TRAIL

根拠と関連教材

CURRENT IMPLEMENTATIONは確認したrepository内の実装です。HISTORICAL IMPLEMENTATIONは導入・修正の履歴で、後続migrationによる再定義があり得ます。RELATED LESSONは教材への案内で、実装の一次Sourceではありません。ASSUMPTIONは仮定、UNKNOWNは未確認を表します。

確認基点: d02eae8914f39cbf06bfe422dc39c71886f82b3e / 2026-09-11。稼働環境への適用確認: UNKNOWN。パス実在の自動検査と、記述した技術的事実の確認は別です。

Implementation Status: IMPLEMENTED IN MINIBANK(この教材が扱うコードの範囲)

  • RELATED LESSON/docs/be-payment-exceptions未決済送金の照合(v9)
  • RELATED LESSON/docs/accounting-assurance会計保証と証拠の設計
  • CURRENT IMPLEMENTATIONsupabase/migrations/20260930100000_v14_lending.sqlgl.subledger_reconciliationGLと補助元帳の照合(v10の4科目に、v14で融資の2科目を追加)
  • HISTORICAL IMPLEMENTATIONsupabase/migrations/20260924120000_v10_bank_accounting.sqlv10で導入した4つの補助元帳の照合(現在の定義は v14 が引き継ぎ)
  • CURRENT IMPLEMENTATIONsupabase/migrations/20260924120000_v10_bank_accounting.sqlgl.suspense_receipt仮受金の計上
  • CURRENT IMPLEMENTATIONscripts/banking/v10-accounting.test.mjsBS/PL、補助元帳差異の検出、仮受金、締めのDBテスト