銀行エンジニアリング 12:日次締めと月次締め(Daily / Monthly Close)
締めとは「この日の数字はこれで正しい」と確認して記録に残すことです。何を検査し、何があれば止め、何は警告にとどめるのかを学びます。
v8以降に実装した台帳・記帳エンジンなどを実際に動かし、正常時と異常時の両方から銀行システムの構造を学ぶ。
Prerequisite: BANKING SYSTEMLEARNING GOALS
このページで学ぶこと
- 日次締めの検査項目とブロック条件
- 警告(止めない)と阻止(止める)の違い
- 月次締めの位置づけとMiniBankの範囲
PLAIN LANGUAGE
まず、ここだけつかむ
日次締めは、数字が正しいことを検査して記録に残す区切りです。
数字が合わない検査は締めを止め、未解消の支払や仮受金は警告として残します。
締めは日付ごとに1回だけで、記録は後から変更できません。
DIFFICULT PARTS, STEP BY STEP
難しいポイントを、順番にほどく
専門用語を覚えることより、「なぜ必要か」「このシステムのどこで使うか」を理解することが目標です。
Blocking Check
失敗すると締めを止める検査です。
誤った数字を確定させないためです。
試算表・BS・補助元帳・勘定対応・Posting整合性。
Warning
記録するが締めは止めない注意事項です。
帳簿は正しいが対応が必要な事項を見逃さないためです。
結果不明の送金、未解消の仮受金。
Closing Snapshot
締めた時点の試算表などの保存です。
後から当時の数字を説明するためです。
gl.closing_runs(追記専用)。
Level 1 基礎:締めはなぜ必要か
毎日たくさんの取引が起きる銀行では、日ごとに「数字が合っている」ことを確かめて区切りを付けないと、ずれが見つかったときにいつ・どこで起きたかが分からなくなります。
Level 2 銀行業務:MiniBankの日次締めの検査
結果不明の送金や仮受金は、正しく未決済為替・仮受金に計上されていれば帳簿は正しいため、締めは止めずに警告として記録します。数字そのものが合わない場合だけ締めを止めます。
| 検査 | 区分 | 意味 |
|---|---|---|
| TRIAL_BALANCE_BALANCED | 阻止 | 試算表の借方=貸方 |
| BALANCE_SHEET_BALANCED | 阻止 | 資産=負債+純資産 |
| SUBLEDGERS_MATCHED | 阻止 | 7つの補助元帳とGLが一致(融資は契約ごとの仕訳再計算の一致も含む) |
| ALL_LEDGER_ACCOUNTS_MAPPED | 阻止 | すべての勘定が勘定科目に対応 |
| POSTING_INTEGRITY | 阻止 | v8のPosting整合性チェックが0件 |
| NO_UNRESOLVED_PAYMENTS | 警告 | 結果不明の他行送金が残っていない |
| NO_OPEN_SUSPENSE | 警告 | 未解消の仮受金が残っていない |
Level 3 システム:MiniBankでの実装
- gl.daily_close(日付) が検査を実行し、阻止検査がすべて通れば CLOSED、1つでも失敗すれば BLOCKED として gl.closing_runs に記録する
- CLOSED は日付ごとに1回だけ(GL001)。未来の日付は締められない(GL002)。BLOCKED の後は原因を直して再実行できる
- 締めの記録には、検査結果・その時点の試算表・BS・その日のPLが保存され、あとから変更できない
- gl.monthly_close(年月) は管理責任者だけが実行でき、月内に CLOSED の日が1日以上あることを求め(GL003)、月のPLとBSを保存する
異常時:締めの直前に未処理の取引が見つかった
| 段階 | 内容 |
|---|---|
| 症状 | 日次締めの警告に「結果不明の他行送金」が1件 |
| 調査 | 他行為替画面で RESULT_UNKNOWN の支払を開き、決済システムとの差異を確認する |
| 判断 | 帳簿上は未決済為替に計上されているため、締めは可能。ただし翌営業日までに照会で解消する |
| もし数字がずれていたら | 補助元帳照合で MISMATCH になり、締めは BLOCKED。原因を直すまで締められない |
| 再発防止 | 締め前チェックリストとして、警告の件数を運用画面で常に見えるようにする |
Level 4 アーキテクチャ:MiniBankの締めの範囲
MiniBankの会計の締め(gl.daily_close)は、v7の営業日管理(EOD/BOD)とは独立した「会計の検査と記録」です。締めた後に同じ日に記帳された取引は、その日の締め記録には含まれません(締めは実行時点までを対象にします)。
補助元帳の照合は実行時点の状態で行います。過去日付を締める場合も、照合は現在の状態に対して行われます。本番の銀行では記帳日付の締め切り(カットオフ)と翌営業日扱いを組み合わせますが、MiniBankではそこまでは実装していません。
どこを確認すればよいか
- 管理画面「銀行会計・締め」→ 締めの一覧(止めた検査・警告)
- 管理画面「日次処理・調査」(v7の営業日管理)
CHECK YOUR UNDERSTANDING
3問で理解チェック
答えを頭の中で考えてから、各項目を開いて確認してください。
Q1同じ日を2回締められますか?
CLOSEDは1回だけです(GL001)。
Q2未解消の仮受金があると締めは止まりますか?
止まりません。警告として記録されます。
Q3月次締めの前提は?
月内に締め済み(CLOSED)の日が1日以上あることです。
完全に暗記する必要はありません。大切な考え方を説明できそうなら押してください。
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-gl-subledger補助元帳の照合
- RELATED LESSON/docs/operational-readiness運用できる設計
- CURRENT IMPLEMENTATION
supabase/migrations/20260924120000_v10_bank_accounting.sqlgl.close_checks / gl.daily_close / gl.monthly_close日次締め・月次締め - CURRENT IMPLEMENTATION
scripts/banking/v10-accounting.test.mjsBS/PL、補助元帳差異の検出、仮受金、締めのDBテスト