Three months into running service calls on my own, an AP clerk bounced an invoice back at me because it didn't have a PO number on it. Didn't even matter that the work was done and signed off. No PO, no payment, back of the queue. Took six weeks to get that one sorted out and it taught me more about billing than anything a class ever did. Nobody hands you a billing playbook when you go independent. You figure it out from bounced invoices and awkward calls to accounting departments.
This isn't a pricing article. What you charge moves by market, by trade, by whether you're union or not, and I'm not going to pretend a number here means anything for your shop. This is about structure. When to invoice, what to put on it, and how to not be the guy still chasing a check from a job you finished in March.
Progress billing on installs
Nobody pays for a fire alarm install in one lump at the end, not on anything bigger than a small tenant space. You bill against milestones tied to actual physical progress, not the calendar. Rough in and wire pull gets you a chunk. Panel set and device trim gets you another. Programming, testing, and getting the AHJ to sign off closes most of it out. And somewhere in there the GC is going to hold retainage, more on that below.
Here's roughly how I've seen a mid size commercial job broken out, numbers anonymized off a real one:
| Milestone | % of contract | Amount (job total $38,400) |
|---|---|---|
| Mobilization, rough-in, wire pull | 20% | $7,680 |
| Panel set and device trim | 30% | $11,520 |
| Programming, testing, commissioning | 30% | $11,520 |
| Final, after AHJ acceptance | 10% | $3,840 |
| Retainage, held to warranty close | 10% | $3,840 |
Your split will look different depending on the job and the GC's own billing template, some of them make you use their AIA style forms and won't take your invoice format at all. Ask up front which one you're dealing with. Saves a redo later.
T&M vs flat rate on service calls
Service work is where a lot of shops leave money on the table because they never sat down and decided which model they're actually running. Time and materials is the honest default for anything you can't scope ahead of time, ground fault chases, intermittent trouble signals, the stuff where you genuinely don't know what you'll find until you're standing at the panel. Hourly rate, a trip charge, parts at cost plus markup. Write the markup percentage into your service agreement so it's not a surprise on the invoice.
Flat rate works for the stuff you've done a hundred times. Battery swap on a common panel. Known device replacement. Annual test on a system you already know. You're pricing your experience there, not your hours, and honestly it usually nets out better for you if you've gotten fast at it. I switched a handful of common jobs to flat rate a couple years back and it cut down on customers arguing over the invoice too, they know the number going in.
Don't mix the two on the same call without saying so. If you quote flat rate and then find something extra, stop and get a verbal or text approval before you keep going and bill T&M on top. Skipping that step is how you end up in a dispute over an invoice that's technically correct and still doesn't get paid.
Recurring monitoring and inspection contracts
Monitoring and inspection contracts are the closest thing this business has to predictable revenue, treat the billing that way. Most of my inspection contracts renew every January regardless of when the actual system went in, easier to track that way than chasing individual anniversary dates all year. Invoice ahead of the visit if you can, some owners want the inspection to show as scheduled before they'll cut a check, others won't pay till the report is in their hand. Ask which camp your customer is in the first year and note it, don't relearn it every renewal.
Monitoring itself, quarterly or annual, ACH or card on file beats mailing an invoice every time. Fewer late payments, less of your own time spent chasing small dollar amounts. If a property manager is running five or six buildings through your company, put the site address on every line, not just the company name. I've had invoices sit unpaid for weeks because the AP person genuinely couldn't tell which building it was for.
Retainage on new construction
A GC I worked under held ten percent retainage on a job for four months after final acceptance, past when the contract said it'd release. Turned out there was a punch list item from a different trade holding up the whole closeout and nobody told me. I only found out by calling every couple weeks, which, fine, that's apparently just part of the job.
Two things I do differently now. Retainage terms go in writing before the job starts, not assumed from the GC's standard contract, and I check my state's prompt payment and retainage statutes because a fair number of states cap how long retainage can legally sit after substantial completion. And I follow up in writing, not just a phone call, so there's a paper trail if it ever gets bad enough to need a notice of intent to lien. Most of the time it doesn't get that far. Knowing you're willing to go there changes how fast people move.
What the invoice itself needs on it
Doesn't matter how good the work was if the invoice can't get processed. At minimum: your license number if the state or the GC requires it on the document, the PO number if one was issued (ask, don't assume there isn't one), the site address, a description tied to the actual scope of work rather than just "service call," your payment terms spelled out, and where the payment actually goes. If you're on a progress schedule, reference which milestone this invoice is for and what's left.
Small thing but it matters: date the invoice for when the work was actually done, not when you got around to typing it up. Net 30 from the wrong date is a fight nobody wins.
The part that's actually a hassle
Most of this isn't hard, it's just a lot of retyping the same project info across a contract, a submittal package, a few progress invoices, and a monitoring renewal, and keeping it all lined up in your head or a spreadsheet. That's the part that got old for me, full disclosure I've been building FireDeck partly to fix it, so take the plug for what it's worth. Anyway. Bill on time, put the address on it, and don't let retainage go quiet for four months.