SKUmargin shows real net profit per SKU on Noon, after fees, COGS, returns, and ads.
Start free trialNoon COGS Tracking: Dated Cost History Per SKU, Not One Number
Every fee Noon charges you is written down somewhere in Seller Lab. The cost of the product is not, because Noon never sees it, and that makes Noon COGS tracking the one input to your profit that is entirely on you. Most sellers keep one number per SKU, the last price they paid, and that single decision quietly distorts every margin they look at from the second purchase order onward. This post is about doing it properly: what to count, why the cost needs a date, how landed cost works, how to keep it current at catalogue scale, and the mistakes that show up in almost every spreadsheet we have been sent.
What counts as COGS on Noon
Cost of goods sold is what it cost you to have one unit ready to sell, before Noon touches it. On a Noon SKU that usually means:
- The supplier's unit price, in the currency you paid, converted at the rate you actually got.
- Inbound freight to your warehouse or to Noon's fulfilment centre, divided across the units in the shipment.
- Customs duty and clearance on imported stock, divided the same way.
- Packaging you supply: the retail box, inserts, the polybag Noon requires.
- Labelling or preparation you pay for before inbound.
What it does not include: Noon's commission, fulfilment and storage (those are in your transaction view), advertising (statement and Ad Manager), your rent and software (indirect expenses, allocated separately), and your own courier if you ship the order yourself (a per-unit cost, but tracked as shipping rather than COGS so the FBN versus FBP comparison stays honest). Does Noon Seller Lab show your profit? has the full list of what lives where.
Why a dated history beats a single number
Suppose a SKU cost 40 in March and 46 from the July purchase order. Keep one number and you have two bad choices. Overwrite it with 46 and every unit sold from March to June is revalued upward, so last quarter's profit shrinks after the fact and the report you sent your accountant is now wrong. Leave it at 40 and every unit sold from July onward looks 6 more profitable than it is, which is the more dangerous error because it drives repricing and ad spend.
A dated history has neither problem. Each cost entry carries the date it applies from; a sale on 12 May is costed at 40, a sale on 12 August at 46, and both stay that way forever. The March quarter does not move when July's invoice arrives. This is not sophisticated accounting, it is a second column, and it is the difference between a margin you can act on and a margin that changes every time you buy stock.
Two rules make the history behave. First, the date on an entry is when the new cost applies from, not when you typed it; if the July stock started shipping on 3 August, the entry is dated 3 August. Second, the first entry for a SKU applies backward to cover sales before it, because a zero cost on early sales is worse than a slightly wrong one, and the note should say so.
Landed cost: freight, customs, packaging
The supplier price is the easy part. Landed cost is the supplier price plus everything it took to get the unit to the shelf, and on imported goods it is often a fifth or more of the total. The arithmetic is division: total freight for the shipment divided by units in it, customs and clearance the same, packaging per unit from your packaging invoice.
Two traps. Mixed shipments: when one container carries several SKUs, split freight by volume or weight, not by unit count, or the small light SKU subsidises the bulky one and both margins are wrong. Currency: if you paid a supplier in dollars and your bank charged a spread, the cost is what left your account in your currency, not the invoice figure at the mid-market rate.
Put the landed figure, not the supplier figure, in the cost history, and put a note against the entry saying what it includes, so the next person (or you in six months) does not add freight a second time.
Bulk upload and keeping it current
At twenty SKUs you can type costs into a dialog. At two hundred you need a file. The workable routine:
- One sheet per purchase order, exported from your own records: SKU, quantity, landed unit cost, date the stock became available.
- Upload it as a batch rather than editing SKUs one by one. SKUmargin's Products page takes a bulk COGS upload with a date per row and appends to each SKU's history rather than overwriting.
- Reconcile quarterly. Compare the average landed cost in your history with what your accounts say you spent on stock. If they drift, a shipment's freight was missed or double counted.
- Flag SKUs with no cost. A product with sales and no COGS entry is showing you revenue, not profit; a good dashboard marks it amber and refuses to call the number a margin.
Where the cost history shows up
A cost history is only worth keeping if it feeds every number you look at. The places it should reach, and how:
The per-SKU profit table, which should cost each sale at the entry in force on its order date and show the unit cost in force today next to the price, so a SKU whose cost has crept up past its margin is visible without opening anything. The calculator, which should prefill a SKU's current landed cost so a what-if on price starts from the truth. The unsettled orders estimate, which needs a cost to turn estimated revenue into estimated profit. And the reorder decision, which is ROI on the cost you will pay next, not the cost you paid last.
If any of those reads a different cost from the others, you have two sources of truth, and one of them is wrong in a way nobody will notice until the accountant does.
Five mistakes that quietly wreck the margin
- Overwriting instead of appending. Covered above; it rewrites history every time you buy.
- Supplier price as COGS. Freight, duty and packaging missing; the margin is flattered by whatever they cost, which on imports is a lot.
- Averaging across a price change. A blended 43 for the March-to-August example is wrong for every single unit; nothing was ever bought at 43.
- Costing returns at zero. A returned unit that is resellable goes back to stock at its cost; one that is not is a write-off that belongs in the period it happened. Either way it is not free.
- Forgetting the currency spread and the bank fee. Small per unit, systematic across the year.
A worked example, entirely made up
One SKU, two purchase orders, invented numbers.
| Entry | Applies from | Supplier | Freight and duty per unit | Packaging | Landed cost |
|---|---|---|---|---|---|
| PO 1 | 1 March | 40.00 | 5.20 | 1.10 | 46.30 |
| PO 2 | 3 August | 46.00 | 4.80 | 1.10 | 51.90 |
A unit sold on 12 May carries 46.30; one sold on 12 August carries 51.90. If the SKU sells at a net price of 78 after Noon's fees, the May unit earned 31.70 and the August unit 26.10. The seller who kept a single number saw either 31.70 all year (and overspent on ads in September) or 26.10 all year (and under-reported the spring). Neither was ever true.
Cost of goods is the one input where nothing can be pulled from Noon and everything depends on your discipline. A dated history, landed rather than supplier cost, appended by batch and reconciled quarterly, is the whole method. Do that and the per-SKU margin on your dashboard is a number you can price and reorder from; skip it and every other figure in this blog is built on sand.