A logistics business with fifty-plus client accounts, payment adherence in the seventies, and a finance executive chasing from memory. A reminder ladder, a tracker and two kinds of flexibility took adherence to 95% and receivables down 20%.
Shine Logistics moved freight for fifty-odd business clients on credit terms. Invoices went out promptly — this was not a billing problem. Payments came back on the client's schedule, not the contract's, and the only chase mechanism was a finance executive's memory and a spreadsheet she updated when she could. The founders' question: why does everyone owe us, and what would it take to be paid when we agreed?
An invoicing register (invoice date, amount, agreed terms), a bank statement that had to be matched to it by hand, and a client list with no memory of its own — no record of who had been reminded, when, or by whom. Three sources; zero joins.
-- the table that did not exist: one row per invoice, with its promise and its reality SELECT i.invoice_no, i.client, i.amount, i.invoice_date, i.invoice_date + i.terms_days AS due_date, p.paid_date, p.paid_date - (i.invoice_date + i.terms_days) AS days_late, -- negative = early r.last_reminder, r.reminder_step FROM invoices i LEFT JOIN payments p ON p.invoice_no = i.invoice_no LEFT JOIN reminders r ON r.invoice_no = i.invoice_no;
Placed on one axis, the accounts told on themselves. Lateness was not random — it was habitual. The same dozen accounts paid 30–90 days late every single month, and had been doing so long enough that nobody remembered it being otherwise. They were not struggling; they had simply learned that Shine did not chase. A handful of genuinely stretched clients sat among them, indistinguishable until someone looked.
| WHAT WAS FOUND | SHARE OF LATE VALUE | THE FIX | VERDICT |
|---|---|---|---|
| Habitual late payers, never chased | ≈ 55% | A reminder ladder that runs itself | Seal first. Nothing to negotiate; they had never been asked. |
| Invoices nobody could find | ≈ 20% | Statements with every open invoice attached, on a schedule | Seal with the ladder. Half the "we never got it" replies were true. |
| Genuinely stretched clients | ≈ 15% | Part-payments and a shorter cycle, agreed in writing | Seal second — flexibility that keeps the relationship. |
| Disputed amounts | ≈ 10% | Reconciliation before the reminder, not after | Fix the statement, then chase. |
Every invoice now climbed the same six rungs unless it was paid. Each rung had a day, an owner, a channel and a tone that was written down once and never improvised again. Click a rung.
Two kinds of flexibility travelled with the ladder. For clients who were genuinely stretched, part-payments against an agreed schedule — half now, half in fifteen days beat all of it in ninety. For clients who wanted to pay but kept losing invoices, a shorter cycle: fortnightly statements with every open invoice attached, so the question "which one?" stopped being an excuse.
# the tracker: who is on which rung today (the daily job, simplified) inv["days_late"] = (today - inv["due_date"]).dt.days inv["rung"] = pd.cut(inv["days_late"], [-99, -4, 0, 6, 14, 29, 999], labels=["quiet", "courtesy", "nudge", "call", "statement", "escalate"]) due_today = inv[(inv.paid_date.isna()) & (inv.rung != inv.last_rung_sent)] for _, row in due_today.iterrows(): send(TEMPLATES[row.rung], to=row.client_contact, attach=statement_for(row.client)) log_reminder(row.invoice_no, row.rung, today) # the memory the business never had
The watch had a second audience. The rebuilt tracker became the client reporting itself — every account got a clean statement on a schedule instead of a call when things went wrong — and client satisfaction scores rose 30% over the same period. Being chased politely and predictably turned out to be something clients preferred to being chased badly and late.
| BEFORE | AFTER (MONTH 8) | |
|---|---|---|
| Payment adherence | ≈ 71% | 95% |
| Receivables outstanding | Index 100 | 80 — down 20% |
| Accounts paying 60+ days late | Six, every month | None on a standing basis |
| Who has been reminded | Whoever she remembered | A log, per invoice, per rung |
| Client satisfaction score | Baseline | +30% |
Late payment is mostly a habit you allowed. Fifty accounts, and the money was not stuck in disputes or in hardship — it was stuck in the absence of a cadence. Write the ladder down once, let a job climb it every morning, offer real flexibility to the few who need it, and the number that "everyone" said was just how the industry works moves twenty-four points in eight months.
Have a ledger where everyone pays late and nobody knows why? This is what The Seal does — one chasing process, written down once, run every morning, with a check that tells you when it's not. It starts with a two-week TRACE.
Start with a TRACE → Read case 01 →