A Magento SKU without a cost is not a gift. It is an unknown. If your profit tool treats that blank as €0, every order for that SKU looks like extra cash. Net profit goes up. Nobody entered a number. The report just filled the hole.
That is how a dashboard can say Complete while the bank still disagrees.
Yesterday’s net is still:
`` net = revenue − refunds − COGS − merchant shipping − payment fees − custom expenses − ad spend ``
SKU contribution stays revenue − COGS. If COGS was never applied to the line, contribution is not known. It is not “very high margin.”
Two different facts
| What you have | What it means | What a P&L may show |
|---|---|---|
| No ProductCost, line still 0 | Missing | Incomplete — do not treat as final net |
| ProductCost = €0, applied to the line | Known zero | Honest: you sell this unit at zero unit cost |
| ProductCost exists, history not rewritten | Desync | The dangerous one: cost on file, DailyProfit still old |
Known zero is a decision: samples, digital add-ons, a reviewed €0. Missing is a gap. A complete badge must wait until the displayed DailyProfit was recomputed from applied lines — not from the mere presence of a cost row.
Do not install a Magento tracking module or Conversions API to “fix” this. Cost lives on the SKU and the order line. A pixel does not invent COGS.
Why Magento makes the hole easy
Configurable parents, bundles, and “cost on the child only” are normal. Bundle parent cost = 0 is the classic inflate. A parent with one child still missing cost is still incomplete — a partial rollup is not a known kit.
The five usual traps are in COGS mistakes that inflate margin. The new failure mode is quieter: you later type €12 on the SKU, completeness flips to known, and January still uses €0 because history was never rewritten.
Current cost, applied backward
Verid’s v1 model is explicit: the cost you save now is applied to historical sales of that SKU. There is no dated cost ledger, no FIFO, no supplier invoice layer. If January’s real cost was €8 and you enter €12 in September, January is restated at €12.
That is acceptable for an operating P&L if you know it. It is not inventory accounting. If you need month-by-month true cost later, that is a different product.
After a save, affected order lines update, refunds that use those lines recompute, and DailyProfit is rebuilt for the date range of those sales — including days older than 90 days if you can open them on Overview. Until that job finishes, profit data stays Updating or Incomplete. If recalculation fails, it stays incomplete. Fail closed.
What to do this afternoon
- Open Products. Filter missing COGS. Those SKUs are not free.
- Enter a reviewed unit cost. Expect historical days for that SKU to move.
- Overview: Incomplete until coverage is real; Updating while history is rewritten; Complete only after applied lines and DailyProfit match.
- Check a sale older than 90 days if you use last 12 months / all time. That day must change too.
- Bundles: wait until every sold child is known. One missing child keeps the parent incomplete.
Then read yesterday’s net plus one leak. One missing-cost SKU is often the leak.
Where Verid fits
Verid pulls Magento orders over REST and lets you override SKU cost without a module. Completeness is “does the P&L on screen use applied COGS?” — not “does a ProductCost row exist?”
See COGS docs, the Magento connection guide, or the sample dashboard. When you can paste an Integration token the same afternoon, start a 14-day trial — no card. The clock starts after the first successful sync.