Features

August 10, 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 actually cost you.

Most Shopify purchase order tools skip that step entirely. 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:

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 actually 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:

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 actually 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. A 5% discount on a $2,000 order isn't 5% off any one item; it's a few cents off every unit, proportional to what that line cost before the discount.

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 what your current inventory actually cost across every batch — 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?

No. Shopify stores exactly one cost-per-item value on a variant, and it's whatever was written to it last — there's no built-in concept of discount allocation or a running average across purchase orders. Any app that pushes a raw invoice total per unit will overwrite that number with something less accurate than what you actually paid.

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 actually something to allocate.

Does Reorda read my current average cost back out of Shopify first?

No — Shopify doesn't reliably expose average cost for you to read back, so Reorda keeps its own running total per shop and per product, seeded from the purchase orders you enter and updated every time you receive stock. That local number is what blends with each new landed cost before being pushed to Shopify.

Related reading