Most generator PM agreements get priced the same way: someone picks a round number that feels right, writes it on a one-page contract, and signs a three-year term. It looks tidy. Then labor goes up, parts go up, fuel goes up, and by year three you're servicing the account at a loss and can't say exactly when it went underwater.
Pricing a PM contract well isn't guesswork. There are a handful of real cost levers, each one maps to a line you can defend to the customer, and there's one clause that keeps the whole thing profitable to the last visit. This is the method.
The two levers that drive the base price
Strip everything else away and PM contract pricing comes down to two things: how big the unit is, and how often you visit it. Size and cadence. Get those two right and the rest is line items bolted onto a solid base.
Lever one: unit kW size
A small standby unit and a large prime-power unit are not the same job. The bigger machine takes more filters, more oil, and more time on site. Pricing them at the same per-visit rate means you're either overcharging the small units or losing money on the big ones — usually both, in the same contract.
So price per visit in kW tiers. Each tier reflects the consumables and the labor hours that size of unit actually consumes. Where you draw the breakpoints between tiers is a call only your own service data can make: real filter counts, oil volumes, and hours on site from your own history, not a number borrowed from someone else's market.
Lever two: visit cadence
Cadence is how many times a year you're on site — typically monthly, quarterly, or semi-annual. What's right for a given unit depends on its duty, the facility type, and what the governing standard and the authority having jurisdiction (AHJ) require. Don't invent an interval; defer to the standard and the AHJ for the facility in question.
The base contract price falls straight out of these two levers: take the per-visit price for the unit's kW tier, multiply by the cadence, and you have the maintenance base. Everything in the next section is scoped on top of that as its own line.
THE BASE FORMULA
What gets its own line item
The mistake that quietly kills margin is folding everything into one flat PM number. The customer sees a tidy figure; you eat the cost of work that scales independently of the routine visit. Scope these as their own lines.
Load bank testing
A load bank test carries its own equipment, labor, and time cost, and that cost scales with the unit's size. Folded into a flat PM rate, it's invisible until you're hauling a load bank to a 2 MW unit on the same contract that priced it for a 60 kW standby. Price it as its own line.
When the governing standard or the AHJ requires an annual load bank for a facility type, that requirement should appear as its own line on the agreement — both so the customer sees what they're buying and so the obligation is documented. Load bank results are a compliance deliverable: they should be dated and attributed to the technician who performed the test. Whether you price it by kW tier, flat per event, or hourly plus equipment, pick one basis and apply it consistently.
Fuel testing, sampling, and polishing
Stored diesel degrades. Fuel testing, sampling, and polishing are real scopes with real cost, and they don't belong buried in the routine-visit price. Scope them as their own line items so the customer is buying them deliberately and you're billing the full scope. Per sample, per gallon polished, or per event all work; buried in the visit price does not.
Travel and windshield time
Windshield time is a real cost whether or not it's on the invoice. A two-hour drive each way to a rural site is labor you're paying for. Price travel on a consistent basis — a flat trip charge per visit, a per-mile rate beyond a set radius, or zoned pricing by region — and apply it the same way to every account so you're not absorbing it on the far ones.
After-hours and emergency response
After-hours and emergency response isn't standard scheduled daytime PM, and it shouldn't be billed like it. Price it at a premium rate and state that rate in the contract up front — not as a surprise on the first 2 a.m. callout. The customer agrees to it at signing, and you're never negotiating your own rate at the worst possible moment. A multiple over the standard daytime labor rate is the common structure; the multiple itself is your call.
Where parts stop and repairs begin
A PM contract covers maintenance — not the cost of every component that fails. Drawing that line clearly in the agreement is what keeps a maintenance contract from turning into an open-ended repair obligation you priced as routine.
The cleanest split: routine consumables go in the tier price; failure-driven parts get billed as found.
- Included in the tier price: the routine consumables every visit needs — oil, the standard filter set, coolant top-off. Predictable, low-variance, easy to price once.
- Billed as found: major and failure-driven parts — a starter, an alternator, a controller, a battery bank — billed against a parts and labor rate set in the agreement when the technician finds the fault.
Spelling this out up front means the customer already agreed to the as-found rate before the failure happened, and you're not eating the cost of a major component because the contract was vague about it.
THE BOUNDARY
Price the PM with the work it pulls behind it
A PM contract is worth more than the contracted maintenance revenue on its face, because the contracted customer calls you first. The reactive repair, the time-and-materials work, the after-hours callout — it tends to route to the shop already on site and already holding the equipment history. The PM is the front door to the rest of the account's spend.
That changes how you price. If a PM book reliably pulls billable T&M and emergency work behind it, you can price the maintenance itself competitively and still come out ahead on the account. The lever is a target PM-to-T&M ratio — what mix of contracted PM revenue to reactive revenue your shop is actually running.
There's no universal correct ratio. It depends on your fleet mix, your labor cost, and how your contracts are structured, so the right number is one only your books can give you: for every dollar of contracted PM work, how many dollars of reactive and emergency work do the same accounts actually generate. Measure it, then price toward it.
The clause that keeps a multi-year contract profitable
Here is where most PM agreements bleed. A multi-year contract priced once, flat, with no escalation loses margin every year of the term. Labor, parts, and fuel costs rise; the contract price doesn't. By the final year you're servicing the account below cost and the contract that looked like a win at signing is a liability.
The fix is one clause: an annual escalation, written into the agreement at signing. It can be a fixed percentage each year or tied to a published index — either way, it's in the contract from day one, not raised mid-term.
Many customers will accept a clearly stated annual escalation on a multi-year service agreement, especially when it is disclosed up front rather than raised mid-term. Surfacing it at signing is a far easier conversation than a surprise increase in year two.
THE CLAUSE
How PowerOps holds the pricing together
A pricing method is only as good as the data behind it. PowerOps is built so the contract you price flows through the work without re-entry, and so every visit it produces becomes a defensible record.
Systemization — the contract flows, you don't retype it
A quote carries the customer, site, equipment list, kW rating, and line items forward without re-entry — the kW tier you priced against is the kW rating already on the equipment record. Approve the contract and that data flows into the scheduled PM visits, dispatch, and invoices, so the load bank line, the fuel line, and the trip charge you scoped at quote are the same lines that bill — nobody re-keys them three stages later.
Accountability — every visit becomes a record you can defend
Every PM visit, load bank result, and transfer test becomes an attributed, timestamped, immutable record, captured by a named technician on the mobile field app — readings, photos, and serials, against the same equipment record you priced. Field records are written once and never silently edited.
That's what makes the load bank line you sold a deliverable you can stand behind. Asked who performed the annual load bank test and what the readings were, the permanent record answers with a single human name, a timestamp, and the captured data — not a binder someone has to go find.
WHY IT MATTERS