Chase overdue invoices
Most small businesses are owed money they will eventually collect and are not collecting now, because chasing is uncomfortable and nobody owns it. The fix is not a harder email. It is a consistent, unemotional ladder that runs on time without anyone deciding to start it.
Before drafting anything
Check the invoice is actually owed and actually overdue. The single fastest way to destroy a customer relationship is to chase a paid invoice. Every step below assumes you have verified:
- The invoice status is authorised and unpaid, not draft and not voided
- No payment has been applied that has not been allocated
- No credit note or customer credit is sitting unallocated against it
- The due date has genuinely passed, on the terms that apply to that customer
Unallocated payments and credits are the usual cause of a phantom debt. Check them before every chase, not once at the start of a batch.
Check whether this customer is disputing something. An unpaid invoice with an open complaint behind it is not a collections problem, and treating it as one makes it worse. Look for recent notes, an unresolved job, a credit request.
Get the real ageing
Use the accounting system’s aged receivables report, not your own arithmetic over invoice dates. Ageing computed by hand ignores credits, part payments and prepayments, and is wrong often enough to be dangerous.
- Xero: pull invoices with the
ACCRECtype and cross check against credit notes and payments - QuickBooks:
quickbooks_get_aged_receivables
See references/pulling-the-data.md.
The ladder
Five steps, each with a defined trigger and a defined tone. The full wording is in assets/templates.md and the reasoning in references/the-ladder.md.
| When | Step | Tone |
|---|---|---|
| 3 days before due | Courtesy reminder | Helpful. Not a chase |
| Day 1 overdue | First reminder | Neutral, assume oversight |
| Day 7 | Second reminder | Direct, name the amount and the date |
| Day 14 | Phone call, then written summary | Personal. This is the step that actually works |
| Day 30 | Final notice, then a decision | Formal, states consequences |
Two things about this ladder matter more than the wording:
It runs on schedule, not on feeling. The reason receivables blow out is that step 2 gets skipped for a good customer, and then step 3 feels too aggressive, so nothing happens for two months.
Step 4 is a phone call. Emails are easy to ignore because ignoring them costs nothing. Most genuinely overdue invoices are resolved by one short call, and if there is a real problem, this is where you find out about it. Do not replace it with a third email.
Segment before you send
Not every debtor gets the same treatment.
| Situation | Treatment |
|---|---|
| Good customer, first time late | Start at step 1. Assume oversight, because it usually is |
| Repeatedly late, always pays | The ladder as written, on time, every time |
| Large balance, long overdue | Skip to a phone call. Do not send a template |
| Disputed | Not a collections matter. Resolve the dispute |
| Gone quiet, unreachable | Move faster. Silence is the strongest predictor of non payment |
| New customer, first invoice | Move faster. First invoice behaviour predicts everything after it |
Writing the chase
- Name the amount, the invoice number and the due date in the first sentence. Everything else is optional
- Attach or link the invoice. The most common honest reason for non payment is that it was never received or is lost
- Make paying easy. Payment details in the message. A link if the system offers one
- One ask. “Can you confirm when this will be paid” is answerable. “Please advise regarding the outstanding matter” is not
- No guilt, no threats, no exclamation marks. You want to be paid, not to be right
- Never apologise for asking. “Sorry to bother you” invites being deprioritised
What not to do
- Do not send anything automatically without a human seeing the list first. One phantom debt sent to a good customer costs more than a week of collections
- Do not threaten anything you will not do. A final notice that mentions debt collection when nobody will ever call a collector teaches the customer the ladder is theatre
- Do not chase in public. Never in a shared channel, a review reply, or anywhere another customer can see
- Do not apply payments or write off balances yourself. Both are decisions with accounting consequences. Propose, do not execute
The output
A chase run produces two things: messages to send, and a short summary of what the receivables ledger actually says. The summary is the part the owner needs:
- Total overdue, and how that compares to last month
- The three largest overdue balances by name
- Anything over 60 days, listed individually
- Anything that looks like it will not be collected, said plainly
- Which customers are repeatedly late, because that is a pricing and terms question, not a collections one
Reference files
Everything the skill tells your AI to read, exactly as it ships in the zip.
references/pulling-the-data.md 3.5 KB
# Pulling the receivables data
## Xero
```
xero_list_invoices type ACCREC, status AUTHORISED
xero_list_payments payments applied
xero_list_credit_notes credits, allocated and not
xero_get_contacts terms and contact details
```
Xero has no single aged receivables tool in the connector, so the ageing is assembled:
1. Pull authorised `ACCREC` invoices. `AmountDue` is the real outstanding figure per invoice, already net of payments applied
2. Pull credit notes and check for any with a remaining balance not allocated to an invoice
3. Age by `DueDate`, not `Date`. The due date is what determines overdue, and terms vary by contact
**Use `AmountDue`, never `Total`.** An invoice part paid to $200 remaining shows a `Total` of $5,000 and is not a $5,000 problem.
`xero_get_contacts` carries payment terms per contact. A customer on 45 day terms is not overdue at day 40, whatever the default is.
## QuickBooks
```
quickbooks_get_aged_receivables the authoritative ageing
quickbooks_list_invoices
quickbooks_list_credit_memos
quickbooks_list_payments
quickbooks_get_customer_balance
quickbooks_list_customers terms and contact details
```
`quickbooks_get_aged_receivables` is already correct for credits and part payments. Use it rather than rebuilding the ageing.
Use `quickbooks_list_invoices` only to get the detail behind a line: invoice number, description, due date, the specifics you need for the message.
**Watch for unapplied payments.** A payment received and not applied to an invoice leaves the invoice looking unpaid and the customer looking delinquent when they are not. `quickbooks_get_customer_balance` against the sum of their open invoices will disagree when this has happened, which is how you detect it.
## The verification pass
Before a single message is drafted, for each candidate invoice:
| Check | Why |
|---|---|
| Status is authorised or sent, not draft or void | A draft was never sent to anyone |
| Outstanding amount is above zero | Not already paid |
| Due date has passed on that customer's terms | Not everyone is on 14 days |
| No unallocated credit for that customer | The debt may be smaller or nil |
| No unapplied payment for that customer | It may already be paid |
| Not part of an open dispute | Different process entirely |
An invoice that fails any of these comes out of the chase list and goes into an exceptions list, which is itself useful: unallocated credits and unapplied payments are a bookkeeping problem worth surfacing.
## Sending
Both systems can send an invoice or a reminder themselves, which is usually better than a separate email because the customer gets a payment link and the send is recorded against the invoice.
```
quickbooks_send_invoice
```
Xero has invoice reminders as a setting rather than a per invoice action, so a Xero chase is normally a message you send, with the invoice attached or linked.
Where the customer runs a CRM with messaging (LeadConnector, for example), sending through it keeps the conversation in one thread and gives the team visibility. Use whichever channel the customer already uses with that customer, not whichever is easiest to call.
## Rate and cost notes
- QuickBooks meters API reads. Pull the aged receivables report once and work from it, rather than querying per customer
- Xero rate limits per tenant. Pull the invoice list once and filter locally rather than one call per customer
- Neither system should be polled on a loop to see if payment arrived. Check when you next run the ladder
references/the-ladder.md 4.5 KB
# The ladder, and why each step is shaped as it is
## Step 0, three days before due
**Trigger:** due date minus three days. **Channel:** email. **Tone:** helpful.
This is not a chase and must not read as one. It is a courtesy note that an invoice is coming up, and it exists because a large share of late payment is a customer's internal approval process, not unwillingness. Three days is enough to get something into a payment run; on the due date it is not.
Businesses that add this one step usually see the biggest single improvement, and it costs no goodwill because nobody has done anything wrong yet.
Skip it for customers who pay by direct debit or card on file.
## Step 1, day 1 overdue
**Trigger:** one day past due. **Channel:** email. **Tone:** neutral, assume oversight.
Short. Invoice number, amount, due date, a copy of the invoice, payment details. No implication of fault, because at day one there usually is none.
Sending on day one rather than day seven matters more than what it says. It establishes that this business notices, which quietly moves you up the customer's payment queue for every invoice after this one.
## Step 2, day 7
**Trigger:** seven days past due. **Channel:** email, and reply into the same thread. **Tone:** direct.
Now name the facts: the invoice is a week overdue, the amount is X, and you would like to know when it will be paid. Ask a question that requires an answer.
Reply into the existing thread rather than starting a new one. The history is the point.
## Step 3, day 14
**Trigger:** fourteen days past due. **Channel:** telephone, followed by a written summary. **Tone:** personal, curious.
**This is the step that works, and it is the step people skip.**
The call is short and its purpose is to find out what is actually happening. Is there a problem with the work. Did the invoice reach the right person. Is there a purchase order number missing. Is the business in trouble. You cannot learn any of that from an email, and each of those has a different resolution.
Follow with a written note of what was agreed, same day. Not as a threat, as a record: "Thanks for your time. Confirming payment of $X by the 30th as discussed."
If the phone is not answered, leave one message and send the written note anyway.
## Step 4, day 30
**Trigger:** thirty days past due, or a broken promise from step 3. **Channel:** email, formal, plus post for large balances. **Tone:** formal and final.
States the position: the amount, how long it has been outstanding, what was previously agreed, and what happens next. It sets a specific date, not "shortly".
**Only state consequences you will actually carry out.** Options that are real for most small businesses:
- Work stops until the account is settled
- The account moves to prepayment only
- Interest applies, if the terms allow it and you will actually charge it
- The debt is referred for collection
A final notice that threatens a debt collector nobody will ever engage is worse than no final notice, because it teaches the customer that the whole ladder is theatre.
## After step 4
This is a decision, not a step, and it belongs to the owner:
- **Escalate.** Collections, or legal. Costs money, works sometimes, ends the relationship
- **Negotiate.** A payment plan. Frequently the best outcome for a customer with a real cash problem, and it needs to be written down
- **Write it off.** Sometimes correct. Recognises reality, cleans the ledger, and stops the fiction that receivables are collectible
Present the three with the numbers, and let them choose. Do not execute any of them.
## Timing details that matter
- **Send in the morning, midweek.** Tuesday to Thursday. Friday afternoon gets ignored until Monday and then it is stale
- **Never chase during a known outage or crisis** affecting that customer. Wait a week
- **Vary the ladder for the balance size.** A $200 invoice does not warrant four steps and a phone call. A $50,000 invoice warrants a call at day 3
- **Stop the ladder the moment they pay or promise.** A reminder that arrives after payment is the cheapest possible way to look incompetent, and it happens constantly when the chase list is not refreshed before sending
## Measuring whether it works
Two numbers, monthly:
- **Days sales outstanding.** Total receivables divided by average daily sales. If the ladder is working this falls
- **Percentage of receivables over 60 days.** This is the one that predicts bad debt
Report both when they are asked for and when they move, not every time you send a reminder.
assets/templates.md 4.2 KB
# Message templates
Placeholders in square brackets. Replace all of them, and delete any line that does not apply. A template sent with a placeholder still in it undoes everything the ladder is for.
Adjust the wording to the business's own voice. These are deliberately plain, not friendly, because plain survives translation into any brand voice and friendly does not.
---
## Step 0, three days before due
**Subject:** Invoice [NUMBER] due [DATE]
Hi [NAME],
A quick note that invoice [NUMBER] for [AMOUNT] is due on [DATE].
I have attached a copy. If you need anything to get it processed, a purchase order number or a different email address for accounts, just let me know.
Thanks,
[SENDER]
---
## Step 1, day 1 overdue
**Subject:** Invoice [NUMBER] now due
Hi [NAME],
Invoice [NUMBER] for [AMOUNT] was due yesterday, [DUE DATE]. I have attached it again in case it did not reach you.
Payment details:
[BANK DETAILS or PAYMENT LINK]
If it is already on its way, please ignore this.
Thanks,
[SENDER]
---
## Step 2, day 7
**Subject:** Re: Invoice [NUMBER] now due
Hi [NAME],
Following up on invoice [NUMBER] for [AMOUNT], which was due on [DUE DATE] and is now a week overdue.
Could you let me know when it will be paid, or tell me if there is something holding it up.
[BANK DETAILS or PAYMENT LINK]
Thanks,
[SENDER]
---
## Step 3, day 14, phone call
Not a script, a structure. Keep it under two minutes.
1. "Hi [NAME], it is [SENDER] from [BUSINESS]. Do you have a minute."
2. "I am calling about invoice [NUMBER] for [AMOUNT]. It was due on [DUE DATE] and it is still showing as unpaid our end."
3. **Then stop talking.** The silence is where you learn what is actually going on
4. Listen for: a dispute, a lost invoice, a missing PO, an approval bottleneck, a cash problem
5. Agree a specific date. Not "soon", a date
6. "I will send you a short note confirming that."
If there is a genuine problem with the work, that is now the conversation. Stop chasing and deal with it.
---
## Step 3 follow up, same day
**Subject:** Invoice [NUMBER], as discussed
Hi [NAME],
Thanks for your time just now. Confirming what we agreed: payment of [AMOUNT] for invoice [NUMBER] by [AGREED DATE].
[BANK DETAILS or PAYMENT LINK]
Thanks,
[SENDER]
---
## Step 3 follow up, no answer
**Subject:** Invoice [NUMBER], [N] days overdue
Hi [NAME],
I tried to call today about invoice [NUMBER] for [AMOUNT], now [N] days overdue.
Could you either pay it or tell me when it will be paid. If there is a problem with the invoice or the work, I would rather know so we can sort it out.
[BANK DETAILS or PAYMENT LINK]
Thanks,
[SENDER]
---
## Step 4, day 30, final notice
**Subject:** Final notice, invoice [NUMBER], [AMOUNT] outstanding
[NAME],
Invoice [NUMBER] for [AMOUNT] was due on [DUE DATE] and is now [N] days overdue.
We have contacted you on [DATE], [DATE] and [DATE] without payment or a response. [Delete if untrue. Include only the contacts that actually happened.]
Unless payment is received by [SPECIFIC DATE], [CONSEQUENCE: work on your account will be paused / your account will move to prepayment / the balance will be referred for collection].
If there is a reason this has not been paid, contact me before [DATE] and we will work something out.
[BANK DETAILS or PAYMENT LINK]
[SENDER]
[BUSINESS]
---
## Payment plan confirmation
**Subject:** Payment plan for invoice [NUMBER]
Hi [NAME],
Confirming the arrangement for invoice [NUMBER], [TOTAL AMOUNT]:
- [AMOUNT] on [DATE]
- [AMOUNT] on [DATE]
- [AMOUNT] on [DATE]
[Work continues as normal while these are met. / Your account remains on prepayment until the balance is cleared.]
If a payment is going to be late, tell me before the date rather than after.
Thanks,
[SENDER]
---
## SMS variants
Only for customers you already message this way, and only where you have consent. Under 160 characters, and never as a first contact.
**Reminder:**
`[BUSINESS]: Invoice [NUMBER] for [AMOUNT] was due [DATE]. Pay here: [LINK]. Questions, call [PHONE].`
**After a missed promise:**
`[BUSINESS]: Following up on invoice [NUMBER], [AMOUNT], due [DATE]. Can you confirm a payment date. [PHONE]`
Marketing rules and per message charges apply to SMS in most systems. Check both before sending in volume.