When margins feel thin, most expediting firms look at pricing first. Are we charging enough for permits? Should plan approvals be higher?
Usually those are the wrong questions. The bigger problem isn't what gets charged. It's what never gets charged. The work was done, the approval came through, and the invoice that went out didn't include it.
That's a much bigger hole in your books than just charging too little. Underprice by 10% and you lose 10%. Fail to bill at all and you lose the whole thing! That's 100% loss, straight from the bottom line. The PM's salary was paid. Every dollar of cost has already left the building. Whatever you didn't invoice comes out of profit with nothing to offset it.
Why you can't see it
An unbilled item and an unneeded item look the same in the books.
Say a proposal included four PAAs and two were invoiced. Maybe the job only needed two. Maybe the PM did all four and nobody told finance. From the ledger those are the same story.
So your finance lead becomes a project detective and forensic accountant. Digging through email threads, working their internal network, and yes, sometimes going off a hunch. They get most of it. What they miss is gone, and no report shows it missing.
Leak #1: Partial Milestones
A lot of expediting work is billed in stages. For example, structural plan approval might be 50% on filing and 50% on approval. Fire alarm, same thing.
The first half is easy. Filing is an event. The PM sent a transmittal, it's fresh, finance bills it.
The second half shows up months later, after objections and resubmissions, sometimes handled by someone other than the person who filed. By then it feels like the end of a slog, not a billing event. Nothing says "the other half is due now." It slides.
Same thing at the front of a job. The retainer is due "upon engagement," but the PO is slow, the PM starts work anyway, and the retainer gets billed late or folded into something else.
And the more stages a job includes, the worse this gets. A job filled in two milestones has one seam where something can slip through. A job billed in five milestones (retainer, filing, approval, permit, sign-off) has four seams, and it only takes one of them to go unnoticed. The risk isn't additive, it's compounding: each extra milestone is another point where the person doing the work isn't the person tracking the billing, another handoff where "it's basically done" gets mistaken for "it's been invoiced."
What catches this is seeing each staged item on its own, with what's been invoiced and what's left. A job that's 60% billed tells you nothing about whether the fire alarm second went out. You need the fire alarm line, with its balance, by itself.
Leak #2: Handshake Add-Ons
Every PM has had this call. "You're already handling the alteration, can you pull the electrical too?" Or the email: "We need a TCO before the tenant moves in, can you add that?"
The answer is always yes. That's the relationship, and saying no to a small ask from a good client is bad for business.
So the PM does it, and because it was a quick yes over the phone, nobody writes a revised proposal. The work exists in the PM's head and in the DOB record. It doesn't exist anywhere your billing agent will look.
In our experience, this is usually the biggest source of leakage for most firms, and the one that feels least like a problem while it's happening. Each add-on is small. Each one is a favor. Only across a year does the total become a number worth caring about, and since the work cost real hours, that number is all lost margin.
Firms that capture this treat every add-on as a small change order. Not formal, just documented. A one-line supplemental proposal linked to the job, or a scope line added to the project before the work starts. Something finance can see, so when the permit gets pulled there's a line waiting to be billed.
Clients don't object to a line item for something they asked for but they don’t like surprises. "Happy to, I'll add it at our standard permit rate" is a sentence most clients barely notice. The invoice six months later for something they forgot they asked for is what causes friction.
Leak #3: Pass-Through Fees
This one is worse than the other two, because it isn't just margin. It's cash.
A PM is at the DOB counter or in DOB NOW and a filing fee is due. They pay it, on the firm's card or their own, to keep the job moving. The plan is to bill it back to the client. That's what it is, a reimbursable, and the client expects it.
Then the receipt sits in an inbox. Or a jacket pocket. The expense lives in accounting's world, the person who paid it lives in project management's, and there's no bridge. A month later the PM can't remember which job the $300 was for.
With an unbilled milestone you gave away work. With an unbilled fee you wrote a check to the city on the client's behalf and never got it back. The firm is out the money, not just the profit.
When the PM marks the task done, they note who paid the fee: client direct, the firm, or exempt. That note lives on the task, so finance has a cross-check that doesn't depend on a receipt surviving. When the job is invoiced, the fee line is already there waiting.
The afternoon audit
Here’s a relatively quick exercise you can do within a couple of hours. Zoom in on your work for last quarter and find your leaks.
- Match approvals to invoices. Pull every approval, permit, and sign-off obtained in the quarter. Find the invoice line for each. No match, that's a leak.
- Check the second halves. For every staged item, confirm the second billing point went out. Look hardest at approvals that landed near the end of the quarter.
- Find the scope that grew. List every project where the work went beyond the proposal. For each, confirm a supplemental proposal or scope line exists. If the work happened without the paper trail, that's a leak.
- Reconcile the fees. Pull the firm's card statements for agency charges. Match each one to a reimbursable line on a client invoice. Anything unmatched is money you lent the city and never collected.
What turns up is usually not one big miss. It's a fire alarm second half here, an electrical permit there, a few hundred dollars in filing fees nobody billed back. Each is easy to shrug off. Added up over a year, every one of them was either pure profit you'd already earned or cash you'd already spent.

Where the trigger lives
The problem is there's no single place where "completed" and "billed" sit next to each other, so the comparison happens in someone's head, and that's where things get lost.
Fixing it means moving the billing trigger. Instead of month-end reconstruction, the trigger becomes the moment a PM marks a task done. The item lands on a list of things to bill and stays there until it has an invoice number. Finance doesn't have to ask. The PM doesn't have to remember to say.
That's how SnapCor is built. Proposal scope becomes project tasks, completed tasks land on a billing report, and nothing drops off until it's invoiced. If you'd like to see it against one of your own jobs, we're glad to walk through it.


