Most of the names on your aged receivables report already paid you. They are not debtors — they are unmatched receipts.
An aged receivables report does not show you who owes you money. It shows you which invoices Xero currently believes are unpaid, which is a subtly different claim — and in a file that has been running a few years without a tidy-up, the two have usually come apart. The long tail of small, old invoices at the bottom of that report is rarely a collections problem. It is almost always money that arrived, landed in the bank, got coded somewhere reasonable, and never got attached to the invoice it was paying.
Which means the report is not telling you to go chasing. It is telling you that your file has lost track of which payment belongs to which job.
Why the list fills up with work you were already paid for
An invoice stays open in Xero until a payment is allocated against it. Not until money arrives — until money is allocated. Everything below is a way for the first thing to happen without the second.
- The payment arrived netted or lumped. A payment processor settles Tuesday's four jobs as one deposit, minus its fee. Nothing in the bank matches any single invoice, so the deposit gets coded straight to income and all four invoices stay open forever.
- The bank line was coded rather than matched. Coding a receipt to a sales account and matching it to an invoice both make the bank reconcile and both look finished on screen. Only one of them closes the invoice.
- The customer paid a round number covering several invoices. Part-payments and combined payments need allocating across invoices deliberately. When that is skipped, an overpayment sits on the contact while the invoices it was meant to settle stay outstanding.
- The invoice exists twice. The job was invoiced from the job system and again by hand, the customer paid one, and the other has no payment to find because it never represented anything.
- A credit note was raised but never applied. The credit sits on the contact, the invoice sits on the report, and the two never meet.
None of that is carelessness. Every one of those is somebody making the bank reconcile at five o'clock on a Friday, correctly, with the information in front of them. The reconciliation is genuinely done. The allocation is the part that quietly did not happen.
This is not a debt-collection problem, and treating it as one costs you
The distinction matters because the two situations have opposite fixes. Real overdue debt needs a conversation, a payment plan, or eventually a write-off. An unmatched receipt needs none of those — the money is already in your account, and the only thing missing is the link.
Getting this the wrong way round has a real cost. Sending a statement to a customer who paid you eight months ago does not read as diligent, it reads as a business that does not know what it has been paid, and it is the kind of thing people remember at renewal. Meanwhile the invoices that genuinely are overdue are buried somewhere in a list of four hundred, which is exactly why nobody works the list.
What it breaks while it sits there
The report being wrong is the visible part. The consequences run further than that.
If you report GST on an accruals basis, income was recognised when each invoice was raised. When the payment then gets coded to a sales account instead of allocated, the same revenue is counted a second time — so your income is overstated, and so was the BAS derived from it. That correction is a real one, not a presentational tidy-up.
Your debtor days are fiction for the same reason, which means any judgement you make about customer payment behaviour is being made off a number that includes people who paid on the day. And if you are ever in front of a lender, an accountant or a buyer, a receivables ledger stuffed with three-year-old balances is read as uncollectable debt, because from the outside that is precisely what it looks like.
An old invoice on the receivables report is one of two things: money you are probably never getting, or money you already have. Nobody can tell which from the report itself — and that ambiguity is the whole problem.
How to clear it without writing off money you were paid
The tempting shortcut is to select the old ones and write them off as bad debts. Do not — you would be writing off invoices you have already banked the money for, which overstates your losses, understates your income, and deletes the trail that would have explained any of it.
The sequence that works is finite, and shorter than it looks.
- Run the Aged Receivables Detail report, not the summary, and sort by oldest. Detail gives you invoice numbers and contacts, which is what you need to go looking in the bank.
- Take the oldest ten and search the bank for the amount and the contact, not the invoice number. If the money is there on a plausible date, you have an allocation problem rather than a debtor.
- For a bank line that was coded to income instead of matched, use Remove & Redo on that line and re-reconcile it as a payment against the invoice. That undoes the coding cleanly rather than layering a journal on top of it.
- For payments sitting on the contact as overpayments or unallocated credit notes, allocate them to the open invoices directly. Xero will do this from the contact's record without anything being recreated.
- For invoices that were never real — the duplicate of a job billed twice — void them rather than deleting, so the number and the reason stay in the file. An approved invoice should leave a trace of why it went.
- Whatever survives all of that is your actual debtor list. It will be dramatically shorter, and for the first time it will be worth working.
If the file is large, resist doing this chronologically from the very beginning. Start with the newest unresolved items, where people still remember the jobs, and work backwards — the recoverable answers live at that end and they expire with time.
Two of the causes above have their own write-ups, because they are common enough to be jobs in their own right. If the netted-deposit pattern is what you are seeing, that is Stripe payouts that won't reconcile in Xero. If you find the same job invoiced twice, start with fixing duplicate invoices in Xero. And the income side of this — revenue counted once on the invoice and again on the deposit — is phantom income in Xero, which is worth reading before you make any correction that touches a lodged BAS.
The habit that keeps the report honest
Once the list is real, keeping it real is a monthly five minutes rather than another weekend. Open aged receivables on a fixed day, and for anything past sixty days ask one question before you chase: have we been paid for this already? Checking the bank first is faster than an awkward phone call, and it stops the list silently refilling with settled work.
The other half is upstream. Most of these never happen if a payment is matched to its invoice at the moment it is reconciled rather than coded to a sales account because the amounts do not line up. When the amounts genuinely never line up — processor fees, batch settlements — that is a wiring problem worth solving once, not a judgement call to remake every week.
Why we care about this one
Extrua exists because the founder's own Sydney cleaning business ran exactly this pattern for years: card payments settling in batches, invoices staying open, a receivables report nobody trusted enough to work. When it was finally unpicked, 124 of 140 payouts reconciled back to real invoices — the report had been listing people who had paid on the day. Reconcile was built to do that matching against the evidence rather than from memory, because the memory is the part that does not survive three years.
If you do nothing else, run the detail report and check the oldest ten against your bank. It takes twenty minutes, and the usual outcome is not a collections plan — it is finding out your business has been owed considerably less, and paid considerably more, than its own books have been saying.
Software for service businesses — built by an operator.
Job management, books, and AI agents that actually know your business.