Cost-plus pricing in retail: setting margins that hold up
Cost-plus is the method most likely to be quietly wrong - the cost half is incomplete and the plus half is a habit. How to set retail margins that hold up.
Cost plus pricing is the first method almost every retailer uses, and the last one many stop questioning. Take your cost, add a markup, that is your price. It is fast, it is explainable, and it produces a number you can defend in any meeting.
It is also the method most likely to be quietly wrong - because the "cost" half is usually incomplete and the "plus" half is usually a habit.
The formula and where it breaks
Price = cost × (1 + markup). Straightforward.
The problem is that most teams plug in supplier invoice cost, which is not what the product actually costs you. Real landed cost includes freight and duty, payment processing (2-3% of revenue, ignored constantly), returns (which in some fashion categories run past 30%), storage and handling weighted by how slowly the item moves, and shrink.
A 40% markup on invoice cost can be a 6% margin on landed cost. Teams discover this at year-end, not in the pricing decision.
Fix the cost input first. Any markup discipline built on the wrong base is precision applied to a false number.
Markup is not margin
Worth stating plainly because it causes real damage. A 50% markup on €10 gives €15 - a 33% gross margin. A 50% margin on €10 requires a €20 price, a 100% markup.
Mixing these up in a category plan understates profitability targets by a third, and the error compounds every time someone copies last season's file.
Why one markup across a catalog fails
The deeper issue is that cost-plus is entirely inward-looking. It knows what you paid. It knows nothing about what the shopper will pay or what the competitor across the street is charging.
Apply a flat 45% and two things happen at once. On known-value items - the SKUs shoppers price-check and remember - you are visibly expensive, and it colors their read on your entire assortment. On long-tail items nobody compares, you are leaving margin on the table, sometimes a lot of it.
The realistic answer is not to abandon cost-plus. It is to use it as a floor and let market signals set the ceiling.
Making it work in practice
Segment your markup by product role. Traffic drivers, margin generators, and long-tail items should not share a markup. Classifying SKUs by product role is what makes differentiated markup manageable rather than a spreadsheet of one-off exceptions.
Set cost-plus as a hard floor, then optimize above it. Retailgrid treats the floor as an inviolable rule - recommendations can price above it based on competitive position and elasticity, but never below. You get cost discipline without giving up upside.
Recalculate when costs move. Cost-plus assumes your cost input is current. Supplier increases, freight swings, and FX moves invalidate a markup table silently. Anything driven by a stale cost file is fiction.
Check your position on the SKUs that matter. You do not need to be cheapest everywhere. You do need to know where you sit on the items shoppers actually check, which is what competitor price monitoring is for.
Where cost-plus fits
It is the right starting point for long-tail assortment, private label, and any category where competitive data is thin. It is the wrong tool for competitive KVIs, for clearance, and for penetration pricing, where you are deliberately pricing below normal markup to buy share.
It also has nothing to say about resale - if you are a brand, your reseller floor is a MAP question, not a markup one.
Get landed cost right, split markup by role, treat the result as a floor. That is cost-plus pricing that holds up.