The money layer
How weighted-average cost works
Shopify records the last price you paid. Purser weights every delivery. Here is the difference, with the arithmetic shown.
5 min read
Shopify stores a single unit cost per variant, and a purchase order overwrites it with the price you paid on that order. It is the last price paid, and it is applied to every unit you hold — including the ones you bought at a different price last month.
Why that matters
Say you hold 100 units that cost you $10 each. A new delivery of 20 units arrives at $16, because your supplier raised their price. Shopify now records the cost of all 120 units as $16. Your margin reports think your stock is more expensive than it is, and every pricing decision you make from that screen is made on a false number.
Purser weights it: (100 × $10 + 20 × $16) ÷ 120 = $11. That is what the stock on your shelf actually cost you, and it is the number your margin should be calculated from.
When it is recalculated
On every receipt, including partial ones. Receive 5 of the 20 today and the average moves by exactly the share those 5 units represent. Receive the other 15 next week at a different price again, and it moves again. There is no nightly batch job to wait for and nothing to trigger by hand.
Margin, not markup
Purser shows margin — (retail − cost) ÷ retail. An item costing $10 and selling for $40 is 75% margin. The same item is 300% markup, which is a different and equally valid number that Purser deliberately does not show you, because Shopify's own product page shows margin, and a merchant looking at two different percentages for one product in two browser tabs will not trust either.
