Service profitability guide

How contractors track agreement and work order margins on one ledger

On this page

Introduction

Service profitability is the practice of measuring gross margin on every work order and every maintenance agreement as costs occur, rather than estimating it after the fact. For specialty contractors, that means labour, parts, and travel posting to the agreement or work order in real time, on the same general ledger as construction jobs.

Most service departments do not have that. Ask a contractor what their agreements earned last month and you will usually get one of two answers: a guess, or a promise to check. The construction division reports estimate versus actual by cost code every week. Meanwhile, the service division, often the steadier and higher-margin half of the business, grades itself once a year, when the accountant closes the books.

That gap is not a discipline problem. It is an architecture problem. Consequently, this guide covers where service profit goes missing, how to evaluate your current process, what continuous margin visibility looks like in practice, and how a unified construction and service system makes it the default rather than the project. It is the service-side counterpart to our Job Costing Guide, which covers the same discipline for the construction division.

The Problem: The Margin You Only See at Year End

Service departments rarely lose money in one dramatic place. Instead, margin leaks in small, recurring amounts across hundreds of work orders and dozens of agreements, and the losses stay invisible because no report totals them until year end. The patterns below are the most common ways it happens.

🚩 Agreement profitability arrives once a year

A maintenance agreement is priced once, then serviced for twelve months or more. Every extra visit, callback, and unplanned part erodes the margin quietly. However, because most systems never accumulate those costs against the agreement itself, the contractor discovers whether the contract made money only at renewal, long after the chance to reprice or rescope has passed. 

🚩 Hours and parts leak between dispatch and invoice

A technician finishes a call, notes two hours and a compressor contactor on a paper ticket or in a field app, and moves on. By the time that ticket reaches billing, days later and through at least one retype, an hour has softened and the part has vanished. Each miss is small. Multiplied across a busy dispatch board, it is the difference between the margin you priced and the margin you earned.

🚩 Travel time is real cost that never lands anywhere

Windshield time is paid labour. Nevertheless, in most service operations it is absorbed into general overhead rather than costed to the agreement or work order it served. As a result, agreements with distant sites look exactly as profitable as agreements across the street, and renewal pricing rewards the wrong customers.

🚩 The numbers live in a platform that syncs to accounting

Many contractors bought a capable service platform, and it genuinely improved dispatch. The trouble is that its numbers live in that platform, and the accounting truth lives somewhere else. Every month, someone reconciles the two. Every month, they almost match. In other words, the service division runs on one version of reality and reports on another.

Add it up and the problem is not that service is unprofitable. It is that nobody can easily prove it either way until year end. And what you cannot see, you cannot manage.

servicemanager

Is Your Current Process Working?

Before changing anything, establish how much of your service margin is currently visible. The eight questions below are a self-assessment; answer them honestly for your service operation as it runs today, not as it is supposed to run.

Evaluation:

  • Do you find out whether a maintenance agreement made money only at renewal or at year end?
  • Do technicians record time and materials in one system while invoices are built in another?
  • Has a completed work order ever gone out the door with hours or parts that were never billed?
  • Is travel time absorbed into overhead rather than costed to the agreement or work order it served?
  • When someone asks your service margin, do you quote a number from memory rather than pull a report?
  • Does comparing service margins to construction margins require exporting to a spreadsheet?
  • Do you price agreement renewals from last year’s price rather than last year’s cost?
  • Does your month end include reconciling a service platform against your accounting system?

If you answered yes to three or more, your service department is not underperforming. It is underreported, and margin leaks where nobody is looking.

What Profitable Service Actually Looks Like

An ideal service profitability process reports gross margin on every work order and every maintenance agreement continuously, on the same general ledger that carries construction job costs. Labour, parts, travel, and subcontracted work post to the agreement or work order as they occur, so margin is something you read, not something you reconstruct.

Here is the key takeaway of this guide: service profitability is a ledger question, not a dashboard question. Until agreement and work order costs post to the same general ledger as your construction jobs, every service margin you quote is an estimate, and every comparison between the two divisions is a spreadsheet exercise.

This is how you know whether your service department is actually making money:

✅ Labour

Every technician hour posts to the agreement it served at fully burdened cost, without waiting for a month end allocation. Callback hours land on the same agreement as the original visit, so a contract that generates repeat trouble shows it in the numbers rather than in the dispatcher’s memory.

✅ Materials and parts

Parts pulled from inventory or bought on a PO post to the agreement automatically. Consequently, there is no end-of-month hunt for what that fourth visit actually consumed, and no part quietly written off because nobody could tie it to a contract.

✅ Travel time

Drive time is costed to the agreement, not to overhead. This is the adjustment that changes renewal conversations most, because it separates the profitable contract across town from the marginal one two hours away, even when their invoices look identical.

✅ Billings against the full term

Agreement billings, whether monthly, quarterly, or annual, accumulate against those costs over the life of the contract. At any point in the term, not just at renewal, you can see margin to date and margin trend. Accordingly, repricing happens when the numbers move, not when the anniversary arrives.

✅ Work order margins in real time

Every time and material call, quoted job, and warranty ticket carries its own cost and billing record. Therefore a service manager can rank last month’s work orders by margin, spot the customer or work type that consistently underperforms, and fix pricing or scoping before the pattern repeats for a year.

✅ Dispatch to invoice in days, not weeks

When the technician’s entry in the field is the billing record, invoices go out while the work is fresh and nothing is retyped. Faster invoicing is not only a cash flow win; it is a leak-proofing win, because unbilled items rarely survive a short gap between work and invoice.

✅ Service beside construction on one P&L

Finally, because service costs post to the same ledger as project costs, the divisional P&L is a live report rather than a month end assembly. A CFO can compare agreement margins to project margins on the same basis and answer the strategic question underneath all of this: where should the next dollar of growth go?

The Jonas Approach

Jonas Construction Software treats service profitability the way it treats job costing: as a function of one database, not an integration. Work orders, maintenance agreements, dispatch, payroll, inventory, purchasing, and the general ledger are modules of a single system, so service costs post to the books the same way project costs do.

In practice, that architecture plays out across the whole service workflow. Dispatch assigns the work order, and the technician’s mobile entries for time, parts, and status update payroll, inventory, and receivables directly, with no rekeying between field and office. Work order management reports profitability by customer, by site, and by service contract. The preventative maintenance module accumulates every visit, part, and labour hour against the agreement over its full term, flags upcoming renewals, and identifies where pricing should move before the renewal is issued. Furthermore, because agreement billing and construction progress billing run through the same engine on the same ledger, the divisional P&L requires no reconciliation. Service margins and project margins are finally the same kind of number.

That is the standard of a unified construction and service ERP, and it is a standard most service platforms cannot meet, because they end where the ledger begins. A dispatch tool that syncs to accounting can tell you a work order’s revenue. Only a system that carries the general ledger can tell you, without a reconciliation step, what the work order and the agreement above it actually earned.

During this transition (to Jonas), service has increased revenues from $6 million to over $10 million, and profits have gone from 6% to over 15%

democall2

Next steps

If your agreements only prove themselves at year end, the fastest way to test everything above is to look at your own numbers in a system built for them. Book a demo and bring your three biggest maintenance agreements, including the one you suspect is losing money. We will show you what each looks like when every visit, part, and travel hour posts to one ledger.

Book a demo with a Jonas specialist and see how a unified construction and service ERP reports works.

Frequently asked questions

How do you calculate maintenance agreement profitability?

Accumulate every cost the agreement generates over its full term, including labour at burdened rates, parts, subcontracted work, callbacks, and travel time, then subtract that total from accumulated agreement billings for the same period. The result, expressed as gross margin, only stays accurate when costs post to the agreement as they occur rather than being allocated backward at year end.

Why do maintenance agreements lose money?

Usually because their true costs were never visible. Underpriced contracts renew at last year’s price, callback-heavy sites consume unplanned visits, travel time hides in overhead, and parts go unbilled between dispatch and invoice. Oxmaint’s analysis estimates 30 to 35 percent of HVAC service contracts are net losers when fully costed. Continuous agreement-level costing exposes those contracts while there is still time to reprice, rescope, or exit.

Can a standalone service platform track service profitability?

Partially. A dedicated service platform can report work order revenue and, within its own walls, an approximation of cost. However, its numbers end where your ledger begins, so agreement margins over a full term and true divisional comparisons still require syncs and reconciliation. The table below summarizes the differences.

CapabilityStandalone service platformAccounting package with service add-onUnified construction and service ERP
Work order marginsYesPartial (after field data is keyed in)Yes
Agreement margins over the full termPartial (inside the platform, reconciled to accounting after the fact)NoYes
Service and project margins on one ledgerNoPartial (one ledger, without construction-grade job costing)Yes
How often should contractors review service margins?

Work order margins should be visible continuously and reviewed at least weekly by the service manager, because pricing and scoping problems repeat quickly across a busy board. Agreement margins should be reviewed monthly and always before renewal. Annual review is an autopsy; monthly review is management.