Topic

Knowing Where a Payment Plan Stands

β€’ 7 min read
Article preview

When someone agrees to clear their arrears in instalments, that plan is in some condition at every moment: on track, behind, beyond saving, or finished. Most systems never write that condition down. They update a balance, tick an arrears box, and move on. The plan's condition ends up scattered across fields and code, which is why nobody can answer the question a complaint raises a year later: why was this marked as failed? This paper argues the plan should always sit in one clearly named condition, and that moving between those conditions should follow written rules with agreed thresholds rather than someone's interpretation on the day. It sets out six conditions a plan can be in, five conditions each instalment can be in, and exactly what has to be true for the plan to move from one to another. Two points do most of the work. A plan only returns to good standing when every instalment due so far is fully paid, so a large part payment does not quietly restore it. And a plan that has gone quiet because we have stopped receiving information is not the same as a plan that has stopped being paid, so the clock stops rather than running the customer into failure on silence. The paper deliberately never looks at the outstanding balance. Whether instalments have been satisfied comes in from elsewhere, which is what the second paper covers.

Technical payment plans arrears management auditability lifecycle modelling

The question this paper answers

An account is marked Failed. A complaint arrives eleven months later asking why. We open the system and find a balance field, a payment total, an arrears flag, and a scattering of timestamps. Somewhere in the servicing code there is a rule that set that flag, and somewhere else there is a rule that read it. Reconstructing the reasoning means reading the code and inferring what must have run, in what order, against data that has since been overwritten.

The arrangement had a condition at every point in its life. The system never represented it.

That is the specific defect this paper names: the operational state of a repayment arrangement existing only as an emergent property of procedural updates. It is not a data quality problem and it is not a logging problem. Adding an audit log to a procedural implementation records what the code did, which is not the same as recording what the arrangement was.

We argue that the arrangement should occupy an explicit named state at all times, that transitions between those states should be governed by rules with configured thresholds rather than interpreted conditions, and that this is achievable without any change to how payments are captured. The model in this paper is deliberately indifferent to where satisfaction information comes from. It consumes instalment allocation as an input. A companion paper, Computing Obligation Satisfaction from Balance Snapshots, defines how that allocation is derived when payment events are not observable.

What this system owns and what it does not

Inputs

Input Description Availability
Arrangement definition Instalment schedule: amount and due date per instalment. Failure threshold in days. Grace window in days At creation, immutable thereafter
Allocation update For instalment , the current value of , with the observation time that produced it Event driven. May be irregular
Allocation gap signal Assertion that no reliable allocation information has been received since a given time Where the allocation source can report its own staleness
Cancellation instruction Manual termination, including termination on renegotiation Ad hoc
Clock Current date for elapsed time evaluation Always available

Outputs

Output Description
Arrangement state Exactly one of six named states
Instalment states One state per instalment in the schedule
Transition history Ordered record of every state change, its triggering input, and the guard that admitted it
Diagnostic flags Named conditions requiring attention outside the state machine

Explicit non-inputs

  • Payment transactions. The machine never sees money move. It sees allocation values change.
  • Balance. The outstanding balance is not an input to any transition in this model. This is deliberate and is the main structural claim of the paper.
  • Customer contact history, affordability data, or any collections decisioning input.
  • Interest and fee calculations.

Non-goals

The machine does not derive allocation, does not decide what to do about a Failed arrangement, and does not price or restructure debt. It answers one question: given the allocation known so far and the elapsed time, what state is this arrangement in, and how did it get there?

Bounding assumptions

  • Allocation updates are monotonic in observation time. An update carrying an earlier observation time than the last accepted update is rejected.
  • A renegotiated agreement terminates this obligation and creates a new one. There is no in place renegotiation transition.
  • The instalment schedule is fixed at creation. Dynamic rescheduling is out of scope.

Representing the arrangement

We represent the arrangement as a system:

Where is the state space, the input events, the transition rules, and .

State changes occur only when a defined event arrives and its guard is satisfied. Nothing else changes state. That single constraint is what makes the history reconstructable, because a state that can only change through a recorded transition cannot change silently.

The arrangement state space

State Meaning
Created Established, first instalment not yet due, monitoring not started
Active Every instalment due to date is fully allocated
Broken At least one due instalment is under allocated, failure threshold not exceeded
Failed Failure threshold exceeded
Completed Every instalment in the schedule is fully allocated
Cancelled Terminated by instruction, including termination on renegotiation

Finite:

Mutually exclusive:

Collectively exhaustive:

Terminal:

No transition leaves a terminal state. An allocation update arriving against a terminal arrangement is recorded and flagged, not applied. An arrangement whose state can change after termination is not terminal, and every reachability argument below would fail.

The instalment state space

State Condition
Pending Due date in the future,
PartiallyPaid Due date in the future,
Due Due date reached, within grace window ,
Missed Due date plus elapsed,
Paid , regardless of date

Two points determine whether this set is genuinely MECE.

Advance allocation is possible, because an allocation source may satisfy instalments ahead of their due dates. PartiallyPaid is therefore scoped to future dated instalments only. A past due instalment carrying partial allocation is Due inside the grace window and Missed outside it. The partial value in survives both transitions and is never reset.

Missed is not terminal. This matters more than it appears. If Missed were forward terminal, an instalment could never reach Paid after being missed, the arrears clearance guard below could never be satisfied, and the Broken to Active transition would be formally unreachable. The recovery path that repayment arrangements exist to support would be absent from the model that claims to describe them.

Permitted progressions:

Any movement that decreases is a reversal. Reversals originate outside this machine and are covered in the companion paper. This machine accepts a decreased only when the allocation update is explicitly marked as a reversal, and re-evaluates the arrangement state accordingly.

The rules that move it

The two guards

Everything in the transition matrix rests on two conditions. Both are computed, not judged.

Let be the set of instalments whose due date has passed at time .

Arrears cleared means every instalment due to date is fully allocated. Completion means the whole schedule is. Note what does not reference: the outstanding balance. An earlier version of this model required balance zero for completion, which meant that interest applied after the final instalment left the arrangement permanently Active, with no unsatisfied instalment to generate an elapsed clock and no exit. The arrangement has done what it undertook to do when the schedule is satisfied. A residual balance is a separate obligation and belongs to a different instance of this machine.

The distinction between the two guards is also what makes partial recovery unambiguous. A partial payment against a Broken arrangement does not restore Active, however large, because is defined on full allocation of every due instalment. Two implementations reading this cannot diverge on the point.

The event set

Event Description
ArrangementCreated Obligation established, machine initialised at Created
FirstInstalmentDue Monitoring begins
AllocationUpdated One or more values have changed
MonitoringEvaluation Scheduled elapsed time evaluation
AllocationGapDeclared Allocation source reports it cannot currently supply reliable values
AllocationGapCleared Reliable allocation resumes
ArrangementCancelled Termination instruction

The transition matrix

Current Event Guard Next
Created FirstInstalmentDue none Active
Created ArrangementCancelled none Cancelled
Active AllocationUpdated Completed
Active AllocationUpdated , Active
Active AllocationUpdated Broken
Active MonitoringEvaluation , Broken
Active MonitoringEvaluation , Failed
Active MonitoringEvaluation Active
Broken AllocationUpdated Completed
Broken AllocationUpdated , Active
Broken AllocationUpdated Broken
Broken MonitoringEvaluation Failed
Broken MonitoringEvaluation Broken
Active, Broken AllocationGapDeclared none unchanged, monitoring suspended
Active, Broken AllocationGapCleared none unchanged, monitoring resumed
Active, Broken ArrangementCancelled none Cancelled

is measured from the due date of the oldest instalment that is not fully allocated. is set in the arrangement definition. It is configuration, not operator discretion, which is the whole basis of the determinism claim.

The Active to Failed row deserves comment because it is easy to omit. An arrangement can pass the failure threshold without ever being observed in Broken, if no monitoring evaluation ran during the intervening period. Without that row the arrangement has no defined transition and holds Active while being materially failed. Direct escalation is correct rather than a shortcut, because Broken is defined by the threshold not being exceeded, and an arrangement that has already exceeded it was never entitled to occupy it.

Idempotency

Repeated inputs must not compound. This holds naturally here because every guard is evaluated against absolute allocation values rather than increments. Applying the same allocation update twice yields the same and therefore the same state. An implementation that models allocation as a delta applied to a running total loses this property and must deduplicate upstream instead.

What must always hold

Single occupancy. The arrangement occupies exactly one arrangement state and each instalment occupies exactly one instalment state, at every point in time, including mid transition. Transitions are atomic across the arrangement and its instalments.

Allocation integrity. for every instalment. The machine rejects any allocation update violating this bound rather than clamping it, because a value outside the bound indicates an error in the allocation source that clamping would conceal.

Forward progression except under declared reversal. Instalment states advance through their permitted progressions. Backward movement occurs only when the allocation update is explicitly marked as a reversal, and every such movement appears in the transition history with its trigger.

Terminal immutability. For , no event produces a transition. Late inputs are recorded and flagged.

Monitoring suspension preserves state. During a declared allocation gap, no MonitoringEvaluation transition fires. The arrangement holds whatever state it had. This exists because elapsed time alone is not evidence of non payment when the allocation source has gone quiet, and failing an arrangement on the absence of evidence is the most damaging error this machine can make.

Where it is probed

These are adversarial cases. Each attacks a specific boundary.

Threshold crossed during an allocation gap. The gap suspends monitoring, then clears, and the oldest unallocated instalment is now well past . Rule: on AllocationGapCleared, allocation updates are processed before any monitoring evaluation runs. If the backlog satisfies the instalments, no failure occurs. If it does not, the next evaluation escalates on true elapsed time. Order of processing is fixed, not incidental, because reversing it fails arrangements that were in fact being paid.

Cancellation instruction arrives for an already Failed arrangement. Rule: no transition. Flag PostTerminalInstruction. Cancelling a failed arrangement is an operational wish, not a state change, and honouring it would make Failed non terminal.

Allocation update reduces without a reversal marker. Rule: reject the update, hold state, flag UnmarkedRegression. The allocation source must assert a reversal explicitly. Inferring one from a decreased value would let any upstream data error silently un-pay a customer.

Schedule fully allocated while an instalment is still Missed. Possible when a late allocation completes a missed instalment and the rest of the schedule simultaneously. Rule: is evaluated after all instalment states are recomputed, not during. The arrangement reaches Completed and the instalment reaches Paid in the same atomic transition.

Zero instalment schedule. An arrangement created with an empty or zero value schedule satisfies vacuously at creation. Rule: reject at creation. A schedule with no instalments is not an arrangement, and admitting it would let the machine emit Completed for an obligation nobody ever undertook.

Two allocation updates carrying the same observation time. Rule: process in receipt order and record both. Because guards read absolute values, the outcome is the later value regardless of order, and both appear in history.

The artefact

A six state arrangement machine with a five state instalment lifecycle, two computed guards, a fifteen row transition matrix, five invariants, and a fixed processing order for gap recovery.

When to use it

  • The lifecycle of a repayment arrangement must be auditable months or years after the fact.
  • More than one system or team must agree on whether an arrangement is broken.
  • Arrangement condition currently exists as flags and fields rather than as a named state.
  • Recovery from a broken arrangement is a real business path rather than a theoretical one.

When not to use it

  • The schedule changes dynamically in response to customer circumstances. Fixed schedules are assumed throughout, and dynamic rescheduling needs a versioning model above this one.
  • The obligation is not schedule bound. Revolving facilities have no instalment lifecycle.
  • Arrangement outcome is genuinely a matter of operator discretion in your organisation. This machine will describe your process incorrectly, and forcing it to fit will produce configuration that lies.

Constraints on use

  • Requires and as configuration in the arrangement definition. is easy to omit because it is only visible at the Due to Missed boundary, and omitting it makes that boundary interpreted rather than computed.
  • Requires an allocation source that can supply absolute values, mark reversals explicitly, and declare its own staleness. A source that cannot declare staleness leaves the suspension invariant unenforceable.
  • Requires atomic transitions across the arrangement and its instalments. Partial application breaks single occupancy.
  • Requires that terminal states are never revised, including by late corrections.

What this leaves open

The machine depends on an allocation source that can assert three things: absolute values, explicit reversals, and its own staleness. Not every servicing integration can do all three. Where staleness cannot be declared, the suspension invariant degrades to a time based heuristic, and the protection against failing an arrangement on missing evidence weakens correspondingly. We do not have a way to recover that guarantee from within this machine.

Termination on renegotiation preserves determinism but severs continuity. The new arrangement carries no structural link to the one it replaced, so a customer who renegotiates twice appears as three unrelated obligations. This is a real cost and we think the answer is an obligation versioning layer above the machine rather than a transition inside it, but we have not built that layer.