Shopify's new purchase order report set in Analytics, added in October 2026, answers one question well: what did we commit to suppliers, and what have we actually received against it. Three reports, sitting inside the admin, no export to a spreadsheet first. That is genuinely useful if you have been tracking supplier spend in a Google Sheet that one person maintains. It is also not landed cost, and for a Kerala food brand the gap between the two is usually 15 to 40 percent of the number you thought was your cost.
So the honest summary: use the reports for purchasing discipline, keep your margin maths somewhere else, and make sure the cost per item that Shopify carries is the landed one.
What the purchase order reports do and don't cover
The reports read off the purchase orders you raise in the admin. Between them they let you see spend by supplier over a period, what is still open against orders you have placed, and the value of goods received into each location. Received quantity against ordered quantity is the line that earns its keep, because short deliveries on agricultural lots are normal and nobody remembers them at month end.
What sits outside the PO line, and therefore outside the report:
- Inbound freight from the mill, the grading unit or the port
- Yield loss between raw material in and finished goods out
- Packaging, labels, nitrogen flush, cartons, tape
- Job work charges when roasting, grinding or frying is outsourced
- Carrying cost on stock you bought six months before you sold it
- Non-creditable taxes and duty on imported ingredients
Input GST is a separate matter and should stay out of landed cost entirely if you are registered, since you claim it back. Customs duty on an imported ingredient is not creditable in the same way and belongs in the cost.
Why catalogue cost lies for spice, cashew and snack brands
A brand selling imported sneakers can get away with treating the supplier invoice as cost. One pair in, one pair out. A Thrissur snack unit cannot, because the thing you buy and the thing you sell are not the same object.
Raw nendran loses peel. Frying loses water and absorbs oil. Pepper loses moisture in storage and gains it back in a humid Kochi godown. Cashew kernels come out of the shelling line in grades, and your W240 price and your broken pieces price are both derived from one lot cost. Cardamom bought at auction gets graded after you have paid for it.
If your Shopify cost per item is the raw material rate, every margin report in the admin is wrong in the same direction: flattering.
A landed cost calculation you can check
Take a 200g banana chips pouch from a unit outside Thrissur, shipping DTC across India plus some Gulf orders.
- 100 kg raw nendran at ₹42/kg = ₹4,200
- Finished yield after peel and fry, 28 percent = 28 kg chips
- Coconut oil absorbed and consumed, 6 litres at ₹230 = ₹1,380
- Labour and fuel for the batch = ₹900
Batch cost ₹6,480 for 28 kg, which is 140 pouches of 200g. That is ₹46.29 per pouch before it has a wrapper on it. Add pouch, label and flush at ₹9, and inbound movement to the Kochi fulfilment point at roughly ₹1.50 a pouch. Landed cost: ₹56.79.
Now look at what the purchase order report would have told you. The PO was for bananas: ₹4,200 for a run that yielded 140 pouches, so ₹30 per pouch. You would be reading margin against ₹30 when the real figure is ₹56.79. On a ₹130 pouch that is the difference between a gross margin that looks like 74 percent and one that is 51 percent, before shipping, before the COD charge, before RTO.
Push it one step further, because this is where the fine print lives. A three-pouch order at ₹390 with 700g billable weight, surface to a metro, costs around ₹62 to ship and ₹25 in COD handling. Goods cost ₹170.37. You are left with roughly ₹130 contribution on ₹390 before GST treatment and before the one order in twelve that comes back undelivered. One RTO wipes out most of the contribution on the next order.
How to track supplier cost in Shopify when you buy in lots
Kerala buying is lumpy. You pay an agent an advance in the cardamom season, pepper comes in when the price looks right, cashew is bought by the bag and processed over months. Shopify's purchase orders handle the commitment fine. The distortion is timing.
Here is the carrying cost nobody puts in the sheet. Hold ₹8,00,000 of pepper for five months on a working capital line at 14 percent: 8,00,000 × 0.14 × 5/12 = ₹46,667. Spread over 2,000 kg that is ₹23.33 per kg, on top of what you paid the supplier. For a 50g masala pack that is about ₹1.17. Small per unit, real at volume, and completely invisible in any purchase order report you will find in the admin.
Practical approach we use: keep the PO in Shopify for receiving and supplier accountability, then push a weighted average landed cost back onto the cost-per-item field each time a new lot is received. One update per lot, not per order. Most brands can do this with a CSV and Matrixify once a month. If you are receiving lots weekly, it is worth writing a small private app that recalculates and writes cost per item on receipt. We have built that pattern a few times as part of custom Shopify app work, and it pays for itself the first time you catch a supplier price rise that did not get passed through to the price list.
How to see margin by supplier in Shopify
There is no single report that does this, because Shopify does not keep a line between the order you sold and the purchase order the stock came from. Inventory is pooled. A pouch sold today could be from either of two lots.
The join you can actually build:
- Tag or metafield every product with its primary supplier
- Keep cost per item at landed cost, refreshed per lot
- Export order line items with cost, group by the supplier tag
That gives you margin by supplier at a weighted average, which is accurate enough to decide whether to renegotiate. It breaks the moment a SKU has two suppliers, which for raw spice it often does. In that case split the SKU internally or accept that the supplier view is directional, not exact. We get this wrong on the first pass for about a third of multi-source brands and fix it by splitting the SKU.
Purchase order analytics export and ShopifyQL
For anything beyond the on-screen view, export. The reports support CSV download, and the underlying data is queryable in the ShopifyQL editor on plans that include it, which is how you get a supplier spend series by month rather than a single date range. Pipe the CSV into a Sheet with an IMPORTRANGE from your packaging and freight sheet, and you have a landed-cost workbook that takes ten minutes a month to maintain.
If you are on Plus or close to it, pulling orders, inventory and PO data into a warehouse and reporting from there is a cleaner answer than stacking apps. Below roughly ₹3 crore of annual GMV, it is overkill and a Sheet is fine. Say so to anyone trying to sell you a BI stack at that stage.
COGS reporting versus purchase order reporting
Two different questions, frequently confused in briefs we receive. The cost of goods sold report in Shopify Analytics tells you what the stock you sold cost, using the cost per item on the variant at the time of sale. The purchase order reports tell you what you bought. In a month where you bought the whole Onam season's raw material and sold last month's stock, those two numbers have nothing to do with each other, and reading the first as the second will convince you that you had a terrible month.
Use COGS for margin. Use POs for cash and supplier performance. The cost field is the bridge between them, which is exactly why keeping it at landed cost matters more than any report setting.
Batch and lot tracking for FSSAI
Shopify has no native lot tracking. Your FSSAI obligations do not care. You need the batch number, date of packing and best before on the pack, and you need to be able to answer, within hours, which dispatches contained a given lot if something goes wrong.
Three workable options, in rising order of effort:
- Batch as a variant or a separate SKU. Ugly on the storefront, but inventory and cost are accurate per lot and the order record tells you the batch. Workable if you sell a handful of SKUs and rotate lots monthly.
- Batch captured at pick. Your packer scans or writes the lot against the order in a WMS or even a Sheet keyed by order number. Shopify stays clean, traceability lives next door. Cheapest reliable method.
- Line item properties written at fulfilment. A small app writes the lot onto the fulfilment record so the trace is inside Shopify. Best answer for brands exporting to the Gulf, where a buyer or an importer may ask for lot documentation months later.
Whichever you pick, test the recall query before you need it. Pull one lot number, get the customer list, time yourself.
Stock planning for Kerala food brands around Onam and Vishu
Demand is not evenly spread and neither is supply. Onam pulls forward six to eight weeks of orders, including a heavy Gulf gifting component that has to ship air and clear customs before the festival, not during it. Vishu is smaller but tighter. Raw material lead times run the other way: cardamom and pepper are seasonal, cashew depends on the shelling queue, and coconut oil prices move independently of all of it.
Build the plan from received quantity, not ordered. Take last Onam's weekly sell-through by SKU, add the growth you actually believe, subtract the stock on hand, and place POs with enough slack that a 12 percent short delivery on one lot does not stock you out in the peak week. The purchase order reports make that reconciliation quick for the first time, because received versus ordered is on screen instead of in someone's memory.
One more thing for brands selling into the Gulf in AED or USD. Your cost is in rupees and your price is not. If you set an AED price in March and the rate moves two percent by August, that comes straight off margin, because the landed cost did not move with it. Review multi-currency price rounding before the season, not after.
Where to start this week
Pick your top five SKUs by revenue. Work out the true landed cost for each using the arithmetic above, including yield and packaging. Compare it with the cost per item currently sitting in Shopify. If the gap is over 10 percent on any of them, your discounting decisions for the last year were made on bad numbers.
Fix those five, then automate the refresh. If you want a second pair of eyes on how cost, inventory and reporting are wired in your store, our team in Kerala will look at it as part of a free store audit and tell you plainly whether it needs an app or a spreadsheet.


