Last change source is the field on each tracked loan that records which write path most recently changed the loan's tracked balance. It's how Policy Stack can give you a precise message — rather than a generic error — when a per-loan repayment is rejected.
Values
- manual_create — the loan was created through the Add Loan flow
- baseline — the loan was created automatically as a baseline from a snapshot's loan balance during policy setup
- repayment — the balance was last adjusted by a per-loan or policy-level repayment
- snapshot_reconciliation — a historical marker from the previous snapshot proportional-adjustment flow; current production snapshot saves do not stamp new tracked loans with this value
- admin_script — the balance was changed by a one-off internal correction script
- unknown — pre-existing loans created before this field was added
Why It Matters to You
When a per-loan repayment contains more principal than the current tracked balance, the error message branches on this field. If the last change was snapshot_reconciliation, the message identifies the older state and points to reviewing the payment type or editing Current Balance on the loan detail page. See I Tried to Log a Repayment and Got an Error.
Internal Detail
The field is stored on the policy_loans table. Each write path updates it as part of its own update. You don't interact with this field directly; it's surfaced through the messages the app shows you.
Related terms: Snapshot Reconciliation, Policy-Level Repayment, Loan Balance