Reorda / Blog / Landed cost & weighted average cost on Shopify purchase orders · Updated 2026-09-30 · By Reorda
Written August 12, 2026 · 6 min read
Landed cost & weighted average cost on Shopify purchase orders
Ask a supplier for a quote and you rarely get a clean per-unit price. You get an invoice total, a 5% early-payment discount, and a $40 handling fee tacked on for a small order, and then it's on you to figure out what each item in that box cost you.
If a purchasing workflow only records the raw line unit cost, order-level discounts and fees need a separate allocation step. They push whatever unit cost you typed on the PO straight into the product's cost field, discount and fee left sitting at the bottom of the invoice, unallocated. The number in Shopify ends up wrong, not by a lot, but wrong every single time there's a discount or a fee, which is most orders.
Why a single "unit cost" field isn't enough
Two things go missing when a purchase order pushes a raw unit cost straight to Shopify:
- Order-level discounts and fees never reach the product. A 10% volume discount or a flat handling charge lives on the invoice total, not on any one line, so unless it's allocated back down to each item, the cost you record is the pre-discount price, every time.
- The newest price overwrites everything you paid before. If your last three purchase orders for a product came in at $9.50, $10.20 and $9.80, your true cost of goods is a blend of all three, not whichever number happened to get typed in most recently.
Both errors are small individually. Compounded across every reorder, for every SKU, they quietly drag your margin numbers away from reality, right up until a customer like the one who prompted this feature asks a very direct question: "why doesn't the cost in Shopify match what I paid?"
How landed cost allocation works
On a Reorda purchase order, you can enter a discount as a percentage or a flat amount (the two are mutually exclusive, pick one), plus a separate handling fee. At receiving time:
- The PO subtotal is calculated from every line's quantity × unit cost.
- The discount and handling fee are allocated across the received lines proportionally to each line's share of that subtotal, a line that was 40% of the order absorbs 40% of the discount and fee, not an even split per line.
- That gives each line a landed unit cost: what it cost you, extras included, item by item.
Validation happens before any of this touches your data: a discount can't exceed the subtotal, a percentage has to sit between 0 and 100, and a fee can't be negative. Bad input gets rejected at the form, never partway through a calculation.
Blending with what you already have on hand
Landed cost alone only tells you what this shipment cost. Reorda keeps a running average cost and on-hand quantity per product, per shop, its own source of truth, since Shopify doesn't reliably let you read average cost back out once it's written. Every time you receive stock, the new landed cost blends into that running average, weighted by quantity:
new average = ((old qty × old avg cost) + (received qty × landed cost)) / (old qty + received qty)
That blended number, not the raw landed cost of the newest shipment, is what gets pushed to the Shopify variant's cost-per-item field. It's the same running-average logic most accounting systems use for inventory valuation, just applied automatically at the point you receive a PO instead of in a spreadsheet afterward.
A worked example
Say you already have 40 units on hand at an average cost of $9.00. You receive a new PO: 60 units at a $10 unit cost, a 5% discount, and a $30 handling fee. The subtotal is $600; the discount removes $30 and the fee adds $30, netting to the same $600, but the allocation still matters if the PO has more than one line at different prices, since each line absorbs its own share. For a single-line PO like this one, the landed cost per unit comes out to $10.00 even. Blended with the 40 units already on hand: ((40 × 9.00) + (60 × 10.00)) / 100 = $9.60. That's the number that lands in Shopify, not $9.00, not $10.00, but the true blended cost across everything you're now holding.
What this deliberately doesn't do (yet)
The on-hand quantity this tracks is what's arrived through a Reorda purchase order, it doesn't reconcile against sales or manual inventory adjustments in Shopify. That's a conscious v1 simplification, not an oversight: getting purchase-side cost accuracy right first, without trying to become a full inventory valuation system, keeps the number trustworthy for what it's used for, deciding whether a reorder is still worth placing at the price you're paying.
Stop letting discounts and fees quietly skew your Shopify costs
Reorda allocates every PO discount and handling fee down to the line item, blends it with your running average cost, and pushes the honest number to Shopify. $19/month flat, 14-day free trial.
Install Reorda on Shopify →Once your costs are accurate, the next place they matter is deciding whether an order is worth placing at all, see how margin tracking works on a Shopify purchase order , or read about how receiving updates Shopify inventory in the first place.
Frequently asked questions
What is landed cost on a purchase order?
Landed cost is the true per-unit cost of a product once you spread the order-level extras, a supplier discount, a handling or freight fee, across every line item, instead of leaving them as a single number at the bottom of the invoice. An order-level discount or fee is allocated proportionally across its line items before calculating the unit cost.
What is weighted average cost, and why not just use the last price paid?
Weighted average cost blends a new purchase's cost with the cost and quantity of stock you already have on hand, so the number reflects the receipt-based cost blend across recorded batches, not just whatever you paid most recently. If you bought 100 units at $10 and then 50 more at $12, your cost per unit isn't $12; it's a blend closer to $10.67, weighted by how many units came from each batch.
Does Shopify calculate landed cost or weighted average cost natively?
Shopify exposes a cost-per-item field and native purchase order workflows. This article describes Reorda’s allocation and receipt-based running-average calculation, not every native Shopify costing feature.
Does this change what happens if I don't set a discount or fee?
No. With no discount and no handling fee entered, the math is unchanged, you get the same result as pushing the raw unit cost, blended with prior on-hand cost the same way it always was. The allocation step only does anything once there's something to allocate.
Does Reorda read my current average cost back out of Shopify first?
Reorda maintains its own receipt-based running cost and quantity per shop/product. It is updated when you receive stock, and does not fully reconcile subsequent sales or manual inventory adjustments. That local number is what blends with each new landed cost before being pushed to Shopify.