Walk through any plumbing shop's bookkeeping and you will usually find the same soft spot: material purchases. Supply house accounts make buying easy. Techs swing by in the morning, grab what they need, sign a ticket, and go. At the end of the month a statement arrives, someone pays it, and the money disappears into a single big expense line. Somewhere in that process, margin leaks out.
The first problem is that purchases are rarely tied to specific jobs. When a tech signs a ticket, a job name or number should be on it. If it is not, you cannot tell which customer should be charged for that water heater or that box of fittings, and you cannot see what the job really cost.
Set a simple rule: no job reference, no pickup. Most supply houses can add job names or purchase order numbers to tickets, and many provide online access so you can review them. This one habit makes job costing dramatically more accurate.
When the monthly statement shows up, resist the urge to pay it and move on. Compare it to the tickets and bills you already have. You are looking for items you never bought, duplicate charges, price changes you were not told about, and credits for returns that never appeared.
Returns are especially easy to lose. A tech returns an unused part, gets a slip, and the slip ends up in a truck door pocket. Weeks later no one remembers to claim the credit. Statement reconciliation is where you catch it. In Xero, coding each supplier bill to the right job or account as it arrives, and then checking the supplier statement against what is recorded, keeps these errors small.
Markup is the amount you add to the material cost when you bill the customer. It covers more than the part itself. It covers the time spent buying, stocking, and hauling material, the warranty risk if something fails, and the overhead of running the business. Billing materials at cost, or at a token markup, quietly shifts those costs to your own margin.
Many contractors use a tiered markup, where cheap parts carry a higher percentage and expensive ones carry a lower percentage, because the same percentage on a $4 fitting and a $900 water heater do not make sense. The right numbers depend on your market and your costs, but you should be able to explain how you chose them. Check your actual results by looking at material revenue minus material cost on completed jobs. If the gap is thinner than expected, either markup is too low or some purchases are not getting billed.
One of the more common leaks is simply forgetting to bill for materials. A tech uses a handful of fittings, a valve, and some solder on a small job and writes down only the labor. Multiply that by hundreds of jobs and you have real money. A quick monthly comparison of materials purchased versus materials billed can show a surprising gap.
Truck stock complicates this, since parts are bought in bulk and used over time. A lightweight tracking method, like periodic counts of high value items, can reduce shrinkage. Our post on job costing a larger project in phases shows how material tracking fits into bigger jobs.
Contractors who keep consistent volume often have room to negotiate pricing, rebates, or terms. Review your annual spend with each supplier. If you buy a lot from one house, ask about volume pricing or contractor tiers. Keep an eye on price changes, particularly on copper, PEX, and fixtures where costs can move quickly. Updating your price book or markup when supplier pricing rises keeps you from absorbing increases without noticing.
Material purchases are one of the biggest costs in plumbing and one of the easiest to lose track of. Tie every ticket to a job, reconcile statements instead of just paying them, set markup deliberately, and check for unbilled materials. These are small, steady habits that protect margin without raising a single price.
911 Bookkeepers works with plumbing and trades contractors across the Baton Rouge metro and surrounding parishes, reconciling supplier accounts so material costs land on the right jobs.
Take the free 3-minute Financial Triage and find out exactly where your business stands.
Ready to talk now? Book a free 30-minute call