Getting paid
Chasing is a job nobody does on the day it is due.
It is done in a batch, weeks late, by somebody reading a spreadsheet — and the first three chases are identical, so the customer learns that the first three do not mean anything.
An escalation only works if it escalates.
The ladder
Three notices that are actually different, and a consequence at the end.
A reminder, then a firmer note, then a final notice — and the final notice places the account on credit hold, and says so in plain language rather than hinting at unspecified consequences.
An invoice first seen late gets the notice appropriate to how late it is, rather than starting at the beginning and walking politely up the ladder over the following month.
- A reminderDay 3Soft. Most invoices are paid here.
- A firmer noteDay 14Names the amount and the days outstanding.
- Final noticeDay 30And the account goes on credit hold — the email says so plainly.
- Each stage is sent once —
Guaranteed in the database, and defended again in the code — so re-running the sweep mid-day sends nothing twice.
- One open hold per customer —
Enforced by the database rather than by whichever code path got there first. Clearing it records who cleared it and why, and clearing it twice is refused.
- The hold records what caused it —
Which invoice, and which stage. So "why is this customer on hold" is answerable from the hold itself.
- A failed email never blocks the state —
The stage still advances and the hold is still placed. Chasing does not stop because a mail server did.
Aging
Computed from live invoices, every time you ask.
Current, then thirty-day bands out past ninety, per customer and in total, as of any date you choose. Not a nightly snapshot that is wrong by the time somebody opens it.
An invoice with nothing outstanding drops out. Customer names are fetched in one go rather than one per row — which sounds like an implementation detail until the report has four hundred customers in it.
›Can we change the chasing schedule?
Not today — the three stages and their timings are fixed, and the settings screen says so rather than showing you controls that do nothing. If your collections process depends on a different cadence, raise it early.
›Can we pause chasing for one customer?
Not per invoice or per customer today. The sweep runs across everything past due.
›Does it add interest or a late fee?
No. Nothing in this module adds money to a balance.
›Is there a statement of account?
No — there is no per-customer transaction statement to send. Aging by customer and the credit summary are what exist. That is a real gap and worth knowing before you promise a customer a statement.
›Does a credit hold stop anything automatically?
It records the position and tells the customer. Acting on it — refusing the next order — is a decision your team makes with the information in front of them.