Repayment Waterfall Allocation

Idempotent posting, ordered buckets, partial and overpayment handling, status update

Repayment Waterfall Allocation Idempotent posting, ordered buckets, partial and overpayment handling, status update 01 / Payment Intake 02 / Allocation Engine 03 / Ledger 04 / Delinquency Status EX / Partial + Overpayment Intake Waterfall Post + status Allocation buckets Shortfall + surplus Payment In · amount + date · Payment Intake › Intake Payment In amount + date Post Once · payment key · Payment Intake › Intake · exactly once Post Once payment key exactly once Fees · bucket 1 · penalty · Allocation Engine › Allocation buckets › Waterfall Fees bucket 1 · penalty Interest · bucket 2 · accrued · Allocation Engine › Allocation buckets › Waterfall Interest bucket 2 · accrued Principal · bucket 3 · Allocation Engine › Allocation buckets › Post + status Principal bucket 3 Post Entries · update balance · Ledger › Post + status Post Entries update balance Status · current / past due · Delinquency Status › Post + status · drives accrual Status current / past due drives accrual Partial Pay · funds short · Partial + Overpayment › Shortfall + surplus › Waterfall · oldest due first Partial Pay funds short oldest due first Overpayment · advance / suspense · Partial + Overpayment › Shortfall + surplus › Post + status Overpayment advance / suspense funds short past due surplus advance Legend User UI Agent logic Policy Tool action Context / trace

Ordered + Deterministic

  • • Buckets clear in a fixed configurable order
  • • Same inputs always produce the same split
  • • Order can vary by product and regulation

Edge Cases Are First Class

  • • A short payment stops mid-waterfall and stays past due
  • • Oldest past-due period is settled first
  • • Surplus goes to advance or suspense, never lost

Posting Is Auditable

  • • A payment key makes posting exactly once
  • • Every allocation writes an immutable ledger entry
  • • Allocation outcome drives status and interest accrual