The price on a supplier's invoice is rarely the whole story - shipping, duties, and fees all add to what a unit really costs you. Stockroom captures these at receiving so you can see true unit costs and true margins, and keep Shopify's costs accurate. Landed costs are for your eyes only; they never appear on the PDF or email your supplier sees.
Add charges to a purchase order
In the PO's Cost summary, use Add shipping or Add adjustment to record freight, duty, or other charges. For each charge, choose how it spreads across the items with Split across items:
Split by value (default) - higher-value lines absorb more.
Split by quantity - evenly per unit.
Split by weight - by each line's weight.
Custom split - type an amount per line.
Don't allocate - leave it out of unit costs.
If you split by weight, Stockroom uses each product's weight from Shopify, and you can override it per line. When a line has no weight, that charge falls back to splitting by value.
As you add charges, the margin shown beside each line's retail price updates live to the landed figure - the item's cost plus its share of the charges - so you can see what a product will really make before the order is placed. Charges set to Don't allocate leave margins untouched. To see the landed figure itself on every line, open Columns above the items and tick Landed cost: on a draft it is the estimate - the discounted unit cost plus the line's share of the charges - and once a delivery is received it becomes the cost the receipt booked.
Correct costs as you receive
Freight invoices often arrive after the goods. That is fine - charges stay editable until the purchase order is closed, and each receipt records the costs that were current at that moment. If receipts are already booked when a charge changes, Stockroom re-books their landed costs so late freight still reaches your true unit costs - it confirms with you first whenever a change touches existing receipts. In the Receive stock panel you can also:
Edit each line's Unit cost to match the supplier invoice. This updates the receipt only - the PO stays your agreement.
Enter the supplier Invoice # for that receipt.
When a PO carries charges, the receive panel shows a Landed / unit column so you can see the true per-unit cost as you go. If a line carries a Discount, landed cost starts from the discounted unit cost - what you actually pay per unit - before adding that line's share of any charges. Costs are always entered pre-discount, on the PO and at receiving alike; Stockroom takes the discount off for you.
Update Shopify to true costs
When you click Receive stock, if receiving at these landed costs would change a product's average cost, you will see an Update costs and prices? dialog:
Update costs - updates Shopify's cost per item, and asks which cost you want: the New average cost or the Latest landed cost.
Update prices - moves selling prices with the new cost, pre-filled to hold your current margin - see Keep your product costs current when you order.
Tick either, both, or neither - the cards are Update product costs and Update selling prices (an unticked card reads Not this time), and the confirm button restates the choice, from Receive & update costs and prices down to Receive only. If nothing would change, the stock is received with no dialog.
Ordering only some of a product's sizes or colours, but the new figures apply across the range? Both cards carry Also update the other variants of these products, with the exact count they will touch - one for costs, one for prices - so a range that shares a cost or a price stays aligned without you editing it one variant at a time. Prices spread exactly as you typed them here.
The two costs answer different questions, and each option shows you its own figure before you choose:
New average cost - blends the delivery into what is already on your shelf. Say you hold 2 units that cost you $14.50 and 1 arrives at $24.50 landed: your cost becomes $17.83, the true average across all 3 units you now own. This is the default.
Latest landed cost - this delivery's cost replaces the old one outright. In the same example your cost becomes $24.50. Choose this if you price off your newest shipment.
Receiving on Shopify POS records quantities only, so this dialog does not appear at the till. Costs are still kept current when your staff receive deliveries there - Stockroom applies the update itself, using whichever of the two costs you last chose, since there is nobody at the counter to ask. It updates costs only - selling prices always wait for the dialog above. If you would rather set costs by hand, turn off Update product costs automatically when stock is received on POS under Settings - Inventory & COGS.
Whichever you pick becomes your default next time, and the dialog still asks on every receive. Afterwards, the purchase order's History records which cost was used and what it moved from, so you can always check back. As with ordering, a PO in a different currency converts at the Exchange rate on that purchase order - set one there first, or cost updates are not offered.
Two cost prompts, two different updates
Stockroom can update product costs at two moments, and they behave differently:
When you mark as ordered - if the PO's costs differ from your products, the Update costs and prices? dialog replaces each product's Shopify cost with the PO cost. It doesn't average - nothing has arrived yet.
When you receive - the same dialog sets each product's cost to whichever of the two costs above you choose, and offers the average by default.
The choice between the two costs only shows when you already have stock on hand at a different cost. With no stock on hand, both come to the same number - the landed cost. And if you matched costs at ordering and then receive at that same cost, there is no prompt at receiving - the costs already agree, so there is nothing to update.
This is worth knowing if you rely on average costing: updating costs at ordering replaces the cost the later average is worked out from. Say you have 10 on hand at $76.00 and 5 arrive at $68.00. Skip the update at ordering and receiving gives you the true average of $73.33. Update at ordering first and your cost is already $68.00 when the goods arrive, so receiving averages $68.00 with $68.00 and leaves it there. If you want costs on averages, leave the update alone when you mark as ordered and tick Update costs when you receive.
An example, with two items on one order. The first has nothing on hand and arrives at a landed cost of $40.00, so its new cost is simply $40.00. The second already has 3 on hand at $18.00 and 2 arrive at a landed cost of $20.00, so its new cost is the weighted average of the two: (3 x $18.00 + 2 x $20.00) / 5 = $18.80. On a purchase order in your supplier's currency, each landed cost is converted at the order's exchange rate first, so what reaches Shopify is always in your store's own currency.
See true costs and margins
On a product's page, the Cost shows a landed figure and the Margin shows a true margin whenever landed cost differs from the plain Shopify cost.
The Landed cost report breaks down what received stock actually cost, grouped by supplier, product, or PO, with totals kept separate per currency.
The received-lines CSV export includes landed columns - the artifact your accountant will want.
Good to know: a receipt received in error can be undone entirely - see Receiving Inventory Against a Purchase Order for the undo flow. Product cost updates already pushed to Shopify are never silently rewritten - the corrected receive offers a fresh update instead.
For an overview of receiving and landed cost together, see Receiving & landed cost on stockroom.app.

