A new supplier quotes $9.20 against your incumbent's $9.80. Six percent cheaper on a part you buy 400 of a year. Easy call.
It isn't, and the arithmetic takes about a minute.
The equation
landed = (unit × Q)
+ freight
+ (tooling / lifetime_Q) × Q
+ carrying × (MOQ − Q) × unit × (holding_years / 2)
+ terms_cost
Only the first term appears on the quote. The other four decide the answer.
Carrying cost is conventionally 20–25% a year of the value sitting on your shelf — capital, space, insurance, obsolescence. Use 22% if you have no better number; being roughly right beats ignoring the term.
Terms cost is the working capital the payment terms take from you:
terms_cost = spend × annual_capital_rate × (their_days − your_baseline_days)/365
Worked, at Q = 400/year
| Term | Incumbent | New supplier |
|---|---|---|
| Unit × Q | 9.80 × 400 = $3,920 | 9.20 × 400 = $3,680 |
| Freight | included | $340 |
| Tooling ($1,800 / 5,000 lifetime) × 400 | $0 (owns fixture) | $144 |
| MOQ carry — MOQ 1,000, so 600 extra held ~0.75 yr avg | $0 | 0.22 × 600 × 9.20 × 0.75 = $911 |
| Terms — net-15 vs net-45, 12% capital | $0 | 3,680 × 0.12 × (30/365) = $36 |
| Landed | $3,920 | $5,111 |
The 6% saving is a 30% increase. Three of the four extra terms would be invisible in a spreadsheet with one column called "price".
The break-even question worth asking instead
Rather than comparing totals, solve for the quantity where the cheaper unit price finally wins:
Q* = (freight + tooling_share + MOQ_carry) / (unit_incumbent − unit_new)
= (340 + 144 + 911) / (9.80 − 9.20)
= 1,395 / 0.60
= 2,325 units/year
You buy 400. You would need to buy 5.8× more before this supplier is cheaper. That's not a negotiation position, it's a different business — and it's a far more useful thing to know than "6% cheaper".
Lead time doesn't belong in the equation
Resist converting it to money. A part arriving in three weeks instead of six is worth a great deal on a job with a customer promise attached and almost nothing on a restock. Converting it to a single currency figure hides that difference behind a number that looks objective.
Compare it as its own column and decide deliberately which kind of job this is. Some jobs are cost jobs, some are date jobs. The failure is letting a sheet sorted by unit price decide silently.
How this gets solved
Every term above except unit price normally lives somewhere the comparison can't see it: freight in an email, MOQ in a PDF footnote, terms in the supplier's boilerplate.
RFQTrace captures price, lead time, payment terms and delivery on the same row for every supplier, because this decision is a comparison across four dimensions. A tool that shows one column hasn't simplified the decision — it has made it for you, using the term that happens to be easiest to retype.