---
title: "Build a Job Pricing Spreadsheet That Covers Overhead, Card Fees, and Margin"
description: "Build a three-tab contractor estimate spreadsheet with reusable rates, job assemblies, card fee inputs, and actual cost checks."
url: "https://www.novatori.us/field-notes/contractor-job-pricing-spreadsheet/"
source: "Markdown twin of https://www.novatori.us/field-notes/contractor-job-pricing-spreadsheet/ — generated for AI agents."
---
Field notes

# Build a Job Pricing Spreadsheet That Covers Overhead, Card Fees, and Margin

Build a three-tab contractor estimate spreadsheet with reusable rates, job assemblies, card fee inputs, and actual cost checks.

Published October 23, 2026

If you start each quote from an old estimate, an outdated material cost can follow you into the next job. This three-tab workbook gives you one place to update costs, reuse common work, and check the finished job against the quote.

- **Rates** holds your current costs.
- **Assemblies** groups the inputs for one unit of repeat work.
- **Estimate** applies those units to a job, calculates its price, and records actual results.

Copy the headings and formulas into Excel. All example quantities and prices below are illustrative. Enter your own costs and payment terms.

## 1. Enter current costs in Rates

Put these headings in row 1:

 A: Item codeB: DescriptionC: UnitD: Unit costE: Last updatedLAB-OWNEROwner laborhourEnter your costEnter datePOST-4X44x4 posteachEnter your costEnter dateTRAVELTravel allowancetripEnter your costEnter dateOH-JOBOverhead allocationjobEnter your costEnter date

Include your labor cost when you will do the work. In this layout, labor belongs in an assembly, travel is charged by trip, and the per job overhead allocation is added once on Estimate. Count each cost once.

## 2. Build repeat work in Assemblies

Put these headings in row 1. This hypothetical assembly lists the inputs for **one** fence section; replace the quantities with your own estimate.

 A: Assembly codeB: Item codeC: Quantity per unitD: Unit costE: Cost per unitFENCE-SECTIONPOST-4X41FormulaFormulaFENCE-SECTIONLAB-OWNER2FormulaFormula

In Assemblies!D2, pull the current cost for the item code in B2:

 =XLOOKUP(B2,Rates!$A:$A,Rates!$D:$D,"Missing rate")

[Excel XLOOKUP](https://support.microsoft.com/en-gb/excel/functions/xlookup-function) returns a value from the matching row. In E2, enter =C2*D2. Copy both formulas down the assembly rows. Resolve a “Missing rate” result before quoting.

Keep the per job overhead item out of an assembly priced per fence section. Otherwise, each section would add another full job allocation.

## 3. Set up one job in Estimate

Describe the scope before entering quantities. Put these headings in row 1 and use rows 2 through 11 for job lines:

 A: ScopeB: Assembly codeC: Job quantityD: Cost per unitE: Estimated costF: Actual costDescribe the workFENCE-SECTIONEnter sectionsFormulaFormulaFill after job

In Estimate!D2, total the costs for the assembly code in B2:

 =SUMIF(Assemblies!$A:$A,B2,Assemblies!$E:$E)

In E2, enter =C2*D2. Copy both formulas down for other job lines. Check each code against Assemblies: an unmatched code can return zero.

Use column A for the labels below and column B for their values. These cell addresses make the quote formula copyable. If you add job lines beyond row 11, move the summary below them and update its references.

 CellLabelEnter or calculateB13Estimated assembly cost=SUM(E2:E11)B14Number of travel tripsEnter the estimated tripsB15Estimated travel cost=B14*XLOOKUP("TRAVEL",Rates!$A:$A,Rates!$D:$D,"Missing rate")B16Estimated overhead=XLOOKUP("OH-JOB",Rates!$A:$A,Rates!$D:$D,"Missing rate")B17Other estimated job costsEnter costs outside the assemblies, or 0B18Full estimated cost before fees=B13+B15+B16+B17B19Target marginEnter a percentage, such as 25%B20Applicable card fee rateEnter a percentage, such as 2.9%B21Fixed card feeEnter the charge for one transaction, such as 0.30B22Quoted priceFormula in the next sectionB23Estimated payment fee=B22*B20+B21B24Estimated margin after fee=(B22-B18-B23)/B22

Check that B18 includes all expected labor, materials, travel, overhead, and other job costs. A “Missing rate” error means you need to add or correct a Rates row.

## 4. Calculate the fee aware quote

This calculation assumes **one card transaction**, with a percentage fee on the **entire quoted price** and one fixed fee. It works when the card fee rate plus your target margin is less than 100%.

In Estimate!B22, enter:

 =ROUNDUP((B18+B21)/(1-B20-B19),2)

Here, B18 is the full estimated job cost before payment processing, B20 is the percentage fee, B21 is the fixed fee, and B19 is the target margin **after** that fee. Enter the rates as percentages in their cells, and check that B19+B20 is less than 100% before quoting.

For an **illustrative** $300 job cost, 2.9% fee, $0.30 fixed fee, and 25% target margin, the unrounded result is about $416.50. ROUNDUP makes the quoted price **$416.51** so it meets at least the target margin to the cent.

[Stripe lists 2.9% plus 30¢](https://stripe.com/pricing) per successful domestic-card transaction under its standard online card pricing. That is an example input, not your rate. Replace both fee cells with your terms. If only part of the price incurs a fee, or the job has multiple transactions, adjust the calculation for those payments before using it.

Margin uses the selling price as its denominator. A 25% markup does not produce a 25% margin. For the broader lesson on job costs and margin, see [How to Price Cleaning Jobs and Quote Them Profitably](https://www.novatori.us/field-notes/how-to-price-cleaning-jobs).

## 5. Save the quote and check the finished job

Before sending the quote, duplicate the Estimate tab or workbook. Name the copy with the job and date, then paste values over its formulas. This preserves the amount you sent when you update Rates for a later job. Keep a working copy for the next estimate.

After the job, put the actual cost of each assembly line in F2:F11. Add these fields below the quote calculation:

 CellLabelEnter or calculateB25Estimated labor hoursEnter the hours used in the estimateB26Actual labor hoursEnter the hours workedB27Actual travel costEnter the costB28Actual overhead allocationEnter the allocation counted for this jobB29Other actual job costsEnter costs outside the assembly linesB30Actual payment feeEnter the fee chargedB31Actual total cost=SUM(F2:F11,B27:B30)B32Realized margin=(B22-B31)/B22

The realized margin formula assumes you collected the quoted price. If you collected a different amount, use the amount collected in place of B22 in both parts of that formula.

Compare estimated and actual labor hours, materials, travel, fees, and total cost. Then update the relevant rate, assembly quantity, or job cost assumption before the next similar quote. For a review beyond one job, use the [trades financial health checklist](https://www.novatori.us/field-notes/trades-business-financial-health-checklist).

Start with one service you quote often. Build its assembly, run a current job through Estimate, and save the dated quote before sending it.

Keep going

## Want to talk through what you just read?

Tell us how your business runs today, and we’ll talk through how this applies to it.

[Talk to us](https://www.novatori.us/contact)
