Work sample 10 / 14Management reporting

Job profitability reporting, from the job system and Xero

How I'd approach job profitability for a multi-branch service group, so management sees margin by job, branch and service line, and every cost that belongs to no job is on a list with an owner.

Worked example on representative data.

Area
Management reporting
Tools
ServiceM8 or Jobber · Xero · Reporting workbook
Typical scope
US$2,500–4,000
Timeline
About 4 weeks · 4 fixed milestones

01Context

A multi-branch service group with an owner, branch managers and an operations director. Jobs are run in ServiceM8 or Jobber, and supplier bills are entered in Xero.

The systems in play

In the example the group has three branches and three service lines. Management wants to see margin for each job, branch and service line, and to see it before the quarter ends.

Table 1Who uses what
SystemWhat it does for the business
ServiceM8 or JobberJobs, invoices, time on site and materials used. The source for revenue and labor.
XeroSupplier bills for materials and subcontractors, with the branch as a tracking category.
Reporting workbookA spreadsheet that joins the two on the job number. It is refreshed weekly from exports and reports.
Operations directorReads the report each week and decides which jobs and service lines need attention.

02Problem

What the owner sees

  1. A busy month that did not make money
  2. Branches that are compared on revenue, not margin
  3. Supplier costs that arrive after the job is invoiced
  4. No agreed definition of what a job cost

Revenue sits in the job system and costs sit in Xero. Without a shared job number, nobody can join them, so margin is found out after the fact.

Table 2Where the drift starts
Everyday situationWhat goes wrong
Bill without a job referenceThe cost lands in the ledger but belongs to no job, so the job looks more profitable than it was
Bill split across jobsOne supplier bill covers several jobs and is charged to one
Supplier creditA credit note reduces a cost, but not on the job it came from
LaborTime is recorded on the job, but with no agreed cost rate it is left out of margin
CallbacksWarranty work is charged to a new job and hides the cost of the original
Branch viewBranch is a tracking category on some bills and missing on others

03Approach

Four steps, in this order. Each one ends with a result that is checked.

  1. LookA read-only review of how jobs are numbered, how bills are coded and what is currently reported. Nothing is changed.
  2. Agree the definitionsWhat counts as revenue, which costs belong to a job, and how labor is costed are written down.
  3. ConnectThe job number is carried on every bill, and a weekly report joins jobs to costs.
  4. CheckCosts in Xero are compared to costs assigned to jobs, and the gap is a list with owners.
Table 3Definitions agreed in writing (example settings)
ItemExample setting
RevenueInvoiced amount for the job before tax
Materials and subcontractorsSupplier bill lines that carry the job number, before tax
LaborTime recorded on the job, costed at one agreed cost rate per hour. It is a management rate, not a pay figure.
MarginRevenue less materials, subcontractors and labor
Branch and service lineTaken from the job, and from the tracking category on the bill for costs
CallbacksCosted to the original job, and flagged
Cut-offCosts recorded up to the report date; late bills are listed

04What the setup includes

What the setup includes, and why each piece is there. The detail of how it is configured is agreed in the scoping call.

Show the setup, layer by layer
Table 4The setup, layer by layer
LayerWhat is set up and why
Job numbers on billsThe job number goes into the reference of every supplier bill line, so a cost can be joined to its job.
TrackingBranch as a tracking category in Xero. Xero allows two active categories, so service line stays on the job.
Cost accountsMaterials and subcontractor accounts used consistently, so the report can find job costs.
Labor rateOne cost rate per role, agreed with management and kept in the workbook.
Weekly exportJobs and time from the job system, and bills from Xero, saved in the same layout each week.
Management reportMargin by job, branch and service line, with the cost list behind each figure.
Exceptions listBills with no job, bills that need splitting, credits, and jobs with revenue but no costs yet.

How the data moves

  1. Job invoiced
  2. Supplier bill coded with job number
  3. Time recorded on the job
  4. Weekly export
  5. Joined on job number
  6. Margin report
  7. Exceptions list

05Edge cases

These are agreed with the operations director and the bookkeeper and tested on a past quarter.

Table 5Edge cases and how each is handled
SituationHow it is handled
Bill with no job numberListed with its supplier and amount. It is assigned by the branch manager and the change is logged.
Bill split across jobsSplit in a written note with the amounts, and entered as separate lines with each job number
Supplier creditJoined to the job it came from, using the same reference
Job invoiced in stagesRevenue is the sum of its invoices. The report shows invoiced to date and margin to date.
Job with revenue but no costs yetShown as incomplete, not as a good margin
Cost recorded after the job was invoicedAdded to the job in the next weekly report and flagged as a late cost
CallbackCosted to the original job and flagged, so the true cost of the job is visible
Change to the labor rateApplies from an agreed date. Past reports keep the rate they used.
Company with its own Xero organizationReported on its own, then combined in the workbook with a company column
Who changed whatReassigning a cost needs a branch manager and is recorded with a user and a date

06Worked example

The tables below use five jobs on representative data, at an example labor cost of US$45 an hour. They show the shape of the report, not a client result.

Table 6Margin by job (sample data, US$)
JobBranchService lineInvoicedMaterialsSubcontractLaborMarginMargin %
J-4501NorthMaintenance8,4002,1001,5002,7902,01023.9%
J-4502SouthInstall14,2005,3003,0003,6002,30016.2%
J-4503NorthInstall6,5002,00001,8002,70041.5%
J-4504EastMaintenance3,20040001,3501,45045.3%
J-4505SouthRepair2,8001,45001,0802709.6%
Total35,10011,2504,50010,6208,73024.9%
Table 7Margin by branch (sample data, US$)
BranchInvoicedCostMarginMargin %
North14,90010,1904,71031.6%
South17,00014,4302,57015.1%
East3,2001,7501,45045.3%
Total35,10026,3708,73024.9%
Table 8Cost completeness check (sample data, US$)
CheckAmount
Supplier bills in Xero, cost accounts, for the period16,390.00
Assigned to jobs in the report15,750.00
Bill SH-7712, no job number400.00
Bill 0211, could belong to two jobs240.00
Difference after the listed bills0.00

07How the result is checked

The report is only useful if the costs behind it are complete. The check compares the ledger to the job report every week.

Table 9Checks and pass conditions
CheckHowPass condition
Cost completenessSupplier bills in Xero compared to costs assigned to jobsDifference equals the exceptions list, line by line
RevenueJob invoices compared to invoices in Xero for the periodEqual, or a named reason for each difference
Margin arithmeticBranch and service line totals compared to the sum of the jobsEqual
LaborHours in the report compared to hours in the job systemEqual
Exceptions listBills with no job, splits, credits and incomplete jobsEach has an owner and is cleared before the quarter closes
Change logReassigned costs and rate changesEach carries a user, a date and a reason

08Scope and milestones

A fixed scope agreed in writing before anything starts. Each milestone is paid when you sign off its deliverable.

Table 10Scope: what a project like this covers
AreaIncluded
Health CheckReview of job numbering, bill coding and current reports, a 45-minute call, written findings and a fixed quote
DefinitionsRevenue, costs, labor and margin in writing, agreed with management
Xero set-upJob number on supplier bills, branch tracking and consistent cost accounts
Reporting workbookMargin by job, branch and service line, refreshed weekly from exports
Exceptions listUnassigned bills, splits, credits and incomplete jobs, with owners
Past quarterOne past quarter run through the report and checked against Xero
HandoverWritten SOPs, a recorded walkthrough and files you own, plus 14 days of fixes after go-live
Not includedTax filing or payroll.
Also outside the scopeLive, automatic connections between the systems, which are quoted separately. Changes to how jobs are priced. Software subscriptions (billed to you by the vendors).
Table 11Fixed milestones
MilestoneDeliverableTimingShare
M1 Health Check and definitionsFindings, a fixed quote and the definitions in writingWeek 120%
M2 Xero and job numbersJob numbers on bills, tracking and cost accounts in useWeek 225%
M3 Report on a past quarterMargin by job and branch, checked against XeroWeek 340%
M4 HandoverWeekly routine, exceptions list, SOPs, walkthrough, 14 days of fixesWeek 415%

Typical scope for this kind of project: US$2,500–4,000

About 4 weeks across 4 fixed milestones. The Systems Health Check (US$300, fixed) comes first and confirms the scope.

Describe what is going wrong between your job system and your books, and I'll say where I'd look first.

Send a short note through the form on the home page. I will reply with where I would start, and whether the US$300 Systems Health Check is the right first step.