Writing
A few years ago I walked into a business that believed it was unprofitable. The leadership team was resigned to it. They were winning contracts, the team was busy, clients were happy. And somehow, every month, the numbers said they were losing money.
They weren't. They just weren't invoicing.
Services had been delivered, some as far back as two years, and never billed. Nobody had decided to skip those invoices. No one made a mistake, exactly. The team was focused on winning the next contract, the system never flagged what was slipping, and revenue that had already been earned quietly fell into a black hole. When we built the process to close that gap, roughly $200,000 came back in the first pass. Ongoing, the leaks we plugged (missed invoices, billing errors, duplicate vendor payments) were worth six figures a month. It took a little over two months of rebuilding before leadership saw the truth: their business had been profitable all along.
I've now seen versions of this in enough services and subscription businesses to say it plainly: if you've never gone looking for unbilled revenue, you probably have some.
Revenue leakage isn't a fraud story or an incompetence story. It's a structure story. It shows up in healthy, growing companies precisely because they're growing, and it almost always traces back to the same few gaps.
The contract and the invoice live in different worlds. The person who negotiated the deal knows what was promised: the milestones, the renewal terms, the free month that was supposed to end. The person who raises invoices knows none of that unless someone tells them. Every handoff between those two worlds is a place money falls through.
Nobody owns billing as a job. In most services businesses, invoicing is something someone does alongside their real job. The office manager, the founder on a Sunday night, whoever set up the accounting software. When billing is everyone's side task, missed invoices are nobody's fault, which is exactly why they stay missed.
The system only shows what happened, not what should have happened. Your accounting software faithfully records every invoice you raised. It has no opinion about the invoices you didn't raise. Unless something reconciles delivered work against billed work, the gap between them stays invisible. And invisible problems don't get fixed.
Growth hides it. When revenue is climbing, a leak doesn't look like a leak. It looks like slightly disappointing margins. You're growing 30% and wondering why the bank balance doesn't feel like it. The honest answer might be that 5% of what you earned never got billed.
You don't need a consultant or new software to find out whether this is happening to you. If your contracts and invoices are already in one place, this is roughly three hours of honest attention. If finding the contracts is itself a project, that tells you something too, and the audit will take longer. Either way, the steps are the same.
First, pull two lists: every active client engagement or contract from the last twelve months, and every invoice raised over the same period. The first list might live in your CRM, your project tool, or (be honest) a partner's inbox. If assembling it takes days rather than minutes, that is a finding in its own right.
Second, match them. For each engagement: what should have been billed by now, per the actual contract terms? Milestones, monthly retainers, renewals, usage, out-of-scope work that was approved verbally. Then: what was actually invoiced? The difference, line by line, is your unbilled revenue.
Third, look at the aging on what was billed. An invoice raised but unpaid for 90 days is leakage in slow motion. Note who chases collections, when, and whether anyone actually does.
Fourth, flip it around and skim the vendor side. Duplicate payments, subscriptions auto-renewing for tools nobody uses, price creep on services you stopped needing. Leakage runs in both directions, and the same missing ownership causes both.
Most businesses that do this exercise find something. Sometimes it's small: a renewal that lapsed, a milestone that slipped a quarter. Sometimes it's the kind of number that changes how you see your whole year.
Finding the leak is an afternoon. Keeping it closed is a design decision, and it comes down to three things.
Give the number an owner. One person, internal or external, whose actual job includes making sure everything delivered gets billed, everything billed gets collected, and every contract's terms are reflected in the invoicing calendar. Not as a side task. As the job.
Reconcile delivered against billed, on a schedule. Monthly is enough for most businesses. The ritual matters more than the tooling: a recurring, named meeting where someone answers the question "what did we deliver that we haven't billed?"
Make the contract drive the calendar. The moment a deal closes, its billing terms (dates, amounts, renewals, escalations) should land somewhere that generates invoices on schedule without depending on anyone's memory. This is less about software and more about a rule: no contract is closed-won until its billing schedule exists.
None of this is glamorous. That's rather the point. The most valuable finance work in a growing services business is rarely a new strategy. It's making sure the money you already earned actually arrives. Before you chase the next point of growth, it's worth an afternoon to check whether some of your growth is already sitting in a black hole, waiting for someone to go looking.
I'm Arslan. I run SaaS Ledger Co, where we do this work for SaaS, ecommerce, and services businesses. If this sounded uncomfortably familiar, the audit above is genuinely where I'd start.