銀行エンジニアリング 26:延滞・デフォルト分類・訂正
返済が遅れたとき、銀行は日付から延滞を判断し、長引けば人が確認して分類します。間違いは仕訳を消さず、専用の訂正で直します。学習用の内部分類で、実際の信用情報には連携しません。
v8以降に実装した台帳・記帳エンジンなどを実際に動かし、正常時と異常時の両方から銀行システムの構造を学ぶ。
Prerequisite: BANKING SYSTEMLEARNING GOALS
このページで学ぶこと
- 延滞とデフォルト候補の日付の境界
- デフォルトの確定と回復に別の人が必要な理由
- 融資の取消が専用の訂正だけである理由
PLAIN LANGUAGE
まず、ここだけつかむ
延滞は約定日の翌日から、デフォルト候補は未払いが30日以上です。日付から毎回計算します。
デフォルトの確定と回復は、提案と確認を別の管理責任者が行います。元本は消えません。
融資の取消は専用の訂正だけで、契約と仕訳を同時に戻します。元の仕訳は消えません。
DIFFICULT PARTS, STEP BY STEP
難しいポイントを、順番にほどく
専門用語を覚えることより、「なぜ必要か」「このシステムのどこで使うか」を理解することが目標です。
デフォルト分類
長く返済されない契約を、内部の分類として確定することです。
管理と対応を切り替える基準を、人の確認つきで決めるためです。
DEFAULT_CONFIRMED。学習用で、実際の信用情報には連携しない。
専用の訂正
業務の状態と仕訳を同時に戻す取消です。
仕訳だけ戻って契約が残る、という不整合を防ぐためです。
lending.reverse_repayment と lending.reverse_disbursement。汎用の取消は LN020。
補助元帳の照合
GLの残高を、契約の明細の合計と突き合わせることです。
契約と仕訳のずれを締めの前に見つけるためです。
gl.subledger_reconciliation(1300・1400)と lending.reconcile。
Level 1 基礎:遅れた日数で状態が変わる
延滞と候補は、約定日と営業日から毎回計算します(保存しません)。確定だけが記録として残ります。
| 状態 | 条件(約定日を起点) |
|---|---|
| CURRENT(期日どおり) | 未払いの回がない、または約定日まで |
| OVERDUE(延滞) | 約定日の翌日から |
| DEFAULT_CANDIDATE(デフォルト候補) | 未払いが約定日から30日以上 |
| DEFAULT_CONFIRMED(デフォルト確定) | 管理責任者が提案し、別の管理責任者が確認したとき |
Level 2 銀行業務:確定しても元本は消えない
- 確定すると、確定日までの利息を計上してから利息の発生を止める。元本も未収利息も消さない
- 返済は確定後も受け付ける。約定の回を払うと、延滞が解消していく
- 回復するには、延滞中の回がすべて解消していること。提案と確認は別の管理責任者で、回復日から利息が再開する(止まっていた期間の利息は請求しない)
- 貸倒償却・引当・法的な回収は扱わない(学習用の内部分類)
Level 3 システム:MiniBankでの実装
- lending.aging が日付から延滞状態を返す。lending.propose_classification が提案、lending.confirm_classification が確認(別人でなければ LN013)
- 根拠がなくなった提案は確認できない。たとえば、提案後に顧客が返済して候補でなくなれば LN023
- 誤った返済の訂正は lending.reverse_repayment、誤った実行の訂正は lending.reverse_disbursement。どちらも鏡像の仕訳を作り、契約・返済予定・残高を同じ transaction で戻す。元の仕訳は消えない
- 訂正できるのは、対象の返済を名指しして、その返済がまだ有効な返済のうち最新で、後続の返済・利息計上・分類がないときだけ(実質、同じ営業日の間。同じ返済を二度訂正するのも LN024)。返済のある契約の実行は訂正できない(LN024)
- 汎用の取消(posting.reverse_event)で融資の取引を直接取り消そうとすると LN020。契約だけが取り残される取消は作れない
異常時:貸付金の残高がGLと合わない
| 段階 | 内容 |
|---|---|
| 症状 | 運用センターに SUBLEDGER_MISMATCH(GL 1300)と LOAN_CONTRACT_MISMATCH が出る。GLの日次締めが BLOCKED になる |
| 調査 | 契約の詳細で、仕訳から再計算した残高と契約の残高を比べる |
| 原因の例 | 契約の写しが仕訳とずれた(手作業の修正、途中で止まった処理) |
| 対応 | 仕訳を直接直さず、専用の訂正で契約と仕訳を揃える。照合が一致してから締める |
Level 4 アーキテクチャ:状態と会計を同時に動かす
仕訳だけが変わって契約が残る、契約だけが変わって仕訳がない、という状態は、後から原因をたどれなくなります。MiniBankは融資の出来事を1つの command にまとめ、業務の状態・仕訳・監査を同じ transaction で確定します。取消が必要なときも、専用の訂正だけを許します。
どこを確認すればよいか
- 管理画面「融資・与信」:契約一覧の期日の状態、契約詳細の分類の履歴
- 運用センター:融資の延滞・デフォルト候補・分類の確認待ち
- 管理画面「銀行会計・締め」:補助元帳に融資の2科目が含まれること
CHECK YOUR UNDERSTANDING
3問で理解チェック
答えを頭の中で考えてから、各項目を開いて確認してください。
Q1延滞は何日目から、デフォルト候補は何日目からですか?
約定日の翌日から延滞、約定日から30日でデフォルト候補です。
Q2デフォルトを確定すると元本は消えますか?
消えません。利息の発生が止まり、返済は引き続き受け付けます。
Q3融資の取引を汎用の取消で直接取り消せますか?
できません。LN020 で拒否され、専用の訂正を使います。
完全に暗記する必要はありません。大切な考え方を説明できそうなら押してください。
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-lending-interest-repayment利息と返済
- RELATED LESSON/docs/be-reverse-correct取消と訂正(v8)
- CURRENT IMPLEMENTATION
supabase/migrations/20260930100000_v14_lending.sqllending.propose_classification / lending.confirm_classificationデフォルト分類の提案と、別の管理責任者による確認 - CURRENT IMPLEMENTATION
supabase/migrations/20260930100000_v14_lending.sqllending.reverse_repayment / lending.reverse_disbursement / lending.guard_generic_reversal専用の訂正と、汎用の取消の禁止 - CURRENT IMPLEMENTATION
supabase/migrations/20260930100000_v14_lending.sqllending.aging約定日と営業日から延滞・デフォルト候補を導く - CURRENT IMPLEMENTATION
scripts/banking/v14-lending.test.mjs審査・決裁・実行・利息・返済・延滞・分類・訂正・競合・権限のDBテスト