Cost of goods sold
See what your materials, purchases and labour cost each month, and lock months once they are final.
The Cost of Goods Sold report adds up what the work you did cost you, month by month: materials and purchases, labour, and stock adjustments. Click a month to see every line behind its figures. Once a month is final it locks, so its figures stop changing.

Filters
| Filter | What it does |
|---|---|
| From Date (Optional) | The first year to include. |
| To Date (Optional) | The last year to include. |
| Include Non-Tracked | Tick to include products that are not tracked. |
| Date Basis | Invoiced counts lines by when they were invoiced. Switch it to Recorded on Job Date to count them by the date on the job. |
The report starts on the current year and updates as soon as you change a filter.
The months table
| Column | What it shows |
|---|---|
| Date | The month. Click it to show only that month in the breakdown below. |
| Materials/Purchases | The cost of materials and purchase order lines. |
| Labour | The cost of labour. |
| Total COGS | Materials, purchases and labour together. |
| Adjustments | The cost of stock adjustments. |
| Lock | Whether the month is locked, and when it will lock. |
A month can carry badges under its name. cost unknown counts stock adjustments with no known cost, which are counted at $0. no cost counts job lines with no cost, also counted at $0. not included counts lines left out of the report.
The breakdown
Under the months table, each month is split into Labour, Materials, Adjustments and Not included in COGS. Each line shows its Date, Product Code, Product Desc, Quantity, Unit Cost Price and Total Cost Price. Lines that were left out show why: No product, Product not tracked or Product excluded from COGS, with a link to the job.
Month locking
A month locks automatically a set number of days after it ends. Once locked, its figures are saved as they are and its job lines and stock adjustments cannot be changed.
The Lock column shows one of these:
- Locked. Hover over it to see when, and whether it locked automatically or an admin locked it.
- Locks and a date, for a month that will lock on that date.
- Due to lock, for a month that locks on the next overnight run.
- Waiting on a number of purchase orders. The month cannot lock until those purchase orders are received or cancelled. Hover over it to see which ones.
- Reopened, for a month an admin has opened again.
Admins also see Lock now on a month that can lock early, and Reopen on a locked month.
Step by step: lock a month early
- Click Settings in the header.
- Click Cost of Goods Sold under Reports.
- Click Lock now in the month’s Lock column.
- Click Lock month.
To open a locked month again, click Reopen and then Reopen month. Its figures are worked out again from current data, and it locks again automatically after a day.
Lock COGS After (Days)
Admins see this setting at the top of the page. Enter the number of days and click Save beside it.
| Setting | What it does | Default |
|---|---|---|
| Lock COGS After (Days) Text | COGS for a month is locked this many days after the month ends, after which it can't change unless an admin reopens it | 45 |
Set unit cost
A stock adjustment marked Cost unknown has no cost price, often because the product has been deleted from Xero. In a month that is not locked, an admin can click Set cost beside it. In the Set unit cost dialog, enter the Unit cost ($) and click Save.
View Product Issues

View Product Issues opens Stock Product Issues, a list of products whose stock records have a problem. Each row shows the Product Code, Product Description, # Entries and Reason. Hover over the information icon beside a reason to see what causes it. The Tracked? switch on each row changes whether that product is tracked, and saves as soon as you click it. Click Close when you are done.
See also
- Purchase orders - receive or cancel the purchase orders a month is waiting on.
- Stock on hand - the value of the stock you hold, month by month.