← All projects
Professional services

Finding the clients who have not paid, and chasing them

Chasing money is the job everyone in a small business agrees is important and nobody does on time. It is uncomfortable, it is easy to postpone, and the longer it is postponed the more uncomfortable it gets. The work is not hard. The work is remembering, and being willing.

Part of the practice management platform above, not a separate system.

Sector
Professional services
Built
From scratch, ongoing
Status
Running
Scope
Design, build, maintenance

What it does

Overdue invoices used to surface when someone had a quiet afternoon. This tracks who owes what, drafts the chase on a schedule, escalates when it is ignored, and stops once a payment is seen. Like everything else the platform sends, a person presses send.

It knows who owes what

The debt list is read from the accounting system on a schedule rather than maintained by hand, so it reflects the last sync rather than whenever somebody last updated a spreadsheet.

  • Invoices and payments read from the accounting platform on a schedule
  • Aged debt visible without anyone building a report
  • Part payments and credits handled, not treated as unpaid

Chasing that escalates

The same polite email four times is not a sequence. The tone and the channel change as the debt ages.

  • A sequence that changes tone and channel as the debt ages
  • Escalation rules so the oldest and largest debts get attention first
  • Thresholds below which it is not worth anyone’s time, and it says so

It stops when it should

The fastest way to lose a client is to chase them for money they already paid.

  • A payment ends the sequence once it is seen, without anyone cancelling it
  • A reply from the client pauses it for a person to read
  • Clients in dispute or on a payment plan are excluded deliberately

A record that stands up

If a debt ends up somewhere formal, what matters is being able to show what you sent and when.

  • Every message kept against the client and the invoice
  • Dates and content recoverable without searching an inbox
  • Exportable if it ever needs to go further

What it connects to

Most of the value in a system like this comes from the systems it talks to, and most of the risk does too. Each connection is scoped to the access it needs for the job.

Finance

  • Accounting platformInvoices, payments and credit notes read on a schedule
  • Payment providerSettlement reconciled against the invoice

Communication

  • EmailThe chase sequence, with replies tracked back
  • SMS and messagingUsed later in the sequence, when email has stopped working

How it fits together

The path a piece of work takes through the system, start to finish.

The ledger is read, not typed

Invoices, payments and credits come from the accounting system on a schedule. Nobody maintains a separate list, so there is no separate list to be wrong.

Debt is aged and ranked

Each unpaid invoice is aged and weighted, so attention goes to the oldest and largest rather than to whoever happens to be top of an alphabetical list.

The sequence is drafted, and a person sends it

The first contact is a reminder rather than a chase, and the tone and channel change as the debt ages. Each message is drafted into the same review queue the rest of the platform uses, so nothing reaches a client without someone reading it.

Replies and payments interrupt it

A payment ends the sequence at the next sync. A reply pauses it and puts the thread in front of a person, because an automated follow-up to a client explaining their situation is worse than no follow-up. A payment landing between two syncs can still see one more chase go out.

Everything is written down

Each message is kept against the client and the invoice, so the history is recoverable without anyone searching a mailbox.

The hard parts

The problems that decided how this was built. They are the reason it works the way it does rather than the obvious way.

Automating a conversation that can damage the relationship

The problem

Payment chasing is the one automation where being slightly wrong is expensive. Chasing a client who paid last week, or sending a firm reminder to someone who has just explained a bereavement, costs more than the invoice.

What we did

The system is built to stop rather than to draft. A payment ends the sequence without anyone intervening, a reply pauses it, and clients in dispute or on a plan are excluded by configuration rather than by someone remembering. Every edge case goes quiet and waits for a person, and a person sends every message regardless.

The result

Chasing that gets drafted on time, without the failure mode that makes people turn chasing off.

Built with

Custom applicationAccounting APIScheduled jobsEmail and SMS

We don’t publish screenshots, logos or client names for this work. Much of it runs inside a business and handles sensitive data, so we describe what was built rather than who it was built for. We’re happy to walk through the detail on a call.

Ask a question

Tell us what your version of this needs to do and we’ll come back within one business day with scope, approach and a price.

What is your question about? (required)

Need something like this?

Every build on this page started as a workflow that off-the-shelf software nearly handled. Tell us where the gap is and we’ll scope what it takes to close it.