$125M+ in invoices audited — See how CostCrunch catches overcharges
Buyer's Guides

How to Compare Supplier Quotes Line by Line (2026)

Three supply houses quoted the same material list. The totals are $41,880, $42,310, and $43,050.

The cheapest buy is the middle one. This happens constantly, and the reason is that a quote total is not a price — it is a number produced by a set of assumptions about units, freight, delivery, timing, and terms that differ at every vendor.

This is the method for getting to the real number. It is what our quote comparison tool automates, but there is nothing here you cannot do in a spreadsheet, and it is worth doing manually a few times to understand what the automation is actually doing.

A note on vocabulary before starting: this is supplier quote comparison, not bid leveling. Bid leveling is what a general contractor does to subcontractor bids on a scope of work, with plug numbers as the adjustment mechanic. If that is your problem, the process is different — see bid leveling vs. supplier quote comparison.

Step 1: Fix the basis before you look at any quote

The source of truth is your material list, not any vendor's version of it. Your takeoff, your bill of materials, your requisition.

This sounds obvious and gets skipped constantly, because the natural instinct is to open the first quote and start comparing the others to it. Do that and you have made one vendor's line structure the reference, which means anything they omitted is now invisible and anything they added looks mandatory.

Write your list down first, with quantities and your own unit basis. Every quote gets mapped onto it. Lines a vendor did not quote get marked as gaps, not silently dropped.

The practical test: if all three quotes have a different number of lines, you do not yet have a comparison. You have three documents.

Step 2: Normalize item identity

The same physical item has a different name and part number at every vendor. Field Materials calls the mapping problem material aliases, which is a good name for it.

A 3/4-inch copper 90-degree elbow might appear as:

  • "ELL 3/4 CU 90 WROT"
  • "3/4 Wrot Copper 90 Ell C x C"
  • "COPPER FTG 90ELL 3/4 CXC"

Those are one item. Meanwhile these are not:

  • "3/4 Wrot Copper 90 Ell C x C"
  • "3/4 Cast Copper 90 Ell C x C"

Wrot and cast are different products at different prices with different pressure ratings, and a careless match makes the cheaper vendor look cheaper for a reason that has nothing to do with price.

Where this goes wrong most often: anything with a grade, schedule, gauge, alloy, or finish in the spec. Schedule 40 versus Schedule 80. 33ksi versus 50ksi steel stud. G60 versus G90 galvanization. Type L versus Type M copper. These read as near-identical strings and are not interchangeable.

Build the alias map once per vendor and reuse it. The second buy from the same three vendors takes a fraction of the time the first one did, which is the main reason this work is worth doing properly rather than ad hoc.

Step 3: Normalize the unit of measure

This is where the largest errors live, because when a unit basis is wrong the number is wrong by a factor rather than a percentage.

Convert everything to a single basis per item — usually the basis your takeoff uses.

VendorAs quotedNormalized to each
Vendor A$2.84 each$2.84
Vendor B$68.40 per box of 25$2.74
Vendor C$274.00 per C (hundred)$2.74

Read as quoted, Vendor A looks cheapest by an order of magnitude. Normalized, A is the most expensive of the three by 4%.

Watch for: each versus box versus case, per foot versus per hundred feet versus per thousand, pounds versus hundredweight, and any item where a vendor quotes a "package" whose contents are defined in a footnote.

Also check the quantity, not just the unit. A box of 25 when you need 30 means buying two boxes, so your real cost is 50 units and the extra 20 are inventory. If minimum package quantities force overbuying, that belongs in the comparison.

Step 4: Build landed cost

The unit price is not the cost. Landed cost is what it takes to get the item onto the job.

Add, per vendor:

  • Freight. Delivered or FOB their yard? Is delivery free above a threshold, and does that threshold apply to the order or to each shipment?
  • Partial-shipment freight. If four items are backordered, do they ship separately, and does each drop carry its own charge?
  • Minimum-order and small-order fees. These bite specifically on the backorder tail.
  • Fuel surcharges, where they are separate.
  • Tax basis. Which jurisdiction, and is freight taxable in it?
  • Payment terms. 2% net 10 is a real 2% if you can actually pay in ten days. Count it only if your cash position makes it true.
  • Return policy and restocking fees. On a buy where you know you will over-order, a 25% restocking fee is a cost.

The worked example

Same material list, three vendors. The numbers below are illustrative, but the shape is what you will actually see.

Vendor AVendor BVendor C
Quoted material subtotal$41,880$42,310$43,050
UOM corrections (Step 3)+$620$0-$180
Missing lines you had to add+$1,140$0$0
Freight$0 (delivered)$385$0 (delivered)
Backorder second-drop freight+$310$0$0
Small-order fee on backorder+$45$0$0
Subtotal$43,995$42,695$42,870
2% net 10 discountnot offered-$854-$857
Landed cost$43,995$41,841$42,013

Vendor A quoted the lowest number and is the most expensive buy by $2,154, roughly 5%. Two things did it: a UOM basis that flattered the quote, and eleven lines they left off that somebody had to notice.

That last row is the one that costs people money. Vendor A did not quote everything on the list. A comparison that starts from Vendor A's document instead of your own never sees it.

Step 5: Weigh the terms that are not price

A cheaper price on a nine-day lead time is not cheaper if the crew is framing on Thursday.

Score explicitly:

  • Lead time and stock position. In stock, or on a truck next week, or ordered from the manufacturer?
  • Backorder behavior. Do they tell you, or do you find out at the delivery?
  • Fill rate history. What percentage of a line item actually arrives on the first delivery, from this vendor, historically?
  • Delivery windows. Will they hit a specific morning, or is it "sometime Tuesday"?
  • Substitution policy. Will they swap a manufacturer without telling you? This one causes real problems later — see the gap between quotes and invoices.
  • Will-call and counter access. Matters more than it looks for the emergency runs nobody plans.
  • Quote validity window. A 30-day quote on a buy you will place in week six is not a price, it is an estimate.

Raiven's model of ranking on best value rather than lowest unit price — weighing lead time, freight, availability, and rebates together — is the right instinct even if you are doing it in a spreadsheet.

Step 6: Decide whether to split the award

This is the step that has no equivalent in subcontractor bid leveling, where you award a trade package to one sub. In material buying, splitting is normal.

Split when: one vendor is meaningfully better on a subset large enough to matter, both can hit the schedule, and the extra freight and administrative overhead of a second PO is smaller than the saving.

Do not split when: it drops both orders below a free-delivery threshold, the saving is inside the noise of your own estimating accuracy, or the split creates a coordination problem on the same delivery day.

The arithmetic to run: total the split award including both freight charges and both minimum-order positions. Splits look better before you add the second freight bill than after.

Step 7: Record the decision so the invoice can be checked against it

The step everybody skips, and the reason the previous six can end up worthless.

File the awarded quote where the person who will approve the invoice can find it — attached to the job, the PO, or the vendor record. Note what you awarded, at what unit prices, on what freight terms, and what the validity window was.

Nine weeks later, an invoice arrives. If nobody can produce the quote, the only available check is whether the total looks approximately right, and every mechanism in the drift list survives that check.

When the spreadsheet stops working

For a 40-line list and three vendors, the method above takes an hour and a spreadsheet is genuinely the right tool. Do not buy software for that.

It stops scaling on three axes at once:

Line count. Purchaser reports that procurement teams describe meaningful reliability problems above roughly 200 line items across more than three vendors — their figure, self-published, but it matches what purchasing agents describe. On a 500-line list with six vendors, they estimate 2,500 to 4,000 manual data-entry operations per cycle.

Frequency. Once a quarter is a spreadsheet. Twice a week is a job.

Reuse. The alias map from Step 2 is the asset, and a spreadsheet does not accumulate it. Every buy starts over, which is why manual comparison never gets faster no matter how many times you do it.

The honest threshold: if you are doing this monthly on lists under a hundred lines, keep the spreadsheet and use the template. If it is weekly, or the lists are long, or three different people do it differently, the manual process is now the bottleneck.

Frequently asked questions

How do you compare supplier quotes that use different units of measure?

Convert every line to a single basis — normally the unit your takeoff uses — before comparing anything. A price of $2.84 each, $68.40 per box of 25, and $274.00 per hundred are $2.84, $2.74, and $2.74 per unit respectively, which reverses the apparent ranking. Also account for minimum package quantities: if a box of 25 is the smallest unit and you need 30, your real cost covers 50 units.

What is landed cost and why does it matter more than unit price?

Landed cost is the total cost of getting material onto the job: unit prices plus freight, partial-shipment freight, minimum-order and small-order fees, fuel surcharges, and tax, less any payment discount you can genuinely take. It matters because vendors structure these differently — one quotes delivered, another adds freight at the bottom, a third has a free-delivery threshold that applies per shipment rather than per order. Comparing unit prices alone routinely picks the more expensive vendor.

Should I always buy from the lowest quote?

No. The lowest quoted total is frequently not the cheapest buy, for three recurring reasons: the quote may use a unit basis that flatters it, it may omit lines the others included, and it may exclude freight or carry worse payment terms. Lead time and fill rate also carry real cost — a lower price on material that arrives after the crew needs it is not a saving.

Is it normal to split a material award between suppliers?

Yes, and it is one of the main differences from subcontractor bid leveling, where a trade package goes to a single sub. Splitting makes sense when one vendor is clearly better on a large enough subset, both can meet the schedule, and the extra freight plus the administrative cost of a second purchase order is less than the saving. Always total the split including both freight charges before deciding, since splits look better before the second freight bill than after.

How many quotes should I get for a material buy?

At least three is the widely used standard, and it is a reasonable default: two quotes tell you which of two vendors is cheaper, while three start to tell you what the market looks like. The practical limit is your own capacity to compare them properly — six quotes badly normalized is worse than three done carefully, because the errors introduced in reconciliation exceed the price difference you were trying to find.

How do I compare quotes when suppliers use different part numbers for the same item?

Build an alias map: a list connecting your own item description to each vendor's part number and description. Do it once per vendor and reuse it, because the map is the asset that makes the second comparison faster than the first. Be careful with specs embedded in descriptions — wrot versus cast copper, Schedule 40 versus 80, Type L versus Type M, 33ksi versus 50ksi steel stud, G60 versus G90 galvanizing all read as near-identical text and are different products at different prices.

How long does it take to compare supplier quotes manually?

For roughly 40 lines across three vendors, about an hour once you have a method. It scales badly: line count, vendor count, and buy frequency all multiply the work, and the reconciliation error rate climbs as the matrix grows. Purchaser reports procurement teams hitting reliability problems above about 200 line items across more than three vendors, and estimates 2,500 to 4,000 manual data-entry operations for a 500-line, six-vendor comparison — figures they publish themselves rather than third-party research.

What should I do with the quote after I place the order?

File it where whoever approves the invoice can find it, along with what you awarded, at what unit prices, on what freight terms, and the quote's validity window. This is the cheapest control available against price drift between the quote and the invoice, and it is skipped almost universally. Without the quote at hand, the only practical check on the invoice is whether the total looks about right, which misses unit-price drift, substitutions, and unit-of-measure errors entirely.


The single highest-value habit in this whole process is Step 1: compare everything against your own list rather than against the first quote that arrived. Missing lines are the most expensive error in material buying and the easiest one to make, because a quote that is missing eleven items looks like the cheapest quote until somebody checks.

The second is Step 7. A perfect comparison that nobody can reference nine weeks later has produced a decision, not a control.

Try CostCrunch free on your own quotes and see the normalized comparison without building the spreadsheet.

Last verified: August 19, 2026. Third-party figures are attributed to their source and vendor-published statistics are labeled as such — if something here is out of date, tell us and we'll correct it.

Published on October 14, 2025 by Alex Preston · Updated August 19, 2026
Back to Blog

Stay Updated

Subscribe to our newsletter to get the latest insights and tips delivered directly to your inbox.