Estimating, quotes and invoicing
Quote any run in one click, and bill what really happened
ServiceProof prices a pickup and delivery the way a transportation company actually charges for one: the driver’s time or a flat rate, the truck that runs it, the extras like a liftgate or wait time, and a fuel surcharge that follows the government’s weekly diesel price. You set the rules once, the quote works out every line, and each line says how its number was reached.
When the customer says yes, the work lands on your dispatch board with every stop in place, or becomes a recurring agreement if it runs every week. When work the customer accepted on a quote is billed by the hour, the invoice is priced from the hours your driver actually worked. And the same engine prices HVAC, plumbing and electrical work, crane rentals and permits included.
This is a module. Take it for quoting alone and keep invoicing where it is, or take both. It runs on your pricing profiles and your charge catalog; it does not need the field app, though a quote is much better when a technician or driver fed it.
Quote a pickup and delivery in one click
Open a quote’s Pricing tab and describe the run: the truck it needs, the stops in order with their pickup and delivery windows, how long loading takes at each one, and any extras. Press Measure legs and every drive between the stops is timed and measured on the map with live traffic, routed as a truck for box trucks and anything bigger.
One pickup, two drop-offs, every drive measured on the map, and a liftgate at the drop.
Then press Price it. The quote works out the base by the method the customer’s pricing profile sets — hourly, flat, per mile, per stop, or hourly plus miles — rounds the time up to your billing increment, holds it to your minimum, adds each charge, takes off any negotiated discount, and puts the fuel surcharge on a line of its own.
Every line says how it was worked out, down to the week’s diesel price and the band it fell in.
- Change the truck, a stop or a window and the quote tells you it needs pricing again before you send it.
- A typed address is found on the map as you save it, so a stop does not have to be a saved site first.
- Lines you type yourself stay exactly as you wrote them; the engine only ever touches the lines it priced.
- The PDF your customer receives prints the units, like 1.5 hrs × $80.00, and the fuel line names the week, the price and the region it used.
Pricing profiles that cascade
A pricing profile is how a customer is priced and billed: hourly or flat, the rate for each kind of hour on each type of truck, the minimum charge and minimum hours, the billing increment, discounts on the base and on extras, how fuel is treated, which hours count on an hourly invoice, and the parts price level. Nobody types a price; the profile decides it.
Profiles cascade, so you only write down what is different. Your company default prices everything. A customer can have a profile of their own, a site can have its own for that customer, and an agreement carries its own for the work that runs under it, so a change-out project at every site prices as the project rather than as break-fix. A profile can also inherit from another one and set only the two or three things that differ.
A bank’s profile sets its own rate, fuel and hours rules and inherits the rest, and every blank says where its value comes from.
Rates by truck type
An hour of driver time on a cargo van and on a box truck are different prices, and so are after-hours, weekend and emergency work. Rates are set by kind of hour, by truck type and by modifier, and a checker tells you which profile a rate came from.
Price books and tiers
What a part costs and what it sells for, with tiers for the accounts that have earned one. An override on a single part is possible and is recorded as an override rather than as the price.
Markup bands
The schedule every shop actually runs and almost none writes down: cheap parts carry more, expensive parts carry less. Bands, in a schedule, applied consistently instead of from somebody’s head.
A cost band per tier, and what a $250 part prices at in each — all configuration.
And money is money. Stored to four decimal places as a
decimal, never as a floating-point number. That sounds like an
implementation detail until you meet a system where a total is
2441.5999999999999 and the reconciliation is off by cents
nobody can find.
Fuel surcharges that follow the pump
Fuel is the cost that moves every week, so the surcharge follows the number the industry already uses: the weekly on-highway diesel price the U.S. Energy Information Administration publishes for your region. ServiceProof fetches it from the EIA, and you can always type a week’s price in by hand.
Each truck type gets its own surcharge schedule, and its band matrix is keyed on the week’s fuel price and on the size of the job, so a $90 delivery and a $900 one can carry different percentages, exactly as your rate sheet says. A schedule can charge a percent of the base, or dollars per hour, per mile, per stop or per job, with a cap if you want one.
Fuel price down the side, job size across the top, and the city zone’s own plus 1.5 points on top.
Your own local adjustment
A plus or minus on top of the matrix for one zone or for the whole region, because a downtown run with its traffic and parking costs more than the open road. A preview works out what any job would be charged before you ever quote it.
Always its own line
The surcharge prints as its own line on the quote and the invoice, naming the week, the price per gallon and the region. A customer whose contract says no fuel is simply marked exempt on their profile, or held to a fixed or capped percentage.
Liftgates, wait time, cranes and permits
Everything a quote can add beyond the base lives in one charge catalog: a liftgate, inside delivery, wait time after the first fifteen minutes, an extra stop, a crane by the day, a permit at whatever the city charges. Tick the ones a job needs and the quote prices them.
- Any unit — each, per stop, per piece, per pound, per mile, per hour, per quarter hour, per day, a flat fee or a percent of the base, each with a minimum, a maximum, a free quantity and a rounding step.
- Counted from the run. A charge set per drop-off is added once for every delivery on the quote, so nobody has to count them.
- A rate for each truck type, when a box truck’s liftgate costs more than a van’s.
- Negotiated or waived per customer. A profile can give a customer their own rate for a charge or waive it, and a waived charge still shows at $0.00 so the customer sees what they were given.
- Passed through at cost for permits and fees, with no markup and no discount, and you decide whether fuel rides on each charge.
Charged once per drop-off, fuel riding on it, and a higher rate when a box truck does the work.
The customer says yes, and the work is on the board
Accepting a quote, whether in the office, on the technician’s phone or by the customer through their own link, turns it straight into the work it describes. Nobody retypes a stop, and nobody forgets one.
A one-off run
Becomes a job with every leg in order, each stop with its own address, window and loading time, waiting in the zone’s Unassigned column for a dispatcher to put into somebody’s day. The quote’s own job keeps its number.
A few named dates
Become one job for each date, each with all of its legs and its promised windows, and each linked back to the quote that sold it.
A recurring run
Becomes a service agreement on the quote’s own pricing profile, with the schedule you quoted — every Tuesday and Thursday, say — and the customer’s stops covered, so the visits are generated from then on without anybody keying them. Recurring commitments →
A stop that was typed as an address becomes a site for that customer, so it is on the record and covered like any other. And a yes is never lost: if something stops the work being made, the acceptance still stands, and the work can be made again once the cause is fixed.
Hourly work, billed from the hours actually worked
For hourly work the customer accepted on a quote, the invoice is priced from the driver’s own clock rather than from the estimate. Every visit records when the driver set off, arrived, started and finished, and the invoice reads that clock for the whole job, so what you bill matches what the stops really took.
- Which hours count is the profile’s choice: only the time at and between the customer’s own stops, or the drive out from the depot as well.
- Rounded and held to your minimum. On a 15-minute increment a 70-minute run bills 1.25 hours, and a 45-minute one bills your one-hour minimum.
- Or bill it the way you agreed: the hours you quoted, the actual hours with no minimum, or the actual hours capped at the quote.
- The right rate and the right week. The hour is priced for the truck that actually ran the job, and the fuel surcharge uses the price for the week the work was done.
- Billed once, and only when finished. A visit still under way is named rather than guessed at, and the same work cannot be billed twice, because a second invoice for it is refused when it is priced, made from the quote or posted.
- A flat-rate job simply bills the price you quoted.
The visits and minutes behind every billed hour are kept with the invoice, so when a customer asks about a bill, the answer is already on the record.
The same engine for HVAC, plumbing and electrical
Couriers came first, but nothing here is courier-only. A trade quote prices a technician’s hour the way a courier quote prices a driver’s, and it carries the same charges, the same profiles and the same legs.
Cranes and rentals
A crane by the day or by the hour, a lift for the week, each with its own rate, minimum and cost, on the quote as its own line.
Permits at cost
Passed through exactly as the city charges them, with no markup and no discount, and not taxed unless you say so.
Projects at every site
A change-out program across a customer’s buildings runs under its own agreement and its own profile, so it prices as the project while the same customer’s break-fix calls keep their usual rates.
Parts runs and pickups
Any trade can quote legs: a run to the supply house, a pickup from a customer’s warehouse, a delivery to the job, each measured and priced like a courier’s.
After-hours and emergency
An after-hours, weekend or emergency hour is a modifier on the same rate, not a second price list to keep in step with the first.
Subcontracted labor
Set a subcontractor up like any driver or technician and mark them as a sub with their own pay rate. They are paid as a vendor, outside payroll taxes, and their work bills to the customer at the customer’s usual rate.
One document, two stages
A quote and an invoice are the same thing at two different stages of its life. So an accepted quote becomes the invoice — it is not retyped, re-priced, or rebuilt from memory by somebody in the office at nine at night. The number the customer agreed to and the number on the bill cannot drift apart, because there was only ever one of them.
Estimating has its own screen, because an estimator and a billing clerk are doing different jobs at opposite ends of the same chain. Every quote, and what stage each one reached.
The estimate book, and the stage each quote reached.
Underneath, though, it is one record. A quote and an invoice are the same row at two points in its life — which is why the billing book shows both, and why an accepted quote is never retyped into anything.
Quotes and invoices in one book — because they are one kind of record.
-
It starts as a quote
Priced by the customer’s own pricing profile, from your own rates, charges and parts. Built on the job it belongs to, so the photographs and readings the technician captured are already attached to the thing you are quoting from.
-
It is issued
And what goes out is stored as it went out. A document you re-render next year against today’s rate card and today’s address is a document the customer never received — and handing them that in a dispute is worse than having nothing.
-
Somebody decides
Won or lost, on the record, with a reason from a list you control.
-
Won, it converts
Same document, next stage, carrying every priced line with it. Hourly work is re-priced from the hours the visits actually recorded, so what you bill matches what happened rather than what the estimate guessed.
-
Posted — and only then does it take a number
An invoice number is allocated at post, not when the row is created. A half-finished document somebody abandons must not eat a number, because a gap in an invoice sequence is a question from an accountant every single year.
The catalog and the supply houses
One catalog, whether the part is being quoted, bought, installed or counted. So the same item has one identity across the estimate, the purchase order and the van.
Parts
Code, description, category, cost and price — and each supplier’s own code for the same item alongside, because two supply houses have never agreed on a part number in the history of the trade.
⚠ Resist “Misc part” as a habit. It is the line that makes stock counts meaningless and margins unknowable, and it is always easier at the time.
Vendors
Who you buy from, and where — a parts counter you pick up from and a depot that delivers are different addresses with different hours, and the technician needs the first one.
One catalog for quoting, buying and installing.
Terms, your account number with them, and the branch the van drives to.
A picture on every part
A part carries its own pictures — the product on a plain ground, the box label with its nominal and actual size — and its documents beside them: the cut sheet, the install manual, the safety data sheet.
One of them is chosen as the picture, and that one shows wherever the part is picked: on the parts list, in the purchase order’s part picker and in the quote’s part search. So the buyer and the estimator choose the 20×25×1 filter they can see, not the code they half remember.
And a part takes notes and custom fields like every other record — Nominal size and MERV rating on a filter, declared once in setup, and every part has the blanks. Custom fields on anything →
Buying it: the chosen picture sits beside the part in the picker.
One part: the chosen picture beside its number, its custom fields, the other picture one press from taking its place, and the spec sheet filed with them.
Won, lost, and why
A quote that is decided is worth more than a quote that fades. Won or lost is recorded, and lost carries a reason from a list you maintain — price, timing, went with the incumbent, never heard back.
Which turns a pile of dead quotes into the only honest answer to “why are we not winning commercial work in the west zone?”
The estimator’s bench
This is the screen somebody prices work on all day, so it holds everything that decision needs in one place — the lines, what the customer will actually see, the evidence, and what was found here last time.
One quote, with the customer, the lines and the total in one view.
A scratchpad that is on no total
Somewhere to park what you are still deciding. It is not on the quote, the customer never sees it, and the price is re-checked when you move it across — so a figure that sat there for a week never quietly becomes a figure somebody is quoted.
Good, better, best
Options on one document rather than three documents to keep in step. And lines that do not print, for the roll-up that shows a customer a number instead of a parts list — they still count toward it.
What the field already found here
Every answer a technician has ever captured at this site — readings, conditions, what they were told — on the quote, while you are pricing it. Not the job: the site, because a building outlives whoever is paying for it this year.
What was asked, what came back, when, and who — read-only, on purpose.
It is deliberately read-only. Pulling a year-old reading into a quote as though it were measured today is how a number nobody re-checked reaches a customer. You read it and you decide.
Evidence on the line itself
A photo of the site belongs to the quote. A photo of the part belongs to the line.
Making the PDF, and what was sent
One press makes the PDF and keeps it. Then you email it, with a line to go with it, to whoever is deciding.
The file is made and kept before anything is sent.
The file you sent is the record, and it is never re-drawn. Re-rendering last year’s quote against today’s rate card and today’s logo produces a document your customer never received — and then hands it to them in an argument as though it were the original. So the bytes are stored at the moment they go.
It also tells you what the customer will not see. If lines are marked not to print — the parts inside a roll-up, usually deliberately — it says so before it goes, not after.
And the job moves itself. A quote for a job goes out, and the job steps off the estimator’s column onto waiting on the customer. The customer says yes, and it lands in the unassigned column for a dispatcher to schedule, with every leg the quote described. Same job number the whole way — nobody retypes it and nobody forgets to move it. What a yes makes →
Your name and your logo, at the top
Every quote, every invoice and every proof of work goes out under your name — not ours. Upload your logo once and it prints in the top corner of all three, with your address, your phone and the licenses you are required to show underneath.
The customer is the title. Your logo sits opposite it.
A logo with a transparent background sits straight on the page — no white box around it. A huge one is shrunk to what paper can show, so a 4,000-pixel file does not make every invoice a slow download.
The preview is what the customer gets, on paper-white, even in dark mode.
Change it tomorrow and yesterday’s invoices do not change. A document you already sent keeps the header it went out with, because the file you sent is the record.
Getting paid
Record the check, the card, the cash or the transfer against the invoice it pays. With just the method and the invoice it is paid in full; type an amount for a part payment. The invoice says what it still owes, and says paid in full the moment it is.
Money the customer already paid, one press from paying this.
A check that bounces is voided with a reason, and the invoice owes the money again. A payment taken off the wrong invoice is not lost: it waits on the customer’s account, and the next invoice they owe on offers to use it.
And the invoice and the payment post to the books by themselves, on the job’s department and zone. Finance: the books, payroll and every export →
And the field half of it
The office is one end. The other end is a technician standing in front of the thing.
A finding on a preventive maintenance visit — photographs of the failed part, readings off the nameplate — raises an event, and the estimator’s queue lights up with the evidence already attached. That is the gap every field service company loses money in, closed with a rule instead of a phone call.
Estimate sits above billing, because you quote a job before you bill it.
A technician can raise the quote from the van. Same document, same pricing, same customer — started in front of the thing instead of described over the phone afterwards.
Parts, labor, photographs, recordings and notes — from the van.
What we saw takes a photograph, a voice note or a supplier’s PDF. The raw bytes go up and the server reads the metadata off them, because a picture shrunk on the handset has already lost the proof that it was taken where and when it says.
And a photograph can belong to one line rather than to the job. The cracked heat exchanger goes on the line asking to be paid for replacing it — so the estimator, and later the customer, can see what the money is for.
Evidence for one item, not just for the job.