Skip to content
This month's cost of sales looks wrong

This month's cost of sales looks wrong

“March’s cost of sales makes no sense against March’s sales.” Sales were up 3% on February, and gross margin jumped from 24% to 37%. Nobody changed a price. Before anyone re-runs anything, find out which part of the figure moved.

This page is for the accountant or finance manager who has to explain the month, and for the support colleague helping them. BigLedger works out the month’s cost of sales once, when the month is closed, from six figures, and a sale posts no cost of its own. So the question is never “which sale is wrong”. It is which of the six figures moved, and was it meant to. Allow 20 minutes. You need last month’s figures beside this month’s, because a month read on its own hides the term that moved.

The 30-second check

Ledger And Journal, the journals dated the last day of each month

  1. Find this month’s cost-of-sales journal. It is described AUTO CREATED FROM COGS PROCESSING and dated the last day of the month, one per ledger. If it is not there, month-end wrote no cost of sales. The usual reason is a missing Cost of goods sold or Stock balance default GL code, and the run reports success anyway: see the first row of Six other ways the two figures part company.
  2. Read its created date. That is when month-end last ran. Anything dated in the month and keyed after it is not in the figure. Process the month again, then every later closed month in order (If something lands in March after you have closed).
  3. Put it beside last month’s journal, line by line. Each journal has up to four lines: cost of goods sold, the stock account, Purchase and Purchase Return. The line that moved by more than sales did is the one to chase.

For GadgetSphere Sdn Bhd (GS), March’s journal was created on 5 April, after the last March document was keyed. Here are the two journals side by side:

LineFebruaryMarch
Dr COST-DEFAULT (cost of goods sold)4,440,0003,795,000
Dr EXPENSE-PURCHASE-RETURN80,00060,000
Dr INV-STOCK-CONTROL (the stock account)180,000965,000
Cr EXPENSE-PURCHASES4,700,0004,820,000

Purchases moved by 2.6%, in line with sales. The stock line went from RM 180,000 to RM 965,000. Stock is the term to chase.

Rebuild the six figures

The journal is built from six figures. BigLedger stores them with the journal, but we know of no screen that shows them. So you rebuild them, and you need to, because the stock line is four of them netted together: opening stock − closing stock + adjustments + Reset MA. How the six add up to cost of sales, and why adjustments are counted this way, is on When cost of goods sold reaches the ledger.

FigureWhere to read itFebruaryMarch
PurchasesThe journal’s credit to the company’s default Purchase account4,700,0004,820,000
Purchase returnsThe journal’s debit to the default Purchase Return account, as a negative figure−80,000−60,000
Opening stockThe same read as closing stock, at the last day of last month; or last month’s manual closing value, if one is selected and not zero9,600,0009,750,000
Closing stockHistorical Stock Balance for the company: every location, no item filter, Date As the last day, Calculate Base On the same as the company’s Inventory Closing Base On9,750,00010,690,000
Adjustments and Reset MAWhat the month’s stock adjustments and Reset MA journals posted to the stock account (a write-off is negative)−30,000−25,000
Cost of salesThe sum, which should equal the journal’s cost-of-goods-sold line4,440,0003,795,000

Check your rebuild against the stock line before you trust it. For March: 9,750,000 − 10,690,000 − 25,000 = −965,000, a debit of RM 965,000 to the stock account, as the journal shows. If your figures do not reproduce the journal’s stock line, a document changed the stock ledger after the close ran, or someone changed a manual closing value. Historical Stock Balance and the close also read slightly different ledger lines; the six conditions under which they agree are in Stock report versus the stock account.

Now compare term by term. February’s closing stock rose RM 150,000 over its opening; March’s rose RM 940,000, while sales moved 3%. So the figure to explain is the RM 940,000 rise in closing stock. Closing stock is every unit the company’s stock ledger holds at every location at the moment the close runs. It does not check whether the business owns those units or has been billed for them.

Find what moved

Each row starts from what you see when you compare the months.

What you seeCauseWhat to do
Cost of sales low this month and high next month, by about the same amount; closing stock upGoods arrived on a GRN Stock In near the month end and the supplier’s invoice is dated next month. The receipt puts them into the stock ledger and onto your inventory-not-invoiced account, never the Purchase account. Only the invoice reaches Purchase. So this month’s closing stock holds them and this month’s purchases do notSee The goods you received but were not billed for, below
Cost of sales low, and the stock account high, while a supplier’s consigned goods sit on your shelf unbilled; then high in the month the consignment billing postsThe consignment GRN puts the principal’s goods into your stock ledger, and the close counts every unit in it. Consigned goods reach Purchase only when you raise the consignment billing. They are also on your consignment stock account, so the balance sheet carries them twiceBigLedger does not yet take consigned goods out of closing stock. A fix is planned. The size of the effect is roughly the consigned goods you still hold, unbilled, at the month end
Cost of sales low in one month and never comes backStock arrived with no purchase or stock adjustment beside it. One case seen in practice is opening stock whose purchase document was removed while the stock stayed. The value stays in the stock account with no document behind itFind the document that brought the stock in and repair it, then process that month and every later one again. If you cannot find one, send the item to BigLedger support. Coming from a system that posted cost on every sale sets out both ways to bring opening stock in
Cost of sales short by one supplier invoice, often a foreign-currency oneThe invoice moved stock, but its journal did not post, so nothing reached PurchaseThe second row of Six other ways: find it, write its journal with Trace Document’s Resolve, process the month again
Purchases look short, although the invoices postedThe invoices went to an item’s or a line’s own GL code. Month-end counts only the default Purchase and Purchase Return accountsPurchases on their own GL code
Purchases fell in a month you sent consigned goods back on a Consignment GINIf your company posts journals for the GIN, it credits the default Purchase account with the GIN’s amount, unless a line or item GL code overrides it, although the goods were never a purchaseConsignment: Settle and Return, Step 6
Cost of sales moved by a round figure that matches no documentA manual closing stock value for this month, or for last month, which becomes this month’s openingThe last row of Six other ways: see who keyed it and why
The figure changed after you printed it, or differs from what you reportedSomeone processed the month again after a back-dated document, and every run replaces the journalProcess every later closed month again too, in order, and re-issue what you reported

GadgetSphere’s RM 940,000, taken apart

GadgetSphere’s RM 940,000 breaks down like this. RM 612,000 is flagship smartphones received on GRN Stock In on 30 and 31 March, with the distributor’s invoices dated 2 April. RM 186,000 is a principal’s wireless-audio stock held on consignment and not yet billed. The other RM 142,000 is ordinary stock growth ahead of a promotion. Without the first two, March’s cost of sales would be about RM 4,593,000 and gross margin about 24%, in line with February.

The goods you received but were not billed for

This one reverses by itself, provided each supplier invoice is keyed as a Purchase Invoice No Stock In linked to its receipt. An ordinary Purchase Invoice brings the goods into stock a second time. In April the invoices arrive, April’s purchases include RM 612,000 for goods already in March’s closing stock, and April’s cost of sales comes out RM 612,000 high. Over March and April together the figure is about right. Neither month is right on its own.

Decide which month matters more, and write the decision down. Two choices:

  • Accept the swing. If you report quarterly, or the board reads two months together, leave both months as BigLedger works them out. Note the timing item on March’s close, with the list of open receipts behind it, so whoever reads April knows why it is high. Until April, March’s balance sheet carries those goods twice: on the inventory-not-invoiced account and in the stock account.

  • Make March stand on its own. Key March’s closing stock as a manual value: the calculated closing stock less the goods received and not invoiced on the last day, valued on the same cost basis. For GadgetSphere that is 10,690,000 − 612,000 = RM 10,078,000. Then process March again. The same value becomes April’s opening stock, so April is not doubled. Your inventory-not-invoiced account still carries those goods, which is where they belong until the invoice arrives.

    The value goes on Chart of Account › the company › Fiscal Year › FY 2026 › Closing Stock Balance › Inventory, in March’s Stock Value (Manual), with Select Manual ticked. If clicking the year opens nothing, the company’s Closing Stock Balance toggles are off; the Chart of Account page names them.

If you key the manual value, three things matter:

  • A manual value of zero is ignored. The calculated figure stands.
  • The manual value replaces the whole closing figure. Key it after every March document is in, and work it out again every time you process March again.
  • Expect a gap in your tie-out. If the stock account tied to Historical Stock Balance before, it will then sit below it by the received-not-invoiced value. That gap is the point. Check it against the inventory-not-invoiced account’s balance at 31 March. The two differ when tax was keyed on a receipt, or an invoice came in at a different price from the receipt; the Purchase Invoice No Stock In page explains both.

BigLedger’s own design for the close takes received-not-invoiced goods, and unbilled consigned goods, out of closing stock by itself. That part is planned and not built. Until it ships, the manual value is the only way to make a month stand on its own for received goods. For consigned goods, this page names the problem and gives no workaround yet.

What success looks like

Your six rebuilt figures reproduce this month’s journal line for line. Every figure that moved more than sales did has a named cause. Each cause is either accepted as timing and noted on the close, or fixed at its source with the month processed again, followed by every later closed month. Gross margin, after the timing items you noted, sits where trade explains it. For GadgetSphere that is about 24% in both months once you note RM 612,000 of timing and RM 186,000 of consigned goods against March, or about 27% in the ledger if you keyed the manual value for the received goods.

When it is a support matter

When the six figures reproduce the journal and you still cannot say why one moved, send BigLedger support:

  • the company, the Set of Books and the month
  • your six figures for this month and last month
  • the journal’s created date
  • the documents you suspect, with their dates and their created dates

What this page cannot tell you

  • Cost of sales by branch. The journal is written for the company, with no branch on it, so this rebuild works at company level. For a branch-level view of margin, start from The margin report and the profit and loss don’t agree.
  • Raw material, work in progress, finished goods and non-stock closing values. Each posts its own small journal against its own pair of accounts, outside the six figures.
  • Whether a Reset MA moves closing stock when you close on FIFO. We have not traced that yet, so treat a large Reset MA figure in a FIFO month as a question for support.

Related documentation

Last updated on