Property Management Cost Per Unit: Why You Cannot Say What a Building Costs You
May 7, 2026
The problem: Maintenance tickets, vendor invoices, and staff hours never meet in one place, so nobody can say what it costs to run a single unit or a single building.
The solution: Connect the work order, the invoice that paid for it, and the hours spent on it to the unit they belong to, so cost per unit becomes a number the company reads instead of estimates.
The math
If maintenance and vendor spend runs about $1,200 a unit a year across 900 units, a fifth of those units quietly running 25 percent above the portfolio average is roughly $54k a year going out the door with nobody able to name the buildings it went to.
Ask a property manager what the portfolio costs to run and the answer arrives quickly, because it is sitting on the income statement. Ask what one building costs to run, or what one unit costs to run, and the answer takes a week and arrives as a guess. That is the uncomfortable part. You can see the total. You cannot see what makes it up.
It matters because almost every decision you make is a per-building decision. Whether to keep the account. Whether the management fee still covers the work. Whether to renew the plumbing vendor. Whether the older property on the north side is carrying its weight or being carried. Those decisions get made on the feel of the thing, because the number that would settle them has never been assembled.
Three records that never meet
The spend is not hidden. It is recorded three times, in three places, in three shapes.
The maintenance ticket says what happened: a tenant reported a leak, someone was dispatched, the work was closed. The vendor invoice says what it cost: a plumbing bill for $840, entered into accounting against a general repairs account. The labor is the third record, and usually the weakest: a maintenance tech's day, a coordinator's afternoon of phone calls, a property manager's site visit, all of it paid through payroll and none of it attached to a property.
Each record is accurate. None of them knows about the other two. The invoice does not carry the ticket number. The ticket does not carry a dollar figure. The hours dissolve into a payroll total. So the spend exists as three separate facts that no one has ever put in the same row, and the question "what did this building cost us last year" has no place to be answered from.
What that costs you in practice
The first cost is repeat spend you cannot see. A unit that has had four plumbing calls in eight months looks, in the accounting system, like four ordinary invoices spread across four months. Nobody sees a pattern, because nobody is looking at that unit as a line. The fifth call comes, and it is still cheaper each time to dispatch than to fix the cause, right up until the year is over and the repair total quietly exceeded what a proper fix would have cost.
The second is vendor pricing you never test. When the invoices are only sorted by vendor and month, you cannot see that one plumber charges $340 for a call the other charges $210 for, or that the emergency rate is being applied to calls that were not emergencies. There is no comparison because the invoices are not sitting next to the work they paid for.
The third is labor, and it is usually the largest and the least visible. The coordinator who spends two days a week chasing vendors, scheduling access, and re-entering the same job into two systems is real spend on the portfolio, and none of it lands on a building. So a property that consumes an unusual share of office time looks exactly as cheap as a property that runs itself.
How the number becomes available
The fix is not a new reporting habit. Someone building a cost per unit spreadsheet by hand produces one honest month and then stops, because it takes four days and it is stale on the fifth.
What makes the number available is joining the three records at the point they are created. The work order carries the unit. The vendor invoice carries the work order, so the dollars land on the unit instead of on a general repairs account. Time gets logged against a property rather than into a payroll total. Once those live in one connected picture of the portfolio, cost per unit and cost per building are simply things the picture knows, at any moment, without anyone assembling them.
Then the repetitive part comes off people. Automation reads invoices as they arrive, matches them to the work order they belong to, and posts them to the right unit. It flags the unit that has crossed its third call this quarter, the invoice that came in above the vendor's agreed rate, the building whose spend has drifted past what its fee assumed. The coordinator stops keying invoices into two systems and starts handling the exceptions the system raised.
A look at a property management company
Consider a property management company running about 900 units across a mix of small multifamily buildings and single-family rentals, doing roughly $7 million a year. Maintenance requests come in through a tenant portal. Vendor bills come in by email and get entered into accounting under a handful of repair accounts. Maintenance techs and coordinators are on payroll, with no time recorded against a property. The owner is confident about the portfolio and vague about the parts, which is the normal condition at this size.
Suppose the company connects the three records: every ticket tagged to a unit, every vendor invoice matched to its ticket, and time logged against the property it was spent on. Within a couple of quarters you would expect the portfolio to sort itself into groups nobody had seen before.
Put a rough number on the tail. If maintenance and vendor spend averages about $1,200 a unit a year across 900 units, that is around $1.1 million of annual spend. If a fifth of those units, call it 180, run about 25 percent above the average, each is absorbing roughly $300 more than the portfolio assumes. That is on the order of $54k a year, concentrated in specific buildings that currently look identical to every other building on the schedule.
What the owner would likely do with that is unglamorous and effective. A few buildings get a capital fix instead of another year of service calls. One vendor's rates get renegotiated against the actual call history, and another gets replaced. Two management fees get revisited at renewal, because the work the property genuinely consumes is finally something the company can show the owner. And the coordinator's week gets shorter, because matching invoices to work orders is no longer a person's job.
How to start
You can do this without changing the software your team works in every day.
- Tag every work order to a unit. Not a building, a unit. It is the level the decisions eventually get made at.
- Make the vendor invoice carry the work order. This one link is most of the answer, because it is what moves dollars from a general repairs account onto a specific property.
- Put hours on properties, not just on payroll. Maintenance techs and coordinators, even roughly. Labor is the spend that is most often invisible and most often decisive.
- Let the flagging run itself. Set automation to surface repeat calls, off-rate invoices, and buildings drifting past what their fee assumed, so it is a standing signal rather than a quarterly project.
The takeaway
You are not missing the data on what your portfolio costs. You are missing the joins. The ticket, the invoice, and the hours are all recorded, and they never meet, so the spend can only be read as a portfolio total and never as the thing you actually manage: a unit, a building, an account. Connect the three at the moment they are created, and cost per unit stops being a research project. Start with one link, the invoice to the work order, and see how much of your repair spend turns out to be concentrated in a handful of properties you were treating like all the rest.
Every business has a number like that hiding in it.
Text us where your team loses its time, and we’ll put a real number on yours, then show you what’s worth organizing and automating first. No forms, no sales call.