The real cost of a product: shipping, supplier price lists and weighted average cost
The margin you calculate is only as good as the cost on the product page, and that cost is usually out of date or does not include shipping. We explain how the real cost is calculated and how to keep an eye on your suppliers' price lists.
The product page in your store has a cost price field. Someone filled it in when the product was created and, with luck, someone updates it when they remember. On that number you calculate margins, decide discounts and value your stock. If the number is wrong, everything that relies on it is wrong too.
And it is usually wrong for three reasons: it does not include shipping, it does not pick up price list increases and it does not reflect that you have bought the same product at different prices.
What real cost is
The real cost of a unit is everything it has cost you to have it in your warehouse, ready to sell:
- The purchase price, with the supplier's discounts applied.
- Inbound shipping, spread across what arrived in that delivery.
- Other direct purchase costs, if any (import duties, for example).
Deductible input VAT is not part of the cost. If your activity does not allow you to deduct it, the situation changes; in that case, confirm it with your accountant.
Shipping: the forgotten cost
A €1,000 supplier order with €60 of shipping makes each unit 6% more expensive on average. If you do not allocate it, your margin is inflated by exactly that proportion. The question is how to allocate it:
| Criterion | When it makes sense |
|---|---|
| By value | Products of very different value in the same delivery |
| By units | Products similar in size and value |
| By weight | When shipping depends on weight and you mix light and heavy products |
There is no single right one for everything. Choose the one that most resembles how the carrier charges you, and stick to it.
Weighted average cost
You buy 10 units at €5. A month later, 10 more at €6. How much does each unit you have cost you? If 5 from the first purchase are left when the new ones arrive, the cost is neither 5 nor 6: it is the average weighted by units.
- Value of the previous stock: 5 units × €5 = €25.
- Value of the incoming goods: 10 units × €6 = €60.
- New average cost: (25 + 60) / 15 = €5.67.
Each goods receipt recalculates the average cost with the stock that was there. It is the method that best reflects the cost of what you sell when you buy the same product at different prices, and the one most used in retail.
Two different moments: receiving and invoicing
The goods arrive with a delivery note; the supplier's invoice arrives days or weeks later, sometimes with prices different from those on the order. They are two different moments and should be treated as such:
- On receipt, the stock comes in. The provisional cost is the order's.
- On invoicing, the final cost is allocated, with the actual shipping.
- Whatever is sold in between is valued at the last known cost.
Supplier price lists: what nobody compares
Your supplier sends you a new price list every so often. If you only use it to update the costs that go up, you miss half the information:
- What has gone up, and by how much.
- What has gone down, which also happens and almost nobody looks at.
- What is new in their catalogue.
- What has disappeared. A supplier does not always announce that they are discontinuing something: it simply stops appearing in the price list. If nobody compares the two versions, the one who finds out is the customer who orders it.
And a check that pays for itself: that the supplier charges you what their own price list says. Comparing each order or invoice with the current price list detects pricing errors, which do exist and are almost never in your favour.
From cost to selling price
With the real cost, the margin is calculated on data. But carrying price list changes over to your selling prices has to be a separate, explicit step: a new price list can bring hundreds of increases and you do not want them applied automatically just because you imported a file. Decide the scope (only decreases, only increases, only new items, everything) and review before applying.
The admin work that eats up time
A lot of loss of control over costs does not come from not knowing how to calculate, but from manual work: the supplier sends an Excel file or a PDF with their references and someone matches them to yours line by line. The more the matching is automated (by supplier reference, EAN, internal reference), the fewer errors and the less time.
If your store is still on an old version of PrestaShop, bear in mind that many current purchasing tools already require PrestaShop 8 or later and a recent PHP version. It is another reason to keep the store up to date.
Checklist
- Allocate inbound shipping with a fixed criterion.
- Use weighted average cost and keep the history of every movement.
- Separate the receipt of goods from the supplier's invoice.
- Compare each new price list with the previous one, including what goes down and what disappears.
- Check that what you are charged matches their price list.
- Apply selling price changes after reviewing them first.
How to solve it in PrestaShop
RKR Purchase Manager turns the supplier's file (CSV, XLSX or PDF) into a purchase order: it learns each supplier's format and matches each line to your catalogue by supplier reference, EAN-13, internal reference, MPN and UPC. It stores complete price lists, compares each one with the previous one (increases, decreases, new items and what disappears) and warns you if you are charged more than their own price list; carrying prices over to the catalogue is a separate step with the scope you choose. It calculates the weighted average cost with shipping prorated by value, units or weight, with a history of every movement, and separates receipt into the warehouse, with no prices on view, from cost allocation on invoicing. Compatible with PrestaShop 8.0 and 9.x.