How do I track profitability by building maintenance contract?
The goal is to see how much money each contract actually makes after you account for the labor and materials you put into it. Without that visibility, you end up renewing contracts that lose money or underpricing new ones because you’re guessing at your costs.
In QuickBooks Online, set up each building maintenance contract as either a project under a customer or as its own sub-customer. Projects tend to work better if one property management company has multiple buildings, since you can track each building separately while still seeing the client relationship at the parent level. If each contract is with a different client, a simple customer record works fine.
The key distinction in your tracking is direct costs versus shared overhead. Direct costs are anything you can tie to a specific contract. Labor hours your crew spends at that building, cleaning supplies used on site, equipment rental for that location, subcontractor invoices for specialized work at that property. These get coded to the contract every time you enter a bill, write a check, or process payroll.
Shared overhead stays at the company level. Your office rent, insurance, vehicle costs that serve multiple contracts, your own salary, administrative staff, software subscriptions. Trying to split these across individual contracts creates busywork and false precision. What you really want is gross margin per contract, which is contract revenue minus direct costs. That number tells you whether the contract itself is profitable before your general business expenses come into play.
For labor, you need some form of time tracking by contract. Whether your crews use an app, paper timesheets, or a scheduling tool, the hours worked at each building need to be recorded and allocated to that contract when payroll runs. This is the piece most facility service companies struggle with because it requires consistent habits from the people doing the work. But without accurate labor allocation, your contract profitability numbers are meaningless since labor is usually your biggest direct cost.
Materials and supplies should be coded to the contract at the time of purchase or when you enter the bill. If your crew buys cleaning chemicals and uses them across three buildings, estimate the split and code accordingly. It doesn’t need to be perfect down to the penny, but it needs to be reasonable and consistent.
Once this is set up, run a profit and loss by customer or project report each month. You’ll see revenue and direct costs per contract, giving you gross margin. A contract bringing in $3,500 a month but costing $3,200 in labor and materials is only making $300 before overhead. That might not be worth keeping, or it might signal you need to renegotiate pricing at renewal.
This monthly review is where the real value shows up. You can spot contracts where labor hours are creeping up, compare margins across similar-sized buildings, and make pricing decisions for new bids based on actual cost data instead of gut feelings. Over time you’ll build a clear picture of what a profitable contract looks like for your business.
Getting this structure right from the start saves a lot of pain later. If your QuickBooks file isn’t set up for contract-level tracking, or if months of transactions are sitting uncategorized, our Wisconsin small business bookkeeping services can help you build a system that gives you the numbers you need to make confident decisions about your contracts.
Wisconsin's Small Business Bookkeeper
The Next Step:
A Quick Conversation
Tell us about your business. We'll talk through what you need, answer your questions, and give you a clear quote.
More Questions
How do I price landscaping jobs to stay profitable?
Start with your actual cost per crew-hour, including overhead, then price to hit a 30-40% gross margin. Without job costing data, most landscapers are guessing at prices and finding out too late which jobs lost money.
Read answerHow do architects track billable hours vs project costs?
Most architecture firms use phase-based billing that maps to standard project phases. Tracking hours against each phase and comparing them to the agreed fee is what reveals whether a project is actually profitable.
Read answerHow should a roofing contractor handle storm/insurance jobs vs retail jobs?
Track insurance and retail jobs as separate revenue streams using distinct income accounts or classes. Insurance work has a unique payment structure with ACV and RCV supplements that requires careful accounts receivable tracking to see true profitability.
Read answerWhat's the best chart of accounts for a residential cleaning business?
Split revenue by service type, separate direct costs like labor and supplies from overhead, and keep your operating expenses specific enough to spot trends. This structure lets you see true margins by service line.
Read answerAre cleaning services subject to Wisconsin sales tax?
Most cleaning services in Wisconsin are taxable. This includes commercial janitorial work, residential house cleaning, carpet cleaning, window washing, and pressure washing. You need a seller's permit and must collect and remit sales tax.
Read answerWhat's the best way to track equipment and fuel costs for a landscaping company?
Equipment over $2,500 gets capitalized and depreciated as a fixed asset. Smaller tools are expensed immediately. Fuel is best tracked per truck or crew using fuel cards that feed into your accounting software for job-level cost allocation.
Read answer