The Hold Stops the Invoice, Not the Work
A credit limit stops the next invoice going out to a client who has stopped paying. It does not stop your team logging another two hundred hours to them. One of those two is a software control; the other is a conversation nobody wants to have.
The worst receivable a professional firm carries is not the one that goes bad. It is the one that goes bad slowly while the team keeps working, because the effort is real, the cost is real, and by the time somebody adds it up the exposure is twice the invoice everyone was worried about. A firm chasing a two-million-shilling debt has one problem. A firm chasing a two-million-shilling debt while three people bill fifty hours a month into the same client has a different, larger, entirely self-inflicted one.
There is a real control for the first half of this and none at all for the second half, and the gap between them is worth understanding precisely — because the control that exists is good enough to create false confidence.
What the [credit limit](/glossary/credit-limit) actually does
Set a credit limit on a client and every new invoice for them is checked against their total exposure before it can proceed. Exposure is not just the invoice in front of you — it is the client's balance plus the balance still due on every open invoice they hold. If adding the new invoice would push that past the limit, the invoice is created with a status of credit hold rather than draft.
What makes this useful rather than decorative is what gets stored on the invoice at that moment:
- The credit limit as it stood — not looked up later, snapshotted then.
- Exposure before the invoice and exposure after it.
- The amount it went over by.
- A reason naming the excess.
Because those are snapshots rather than live lookups, raising the client's limit next month does not quietly rewrite the record of why an invoice was held in March. The held invoice keeps its own account of the decision — the same discipline that makes a rate a fact about a date rather than a fact about a customer.
The hold has teeth. A held invoice cannot be approved and cannot be fulfilled — both paths refuse it with a message telling you to override first. It is not a badge on a screen that everyone learns to ignore.
The override is the good part
You can override a hold, and this is correct — a partner sometimes has information the credit limit does not. But the override demands a written reason, and it records who overrode it and when alongside that reason, then returns the invoice to draft for normal approval. A control you cannot bypass gets disabled within a month; a control you can bypass on the record is one people actually keep.
Two limits on the mechanism, both worth knowing. It only engages where a limit is actually set — a client with no credit limit is never held, so an unmaintained customer list means an inactive control. And overriding a hold uses the same permission as editing an invoice, so whoever can amend an invoice can release a hold. If you want those to be different people, that is a workflow rule you build, not a setting you switch on.
What it does not touch
Nothing in the credit control reaches the timesheet. There is no check on the client's status when an hour is logged, no warning, no flag on the engagement, no reduced permission. A client can be on hold for four months while the team logs billable time into their matters every week, and the only thing that changes is that the resulting hours have nowhere to go.
This is the honest shape of it: the credit limit governs billing, not delivery. And that is not unreasonable as a design — software should not be silently refusing to record work that genuinely happened, and an hour logged to a delinquent client is still a fact about how the firm spent its week. But it means the number that actually matters to a partner — total exposure including unbilled effort — is not a number the system computes, because unbilled time is not carried as a balance anywhere.
Your receivables report shows what you invoiced and they have not paid. It does not show what you delivered and have not yet invoiced, to the same people, since the hold went on.
The number nobody is looking at
Take a mid-sized consultancy with one client that stops paying in week seven. The invoicing control does its job perfectly. The exposure that grows afterwards is invisible to it.
One client, twelve weeks, one hold
The receivables ledger says 2,140,000 and it is correct. The credit limit says the client is 140,000 over and it is correct. Both are answering the question "what have we billed and not been paid?" — and the question the firm needed answered in week eight was "what are we still spending on someone who has stopped paying?" Nothing on the screen was wrong. The number simply was not there.
Note the two figures on the last rows: the billable value is what you hope to recover, the delivery cost is what has already left the firm as salaries. The second is the one that is genuinely gone. Five weeks of an unpaid client cost this firm two hundred thousand shillings of real payroll before anybody raised it in a partners' meeting.
The decision the software will not make for you
Because the stop-work decision cannot be automated here, it has to be a standing rule with a trigger, agreed before you need it. Three defensible positions, and the wrong answer is not having one.
If the client is strategic and the delay is procedural
Keep working, cap the exposure
Set an explicit ceiling on unbilled hours — not on invoices, on hours — and review weekly. This is the common case with government and large-corporate clients where payment is slow rather than doubtful, and it is a legitimate commercial choice as long as somebody owns the ceiling.
If the client has gone quiet on a held invoice
Stop at the current deliverable
Finish what is in progress so nothing is half-done and unbillable, then stop. Half-finished work is the worst possible position — you have spent the cost and have neither a deliverable to invoice nor a clean file to hand over.
If the hold has been overridden more than once
Treat the pattern as the signal
Two overrides on the same client is the system telling you something in writing. Read the reasons that were recorded — they are on the invoices — and decide as a firm rather than invoice by invoice, which is how a limit gets overridden into meaninglessness.
The weekly review that closes the gap
- Every client with a held or overridden invoice in the last quarter, listed by name.
- For each, hours logged since the hold — the number the credit control cannot see.
- That figure valued twice: at the bill rate, for what is at risk, and at the cost rate, for what has already gone.
- Any client with no credit limit set at all, because for them the control has never run.
- Every override reason recorded since the last review, read aloud rather than filed.
The first three of those are now one screen. Credit Hold Exposure, under Reports, lists every client with an invoice on hold or released by override, the hours logged to each of them since, and those hours valued twice — at the bill rate for what is at risk, at the cost rate for what has already gone out. The window per client opens at its earliest held invoice, so the figure answers "since this went wrong", not "this month". The last two on the list are still yours to run: clients with no limit set at all, and the override reasons since the last review. Both are readable from data already captured; neither is a screen.
What AWRA OpsHub does today
- A credit limit per client, checked at invoice creation and at invoice update.
- Exposure computed across the client's balance and every open invoice, not just the document in front of you.
- A credit hold status that genuinely blocks approval and blocks fulfilment, with an explicit refusal message on each path.
- Limit, exposure before, exposure after, amount over and reason all snapshotted onto the invoice, so later changes to the limit do not rewrite the history of a hold.
- An override requiring a written reason, recording who overrode it and when, and returning the invoice to draft rather than straight to approved.
- The same control on the API, not only in the interface.
- Receivables ageing, statements and overdue reminders behind the whole thing.
- A credit hold exposure report listing every client with a held or overridden invoice, the hours logged to each since that hold, and those hours valued at both the bill rate and the cost rate.
What it does not do
- Nothing connects credit status to time logging. Hours can be logged against a client on hold with no warning, no flag and no restriction. The exposure report tells you afterwards; it does not stop anybody.
- Unbilled time is still not carried as a balance. The exposure report computes it on demand for clients with a hold, so the number is now readable — but no ledger holds work in progress, so it does not appear on the client record, in ageing, or in the accounts.
- No credit hold on the client, only on invoices. There is no "this customer is stopped" state that new documents inherit.
- No effect on quotations or new engagements — you can quote and start work for a client whose invoices are all on hold.
- Overriding a hold is the same permission as editing an invoice, so there is no separation between amending and releasing.
- No dunning ladder. The overdue reminder is one template on a cadence, not a sequence that escalates in tone or routes to a partner.
- No record on the invoice of when a reminder was last sent, so "have we chased this?" is not answerable from the document.
- No promise-to-pay or follow-up date, so a commitment a client made on a call lives in somebody's notes.
- No write-off or realisation tracking against billed value.
The first two used to be one gap — the system knew what you had billed and could not tell you what you had spent. Half of that is now answered: the exposure report will tell you, per client, what has gone out since the hold. What it will not do is intervene. Nothing refuses the hour, nothing warns the person logging it, and the figure lives in a report you have to open rather than on the client record. So the control is still a reporting control, and a firm that reads "credit limits" as "we are protected" has drawn the wrong conclusion.
Our take
Put the credit limits in, because the invoicing control is real and the override record is genuinely valuable evidence six months later. Then put the exposure report on somebody's Monday, because a number nobody opens is the same as a number nobody has. What is still a management routine rather than a feature is the decision the report provokes — stop, cap, or carry on — and no software is going to make that one for you.
Find the number this week
Open Credit Hold Exposure under Reports and read the top row: the client you are working hardest for while they are not paying, the hours logged since their hold, and what those hours cost. If your firm has never seen that figure, it is usually larger than the invoice everyone was already worried about.
See invoicing and receivables