Price each visit by adding its direct costs to its share of agreement costs, then applying your chosen margin.
Key takeaways
- Separate visit costs from costs shared across the agreement.
- Divide shared costs across the promised visits, weighting by effort where needed.
- Choose margin or markup consistently and check the annual total.
- Compare estimated hours with actual visit records.
Why one visit is harder to price than it looks
Many service businesses do not sell single jobs. They sell agreements: a promise to return on a set schedule to maintain equipment, inspect a site, or run a routine check. Microsoft says that organizations "commonly use agreements for maintenance schedules, inspections, or other services that require regular jobs" ( Microsoft). The customer sees one price for the year. You, the estimator, need to know what one visit really costs, because every visit uses technician time, a vehicle, parts, and your scheduling capacity.
Pricing the whole agreement as one lump hides problems. A contract can look profitable on paper and still lose money on the visits that run long, involve a long drive, or need a part nobody planned for. Pricing each visit shows you where the money goes. It also gives you a clean number to use when a customer asks for an extra visit or wants to drop one.
The method is not complicated. The hard part is being honest about the inputs, so most of this post is about them.
Before you price: write down what the agreement promises
Start with the agreement itself, not your rate card. Microsoft describes how field service agreements "automatically generate work orders and invoices with predefined details, frequencies, and date ranges" ( Microsoft). Even if your team tracks everything in a spreadsheet, you need the same four facts for each agreement:
- Scope. What each visit includes. Write it as a checklist, such as the tasks in a preventive maintenance round or the items on an inspection form.
- Frequency. How often a visit happens. Microsoft gives examples such as quarterly elevator maintenance to check system health, or weekly pest control services ( Microsoft). A quarterly agreement and a weekly one can have the same scope and still be priced very differently.
- Date range. When the agreement starts and ends. The date range sets how many visits the contract covers.
- Exclusions. Work the agreement does not cover, such as a repair found during an inspection. Decide now whether that work is quoted separately, so you do not give it away inside the visit price.
Then count the visits. Quarterly means four times a year, so a quarterly agreement that runs for one year has four visits, and the same agreement over two years has eight. The visit count is the denominator for everything that follows. If it is wrong, every figure for an individual visit is wrong too. Write down whether the count assumes every visit happens, and note any visits the customer might skip or reschedule.
Step 1: sort every cost into the visit or the agreement
Take each cost you expect over the agreement period and put it in one of two buckets.
Visit costs happen each time someone goes out. For a single visit, these include:
- Technician time on site, including setup, the checklist work, and cleanup. Use the typical time, not the best-case time.
- Travel time and vehicle costs for that trip.
- Consumables used on that visit, such as filters, cleaning supplies, and small fasteners.
- Parts that you expect to replace during the visit.
Agreement costs are spread across the whole contract. They do not change much if one visit is cancelled, so they belong to the agreement rather than to a single trip. These include:
- Scheduling and dispatch time for the account.
- Billing, invoicing, and account reviews.
- Vehicle insurance, tool upkeep, and the depreciation of equipment the crew uses on this work.
- Software licenses and the training the crew needs to do the work.
- Supervision and quality checks on the account.
Sorting is where many estimators go wrong. A cost that feels like overhead can be traced to one visit, such as a single replacement filter. A bulk supply order used across several visits needs allocating to the visits that use it. When you are unsure, ask one question: if this visit did not happen, would the cost disappear? If yes, it is a visit cost. If no, it is an agreement cost.
Management often needs more detail than a single total. OpenStax notes that management often needs product costs further categorized as prime costs or conversion costs ( OpenStax). The same idea applies here. Keep the costs you can trace directly to a visit apart from the costs that support the work as a whole. They behave differently when the schedule changes, and you will need to explain them separately when someone asks why the price is what it is.
Keep two columns in your estimate sheet, one for each bucket, and label every line. A line without a label usually hides an error.
Once the buckets are filled, walk through the most expensive visit on the checklist step by step. Start with the drive, then parking, access checks, the work itself, the paperwork, and the drive back. Every step that takes time should land in a visit cost, and every task that happens regardless of the visit should land in the agreement pool. Most missing costs turn up during this walk-through, because the people who did the work remember steps that never made it onto the spreadsheet.
For the labor line, also review paid time and overtime costs.
Step 2: spread the shared costs across the visits
Once the shared costs are separated, spread them over the visit count. The arithmetic is simple: the shared cost for each visit is the total agreement costs for the period divided by the number of visits in that period.
This is the same basic logic used in cost accounting when a pool of costs is divided across units. Here the unit is a visit. A weekly agreement and a quarterly agreement with the same yearly overhead will have very different shared costs for each visit, because the weekly one divides that overhead across far more trips. That is correct. The overhead did not get smaller. It got split more ways.
An equal split is not always fair, because visits differ. A full inspection with a written report takes more time than a short check. If you split evenly, the heavy visits are underpriced and the light visits are overpriced. You have two ways to handle this:
- Weight by effort. Estimate the relative effort of each visit type, for example with a simple multiplier, and divide the shared costs in proportion to that effort. Write the multipliers down so you can defend them.
- Split by visit type. If the agreement has two or three distinct visit types, calculate a shared cost for each type. This takes more work but is more accurate, and it is worth the effort for large contracts.
Watch out for two common errors:
- Dividing by the wrong count. If you divide by planned visits but the customer usually cancels one, your shared cost for each visit will be too low on the visits that actually happen. Add a small allowance for cancellations based on your own history.
- Counting a yearly cost twice. A yearly cost such as a software license belongs in the shared pool once. If you also add it to each visit's direct costs, the agreement will look more expensive than it is, and the visit prices will not match the annual total.
Check the shared pool itself before you divide it. Ask whether each cost in the pool belongs to this agreement or to the business as a whole. Insurance on a company vehicle that serves many accounts, for example, may need only a share allocated to this agreement, based on how much the vehicle works on it. Write the basis for that share next to the number, such as the share of crew hours or the share of visits, so the allocation can be explained later.
Add the visit costs to the allocated shared costs to find the cost floor: what that visit costs to deliver before any profit. Round it up to a figure you can quote easily, and then recheck the annual total after rounding, because small rounding differences add up over many visits.
Illustrative example: allocate shared costs
Suppose an agreement has 10 equally demanding visits and illustrative shared costs of $10000. Dividing $10000 by 10 allocates $1000 to each visit. If illustrative direct costs are $1000 for each visit, the cost floor is $2000. That figure covers direct and shared costs; apply your chosen margin to calculate the price.
Step 3: add margin and test the result
Now build the price. For each visit type, the price is the visit costs plus the shared cost allocated to that visit plus the margin.
Margin is the part that keeps the business going. It covers risk, slow periods, rising costs, and profit. Choose the percentage with the people who own the pricing decision, and write down the reason for it. A margin that nobody can explain is hard to defend when a customer pushes back.
Be careful with the words markup and margin. A markup is calculated on cost. A margin is calculated on price. Because the percentage is taken from a different base, a markup that sounds generous can produce a smaller margin than you expect. If you choose margin on price, the price is the cost divided by one minus the margin percentage. Pick one method, use it consistently across all agreements, and check your math on paper before you publish a price.
If you enter the result into software, review markup and margin settings before saving the estimate.
Then test the result. Run these five checks before you send an agreement to a customer:
- Does each visit type cover its direct costs on a bad day? Include a long drive, extra parts, and a second trip for a missing tool. If the price fails on a bad day, the margin is too thin for that visit type.
- Does the annual total cover the full agreement? Add the visit prices across the visit count and compare that total with the agreement's full cost plus margin. If the totals do not match, a visit type or the shared pool has been dropped.
- How does it compare with a one-off visit? A recurring visit may earn a lower rate than a single call-out, because the customer commits to volume. That discount should be explicit and reasoned, not accidental. If the agreement price is far below a one-off price for the same work, check whether shared costs were left out.
- What happens if the schedule changes? Model one cancelled visit and one added visit. If cancellations push your margin below the level you chose, the agreement needs a clear cancellation term, or the price needs more margin.
- Does it match real hours? Compare the estimated visit time with the time crews actually logged on recent visits. Large gaps are the first thing to fix.
When you show the price to the customer, present the price for each visit and the annual total together. That way the customer sees what each visit costs and what the commitment is worth over the term.
Applying the steps to a quarterly maintenance agreement
Picture a building owner who wants quarterly elevator maintenance to check system health. Microsoft uses a scheduled example like this when it describes agreements ( Microsoft). Here is how the three steps apply, with letters standing in for the figures you would use.
Step 1. The scope is a checklist of maintenance tasks. Visit costs are the technician's time on site, the drive to the building, the consumables used during the check, and any part you expect to replace. Agreement costs are the scheduling, the invoices, tool upkeep, training on this equipment type, and the supervisor's review of the account. Total each bucket. Call the visit costs V and the agreement costs S.
Step 2. The agreement runs for one year, which gives four visits. Each visit gets an equal share of the shared pool: S divided by four. If one visit is heavier, for example because the crew runs a full diagnostic once a year, weight that visit more heavily rather than splitting evenly.
Step 3. For each visit, apply your chosen margin to V plus the allocated shared cost. Add the four visit prices and compare the total with the full-year cost plus margin. Then test it. Run a long drive on one visit, a cancelled visit, and the rate for a one-off repair call at the same building. If one cancelled visit pushes the year below your target margin, add a cancellation term or raise the price.
The same walkthrough works for weekly pest control. The difference is the visit count. With weekly visits, the shared pool is divided into many more pieces, so each visit carries a much smaller share. Check the visit costs, such as drive time, consumables, and time on site, alongside that allocation.
Common mistakes to avoid
- Pricing only the work you can see. Travel, drive time, and the time spent resetting between jobs are often missing from the visit estimate. They add up quickly across a year of visits.
- Forgetting the agreement's own overhead. Scheduling, invoicing, and account management are real work. If they are not in the shared pool, the visit price looks better than the agreement actually is.
- Letting repairs hide inside the visit price. An inspection can find a fault that needs a repair. If the agreement says nothing about repairs, decide how they will be quoted before the visit, not after.
- Using old rates. Wage rates, fuel, and parts costs change. A price built a year ago may not cover this year's visits.
- Treating every agreement the same. A two-visit-a-year inspection and a weekly service round carry different risks. Price each agreement on its own numbers.
When to reprice the agreement
Reprice when something changes the cost or the visit count. Examples include a new frequency, a larger site, a change to the scope checklist, new equipment that needs different tools or training, a rise in parts or fuel costs, or a pattern of cancellations. Do not wait for the renewal date if a change affects a large share of the visits. A smaller change can wait for renewal, but note it in the account file so the next estimator sees it.
A simple way to keep the numbers honest
Record the actual time, parts, and mileage for every visit in the first few months of a new agreement. Compare them with your estimate each quarter. When the gap is large, find the cause: a longer task list than planned, a part that fails more often than expected, or a drive that takes longer on a busy route. Then update the estimate. Estimates that never change tend to drift away from what the work actually costs.
Keep the method the same from one agreement to the next, even when the details differ. A consistent method makes it easier to compare agreements, spot an underpriced visit type, and explain a price to a customer. The method matters more than any single number in it.
Your next step
Today, take one current agreement and check its visit count against the schedule. Then label each estimate line as a visit cost or an agreement cost before recalculating the price.
Related guides: Minnesota best value cap: 20 percent or one project · Bid risk checklist: 7 checks on price, bonds and withdrawal · 5 checks to set a material price after tax and discounts.
Common questions
Should every visit have the same price?
Use the same price when visits require similar effort. Weight the shared allocation or separate visit types when the work differs.
What should you check when a customer cancels?
Check whether the remaining visits still cover the agreement costs and your chosen margin. Use that result when reviewing the cancellation term or price.
Is markup the same as margin?
No: markup uses cost as its base, while margin uses price. Check which method your estimate uses before applying a percentage.