The COGS report answers two questions your accountant asks every period: what did the goods you sold actually cost, and what is the inventory you still hold worth? Both come from your real receipt costs - the landed cost each delivery arrived at - not a static per-product cost field.
Run it
Go to Reports, pick COGS, and set a date range. Then choose the Method your books use:
FIFO - sales consume your oldest stock first, at the cost that stock arrived for. This is how QuickBooks Online costs inventory.
Weighted average - every receipt re-blends into a moving average cost, and sales consume at that average. This is how QuickBooks Desktop costs inventory.
Match the method to your accounting system and the two will reconcile. Switching the select on the report recomputes it, so you can look at both freely - your books just use one.
Which one your books use is set once, in Settings under Costing method. That choice is what Stockroom treats as your official basis, and it is what your accounting sync will use - the select on the report itself is only for looking. Set it before your first period closes, because once those figures have gone to your accounting sync the method is fixed: changing it afterwards would restate books you have already closed on those numbers. If you need to change it after that point, contact us and we will work through it with your accountant.
Reading the columns
Units sold / Restocked - units sold in the window, and the subset of refunded units that were actually restocked.
COGS - the cost booked for the units sold.
Reversals - cost credited back for restocked refunds. A refund without a restock keeps its cost booked - the goods are gone, so their cost stays sold.
Net COGS - COGS minus reversals; the number for your books.
Avg / unit - net COGS per unit sold, handy for spot-checking.
Ending units / Ending value - what is left at the end of the window, valued under the same method. This is your period-end inventory valuation.
Where the numbers come from
Costing starts from a one-time opening snapshot: the day Stockroom began tracking costs for your store, everything on hand was valued at its cost of record. From that day forward, every receipt adds stock at the landed cost it actually arrived for - unit cost plus its share of freight and other charges. The more of your purchasing flows through Stockroom, the closer this report gets to accounting-grade. Applied stock adjustments and stocktake corrections move stock in the walk too - shrinkage consumes cost layers without ever entering COGS, and found stock re-enters at the nearest known cost.
The footnotes are the honesty
The report never quietly guesses. Anything that could not be costed cleanly is counted and disclosed under the total:
Provisional figures - the most recent days are marked provisional until the nightly sales recompute settles them (late refunds and edits can still land).
Units sold past all cost layers - you sold more than Stockroom has receipted; those units used the nearest known cost.
Units with no cost on file - booked at zero rather than invented.
Foreign-currency costs - items whose costs are in another currency are excluded until currency conversion ships, and the count tells you how many.
Stock moved outside Stockroom - units that changed through other apps or direct edits in Shopify are flagged as unaccounted rather than silently costed. Stockroom's own adjustments and stocktake corrections are already counted as stock movements.
Export and schedule it
Export CSV downloads the whole report, not only the rows on screen - and on a large catalog those are different things. The table lists the top 500 products by net COGS so it stays readable, and says so underneath when there are more; the totals above it always cover every product in the window. The CSV carries every one of those rows, so the file you reconcile adds up to the total you saw.
Schedule emails the report (or posts it to Slack) on a cadence - monthly on the 1st is the natural fit for period-end books, and the recipient does not have to be you, so it can go straight to your bookkeeper or accountant. The scheduled email attaches the full report; on a very large catalog it will say in the body if the attachment had to stop short, so you know to export from the report instead.
Good to know
Figures are per product across your whole store, not per location. If you want retail and online reported separately, revenue can be split that way but cost of goods will arrive blended.
Any date range works, so a fiscal year that does not start in January is the same report as any other.
Exports stay in plain dot-decimal numbers and ISO dates whatever language you use Stockroom in, so a spreadsheet always reads them correctly.
Dropship purchase orders never enter the costing pool: items your supplier ships straight to your customer count at their exact purchase cost on the date of the customer's order, and never affect ending inventory value. See Dropship purchase orders: ship straight to your customer.


