All posts How-tos & templates · 20 Feb 2026 · 8 min read

Why nouz snapshots COGS at the moment of sale — and what that means for your reports.

A COGS snapshot means each sale carries the cost-of-goods that was true at the moment it was sold, not whatever the cost is today. It's why your March margin doesn't flicker when April milk goes up — and the single most important design choice in how nouz computes profit.

Ibrahim Ölmez Founder, nouz · serial entrepreneur

Most accounting tools, especially the spreadsheet-shaped ones, hold COGS as a "live" value — the current cost of an item is the cost the system uses for every report, past or present. That sounds reasonable until April milk goes up 14% and your March margin retroactively gets 1.8 points worse. We built nouz the other way. This is the explainer.

In plain English

When you sell a cappuccino in nouz, the system writes down five things into the sales record: when it sold, what it sold for, the cost of the beans at that moment, the cost of the milk at that moment, and the cost of the cup. Those numbers are frozen on the record. Tomorrow you can change the price of beans; that cappuccino's margin is unaffected. The next cappuccino sale picks up the new bean price.

That's a snapshot. The alternative — "live" COGS — would look up the current bean price every time it ran a report. Same coffee, different reported margin depending on when you looked.

Live vs snapshot, side-by-side

Concrete example. You sell a flat white for €3.80 every day. Bean cost is €0.42 in February, then jumps to €0.51 in March. Here's what each model reports for February's margin, read in April.

ModelFeb margin reported (read in Feb)Feb margin reported (read in April)Comment
Live COGS€3.38 (88.9%)€3.29 (86.6%)February silently changes; your historical reports lie
Snapshot COGS (nouz)€3.38 (88.9%)€3.38 (88.9%)February is February, forever
The difference compounds. On a single cappuccino, 2.3 points of margin is rounding noise. Across 6,000 cappuccinos in a quarter, it's €540 of "phantom" margin loss that never actually happened. Worse, it makes it impossible to tell which months were genuinely better.

Why it matters for reporting

Three things break under live-COGS, and all three matter:

  1. Year-on-year comparisons become noise. "Was March 2026 better than March 2025?" is unanswerable if both numbers shift whenever you update a unit cost.
  2. Margin investigations lead nowhere. "Why did July's margin slip?" Owner re-runs the report in October; the slip is partly real (genuine July drift) and partly virtual (October prices retroactively applied). Untangle-able.
  3. Trust in the dashboard erodes. Owners stop believing the numbers after the third "wait, didn't this say 32% last week?" Once trust is gone, the daily routine collapses too.

The snapshot model is more expensive to engineer — you're writing more data per sale — but it's the only model where the question "how did we do in March?" has a stable answer.

Edge cases (and how nouz handles them)

Snapshots are clean in the simple case. The interesting questions are the edges:

What if I correct a wrong COGS retroactively?

You can — but it has to be a deliberate action. In the products screen, when you update a COGS, nouz asks: "apply from today forward (default) or recast historical sales (need a reason)?" The default protects your reporting. The opt-in recast is for when you genuinely entered a wrong value on day one and want to fix it across all prior records. Walkthrough here.

What about ingredient-level updates?

Same logic, one level deeper. Update the milk ingredient cost: today's and tomorrow's cappuccinos use the new milk cost; yesterday's and last week's keep theirs. The ingredient breakdown is part of the snapshot, not a live reference.

What about products I delete?

Delete a product today, and past sales of that product keep their snapshots intact. Your historical reports continue to read correctly. The product just stops being available for new sales. See deleting a product for the details.

I almost moved off nouz to a cheaper tool last year. The deal-breaker turned out to be exactly this: the cheaper tool re-ran historical margin against current COGS. My profitable July silently turned into a 1.4-point worse July. Came back the same week.

What it changes about how you work

Three practical implications for the daily flow:

  • Update COGS the day the supplier price changes. Future sales will pick up the new cost; you're not "polluting" the past, so there's no downside to acting fast.
  • Trust your historical reports. A green month from six months ago really was green at the time. You can use last year's numbers as a planning baseline without caveats.
  • Don't use snapshot mismatches to "audit" your team. A barista who sold a cappuccino at last month's bean price isn't cheating — they sold at the price that was correct at the time. The snapshot reflects reality.
One subtle benefit. When you change a product's sale price (not COGS), historical sales also keep their snapshot. A €4.20 cappuccino sold in February stays €4.20 in February's reports, even after you raise the menu to €4.40 in March. Same logic, both sides of the margin formula.

For the full mechanical detail, the help-centre explainer on COGS calculation covers the database-level shape. For the broader context on why we made this call so early in the product design, see our April 2026 release notes — there's a section on what we'd build differently and what we'd build exactly the same. Snapshot COGS is firmly in the second bucket.

FAQ

Does this mean my reports are always slightly out-of-date?

No — they're always accurate for the period they cover. Today's report uses today's costs. March's report uses March's costs. Both are correct for their period. The thing that's "out of date" is the inability to retroactively apply today's costs to March, which is the feature, not the bug.

What if I want to model "what would last year have looked like at today's costs"?

Statistics has a "re-cast at current cost" view that runs this scenario without modifying the underlying snapshots. Useful for planning, separated cleanly from the historical record. See cost-recast view.

Is snapshot COGS standard accounting practice?

Yes, in the formal sense — financial reports always reflect the cost at the time of sale, not the cost at the time the report was run. Many small-business tools take shortcuts here for simplicity; nouz doesn't.

Does the snapshot include VAT, tax, transaction fees?

No — those are computed at report time against the rules in effect at the time of sale (VAT rate stored per shop, fee rate stored per payment method). The snapshot is specifically the COGS — what one unit cost you to produce or buy — not the tax computation.

What's the storage cost of all these snapshots?

Negligible at small-business scale. A snapshot per sale is roughly 200 bytes; a busy café doing 400 transactions a day generates about 30MB a year. Storage is not the limiting factor — accuracy of historical reporting is.