Skip to content

Reports

“Two reports over the same period give different totals. Which is right?” Usually both, because they were made from different things at different moments. Every stock figure in BigLedger is one of two kinds: recomputed from the stock ledger when you run the report, or read off a balance row that a background job keeps up to date and that only ever shows now. They also value stock at two different averages. This page says, for every inventory report, which kind it is, as at when, and at what cost, so that when a figure looks wrong you can tell a real difference from two honest reports answering different questions.

Every stock report reads the ledger, and the ledger only has lines from documents that moved stock. A sales order, a quotation, a plain GRN or a credit note is in no stock report at all, because it never wrote a line. If a document you expect is missing, check its quantity signum before you check the report.

Nearly all of the module’s reporting is one applet, Stock Report, with thirteen fixed reports — the thirteenth, Stock Purchase Report by Supplier, reached the menu with the build deployed on 14 October 2026. There is no inventory report builder. The enquiry screens (Stock Balance, Stock Availability) and the stock take session report make up the rest.

Where each report’s number comes from

Recomputed from the ledger. The report reads the stock ledger lines (one signed line per item per finalised stock-moving document) at the moment you run it, up to the end of the date you chose. Run it again next week for the same date and it includes anything finalised in between with a date inside your range, including a document keyed today and dated last month.

Read off a balance row. BigLedger also keeps one stored balance row per item and location, and one per item and company. A background job rewrites them after each ledger line is processed. These reports have no date. They show the position now, and a document finalised a moment ago reaches them a moment after it reaches the ledger.

ReportKindAs atValued at
Stock Movement ReportRecomputedYour date range. The opening balance is the running balance on the last line before the start. Date Type can list lines by document date, by when the line was written into the ledger, or by when it was last updatedEach line’s own figures; the opening value at the company average
Stock Aging ReportRecomputedDate As. Receipts are replayed oldest-first from a fixed 1 January 2022; the columns are counted back from today—
Stock Summary Report By LocationRecomputedOpening = the running balance on the last line before From; closing = the running balance on the last line up to the end of ToClosing quantity × the company price on the company’s last ledger line of any kind before the end date
Historical Stock BalanceRecomputedThe end of Date AsThe company price on the last ordinary or Reset MA line before the date. The Current MA columns are read off the company balance row now
Stock Sales And Purchase By Item CodeRecomputedYour date rangeCost = the company average carried on each sale’s own ledger line
Stock Purchase Report by SupplierRecomputed from the purchase documents — finalised purchase invoice and purchase return lines, not the stock ledgerDocument dates in your date rangeEach line’s own amount, a return negative; the cost columns come from the line’s ledger entry and follow the same hide-MA-cost setting as every other report
Stock Balance By Item, Supplier and Batch ExpiryRecomputed (batch entries on the ledger lines)—The location average on the balance row now
Stock Value By Level ReportBalance rowsNowThe company’s whole value of the item, on every location row (see the caution below)
Batch and Expiry Date ReportBalance rows (the batch balances)Now; expiry buckets from todayThe company average now
Stock Balance ReportCompany balance rowNowThe company average now
Stock Balance Pricing ReportLocation balance rows, added up per itemNowThe company balance row’s costs
Stock Balance Report With SerialLocation balance rows and serial balancesNowThe location average now
Stock Balance Report by Supplier with SerialFinalised purchase invoice and purchase return linesThe purchase datesThe company balance row now, repeated on every purchase line (see below)

The enquiry screens follow the same split. Stock Balance reads the stored location row. Stock Availability is worked out when you open it: the balance plus the signed open documents. A stock take’s Cost Value is stored when the session report is generated, at the moving average on the last movement at that location before the session started.

Two averages: the company’s and the location’s

Every ledger line carries two moving averages: one for the location it moved at, and one for the whole company. Only the company one is written back onto the document line, and Month End Processing values closing stock at the company’s. Most reports follow the company average. Stock Balance Report With Serial and Stock Balance by Item, Supplier and Batch Expiry use the location’s.

So if GS-KV-01 bought its ultraportable laptops at RM 3,000 and GS-PEN-01 bought the same model at RM 3,200, Historical Stock Balance values both branches at one company average, while With Serial values each branch at its own. Neither is wrong. For anything that has to agree with the ledger, use the company figure.

Stock Value By Level adds the company’s value once per location

Do not take a closing value from Stock Value By Level. Its Amount for an item at a location is the company’s whole value of that item, not that location’s share, and the report adds it again for every location that has a balance row for the item. An item held at four branches is counted four times in the total. It also has no date: it shows the balance rows as they are now. This is a known issue, reported to engineering. Until it is fixed, take quantity by category from it if you like, and take value from Historical Stock Balance with the same category filter.

The cost of trusting it travels. A finance manager who keys its total as a Select Manual closing value for the month replaces the calculated closing stock, and cost of sales comes out low by the overstatement.

Two smaller traps of the same kind. On the Stock Balance Pricing Report, pick locations of one company: the unit costs of every company holding the item are added together on one row (a known issue, reported to engineering). On Stock Balance Report by Supplier with Serial, each row is a finalised purchase line, and its Bal Qty, Unit Cost and Total Cost are the company’s current balance of the item, repeated on every purchase of it. The serials are the ones on that purchase, not the ones still on the shelf. Use it to answer who supplied this, on which document, and never total its Bal Qty column.

Why two reports that should agree do not

A report you re-ran for a closed month. A recomputed report re-reads the ledger every time, so a document finalised after you printed it, with a date inside the month, changes the figure. Month End Processing’s journal does not change with it. To find what arrived late, run the Stock Movement Report with Date Type set to Created Date and a range starting the day after you closed. Every line whose Txn Date falls in the closed month was back-dated into it.

Historical Stock Balance versus Stock Summary By Location. For the same locations, items and end date, the quantities agree for every item Historical lists. Both read the running balance off the same ledger line, and both include the whole of the end date. Summary’s Closing Balance is that running balance as read; Closing Balance (include non-movement) rebuilds it from the opening balance and the movement columns. The values can differ: Summary prices at the company’s last ledger line of any kind before the end date, Historical at the last ordinary or Reset MA line, and Historical leaves out an item that has no such line, which Summary keeps at zero value. A sale shipped on a Sales GIN Stock Out sits under Others, not Sold. If Summary’s own two closing columns differ, the running balance and the movements disagree: either a back-dated document whose re-costing has not caught up, or a stock-sync line with no document type, which no movement column counts.

Stock Balance versus Stock Availability. Expected, always. The balance changes only on FINAL of a stock-moving document; availability adds the signed open orders on top. If they agree, you simply have no open documents.

Stock Sales And Purchase By Item Code’s gross profit versus the income statement. The report’s cost is the company average carried on each sale’s ledger line. Cost of sales on the income statement is written once a month by Month End Processing from opening stock, purchases, adjustments, Reset MA and closing stock. The month’s stock adjustments and Reset MA are in cost of sales and in no sale’s cost line, so the two differ whenever the month has any. Use the report to compare items with each other, and the income statement for the month’s margin.

The stock take’s Cost Value versus Historical Stock Balance. The stock take priced each item when its report was generated, at the moving average on the last movement at that location before the session. Historical Stock Balance prices at the company average on the date you ask for.

Any stock report versus the trade-in listing. Trade-in units are kept in their own tables. They appear in Stock Availability, which unions the two, and in no stock report except the Movement report when its Show NSTI Item Movement switch is Yes. Use the Non Stock and Trade In listing for them.

Stock report versus the stock account on the balance sheet

The pair finance asks about most, usually as “my stock report does not tally with the balance sheet”. The stock account on your Trial Balance or Balance Sheet is not a total of your stock. It is a journal balance, and a different piece of machinery makes it at a different time. Nothing in BigLedger compares the two figures: no report, no warning. The Stock Flow Report does not do it either (see below).

How the stock account is actually made. BigLedger keeps stock periodically in the ledger. During the month a purchase invoice posts to your Purchases account, not to stock. A sale posts receivable, sales and tax, and no cost line. A GRN Stock In posts to inventory-not-invoiced. So in the middle of the month the stock account barely moves. It moves through:

  • Month End Processing’s cost-of-sales journal, once a month per company. Cost of sales = opening stock + purchases + purchase returns + stock adjustments + Reset MA − closing stock. The journal clears Purchases and Purchase Returns into cost of sales and moves the stock account by closing − opening. Adjustments and Reset MA already posted to the stock account, so they are counted once. Every run deletes and rewrites that month’s journal.
  • Stock adjustments and Reset MA, at FINAL; opening-balance journals; and anything a person or a document line codes to the stock account.

Opening and closing stock are read from the stock ledger at the moment the close runs. For each item, the close takes the last ledger line before the date, the company’s quantity on hand, times the cost in the company’s Inventory Closing Base On column (moving average when empty).

The close moves the account by the month’s change. It never resets it to your stock. Once a difference gets into the stock account, it stays there, in every later month, until a person takes it out.

The two figures agree only when all six of these hold:

ConditionWhat breaks itHow you see it
1. Nothing else is coded to the stock accountA manual journal, payment voucher, invoice line or debit note coded to the stock account moves the ledger and never the stockThe stock account’s lines in the journal-line listing. Every line that is not the cost-of-sales journal, a stock adjustment, Reset MA or an opening balance is a suspect
2. Every month you back-dated into was closed again, in date orderA document dated 27 February and finalised after February was closed. February’s journal keeps the closing stock it saw; March’s opening is read fresh. The account is out by that document until February and every later month are processed againA closed month’s journal never updates itself. The Stock Movement Report with Date Type Created Date lists what was keyed after the close and dated before it. When in doubt, process the months again, oldest first: each run replaces that month’s own cost-of-sales journal
3. The report is run on the close’s basisThe close takes every location and every item of the company, negative balances included. A report run for some branches, active items only, or one category is a smaller numberHistorical Stock Balance: one company, every location (a non-administrator sees only the locations they may read, so run it as someone who reads all of them), no item type, status or category filter, Date As the last day of the month
4. The same cost columnThe close values at Inventory Closing Base On. The report values at whatever Calculate Base On saysSet Calculate Base On to the company’s Inventory Closing Base On
5. The same kinds of ledger lineThe close reads only ordinary stock lines and Reset MA lines, deleted ones included. Historical Stock Balance also reads stock-sync lines and leaves deleted ones out. Where stock arrives by sync from another system, the two cannot agreeAsk BigLedger support whether your company’s stock arrives by sync, or has deleted ledger lines
6. No manual closing valueA Select Manual closing value for the month replaces the calculated one (a zero manual value is ignored). Work-in-progress, raw material, finished goods and non-stock closing values post to their own pairs of accountsChart of Account › the company › fiscal year stock settings. Leave those separate accounts out of the comparison

The tie-out, after every close. This is the accountant’s job, every month, before the month is locked:

  1. Run Month End Processing for the month. If anything was back-dated, start at the earliest month it touched and process every month after it, in order. Then REGENERATE the Trial Balance.
  2. Note the stock account’s balance at the month end.
  3. Run Historical Stock Balance on the close’s basis (conditions 3 and 4) and total the value column.
  4. If the two differ, list the month’s lines on the stock account (condition 1), and check conditions 2, 5 and 6. If the month’s lines are clean, the difference came in earlier. Repeat the comparison at each earlier month end until the two agree. The first month they do not agree is the month to read, often the opening-balance month.
  5. Correct the cause at its source. Re-code the document or reverse the journal, re-process the months in order, then lock.

You know you are done when the two figures are equal at the month end, or differ only by rounding you can explain.

GadgetSphere’s March. GS’s Balance Sheet shows stock of RM 4,620,000. Historical Stock Balance shows RM 4,170,000, so RM 450,000 is unexplained. The tie-out finds three causes:

  • RM 280,000 in payment vouchers for freight and a supplier deposit, coded to the stock account. These are condition 1. Re-code them to freight and to supplier deposits.
  • RM 120,000 at cost for a corporate laptop order dated 27 February and finalised on 4 March, after February was closed. That is condition 2. Re-process February, then March.
  • RM 50,000 of discontinued models, left out because the report was filtered to Item Status ACTIVE. That is condition 3. Run it again with no status filter.

What the Stock Flow Report is for, and what it is not

The Stock Flow Report compares, per module, the amounts on finalised documents with the journal lines on that module’s account: purchase invoices against Purchases, sales invoices at their selling prices against Sales, and so on. It answers did every purchase and sale post its journal, for the right amount? That is a useful check before a close. It never reads stock value or the stock account. Its Opening Stock row is always zero, and it has no Closing Stock row.

Which report answers which question

QuestionReport
What happened to this item?Stock Movement Report
What did we hold at the year end?Historical Stock Balance
What was the closing value for the month, by category?Historical Stock Balance with the category filter, Date As the month end. Stock Summary By Location for the movements behind it
What was keyed after I closed the month, and dated inside it?Stock Movement Report, Date Type Created Date
What is not selling?Stock Aging Report, and Stock Sales And Purchase By Item Code for the turn ratio
What expires soon?Batch and Expiry Date Report
Where is this serial number?Stock Balance Report With Serial, or the Availability drill-down
Which supplier did this batch come from?Stock Balance by Item, Supplier and Batch Expiry
What did we buy from one supplier in a period, net of what went back?Stock Purchase Report by Supplier — one line per finalised purchase invoice or purchase return line, grouped by supplier, a return negative
Which item has gone negative at a branch?Stock Balance Pricing Report, Option Balance NEGATIVE, one location per run
Can I promise this customer 20 units?Stock Availability, then its Details screen
Why is the count different from the system?The stock take session report, then a Stock Adjustment
What is still in transit between branches?The Stock Transfer applet’s Queue and Details listings, and the in-transit column of Stock Summary By Location

When a figure looks wrong

What you seeWhyWhat to do
Last month’s Historical Stock Balance is different from the copy you printed at the closeA recomputed report re-reads the ledger, and something dated last month was finalised sinceStock Movement Report, Date Type Created Date, from the day after the close. Then process the affected months again, oldest first
Stock Value By Level’s total is far above Historical Stock BalanceIt adds the company’s value of each item once per location (a known issue, reported to engineering)Take value from Historical Stock Balance. Never key its total as a manual closing value
Historical Stock Balance and Summary By Location agree on quantity, not on valueDifferent cost lines, and Historical leaves out items with no ordinary or Reset MA lineCompare item by item; an item missing from Historical but valued at zero in Summary is the second cause
Summary’s Closing Balance and Closing Balance (include non-movement) differThe running balance and the movement columns disagree: a back-dated document still being re-costed, or stock-sync lines with no document typeOpen the item on the Stock Movement Report for that location. If the gap is still there the next day, send support the item, the location and the date
A document you just finalised is on the Stock Movement Report but not on Stock BalanceThe balance row is rewritten by a job after the ledger line existsWait a moment and search again. A gap that stays is for support, with the document number
A branch’s value on With Serial is not its share of Historical Stock BalanceLocation average versus company averageExpected. Use the company figure for anything that must agree with the ledger
Unit cost on the Stock Balance Pricing Report is a multiple of the real oneLocations of more than one company were picked, and their costs were added (a known issue, reported to engineering)Run it for one company’s locations
Bal Qty on Stock Balance Report by Supplier with Serial adds up to more than you holdEach purchase row repeats the company’s current balanceRead the balance from Stock Balance Report; use this report only for the supplier and document
Gross profit on Stock Sales And Purchase By Item Code is not the income statement’sLine cost versus the month-end cost of salesExpected. Reconcile the month on the income statement, not on this report

How you know the figure is right

Pick one item you are unsure of, at one location, and a date.

  1. Run Historical Stock Balance for that location and Date As, and note the quantity.
  2. Run the Stock Movement Report for the same item and location, with a range that ends on that date. The Balance Qty on its last line is the running balance Historical read. With no line in the range, it is the opening balance.
  3. If the two agree, the quantity is right and any difference lies in the price or in which report you compared it with. If they differ, look near the date for a back-dated document or a line of a kind Historical does not read.

For the value, the check that matters is the tie-out against the stock account above, done by whoever closes the month. Before you hand a stock value to an auditor, a lender or your own management, say which report it came from, at which date, and at which cost column, so that whoever re-runs it can get the same number.

What has no report

  • No standing reorder report. Minimum and maximum levels drive an e-mail from Stock Level Monitoring and a replenishment run. The nearest screen is the Min/Max Qty/Loc tab inside a Stock Replenishment run, which puts Min, Max and Balance side by side for every item × location the run covers — so you can read the breaches off it, but only for the items that run selected, and only after the run exists. It does not filter to the breaches and there is nothing that sweeps the whole catalogue on demand. The same applet’s Order Qty Reports grid has a Reorder level column, and that column is bound to nothing and is always blank — do not plan around it.
  • No GL-to-stock reconciliation report. Nothing compares the stock account with the stock value. The tie-out under Stock report versus the stock account on the balance sheet is how you do it by hand. A sale never touches the stock account. The main mover is Month End Processing’s cost-of-sales journal, and the usual cause of a difference is something else coded to the account, or a month that was not closed again after a back-dated document.
  • No shrinkage report. Shrinkage is whatever you coded your adjustment lines to; report on it in Financial Accounting, from the GL code.

What these reports depend on, and what depends on them

Every figure here depends on documents reaching FINAL and on the jobs that run after it. A draft is in no stock report, except as the draft inbound transfer lines in Summary By Location’s Stock In Transit. A missing GL code stops a document’s journal, not its stock line, so the stock reports can be right while the stock account is wrong.

Month End Processing reads the same ledger, at the company average, from the last ordinary or Reset MA line before the date. That is why Historical Stock Balance, run on the close’s basis, is the report that lets you check the close, rather than Stock Value By Level or a balance report. A wrong value keyed as a manual closing value breaks that month’s cost of sales, and the difference stays in the stock account afterwards.

In practice the stock reports are used alongside the Stock Flow Report before a close (did every document post its journal?) and together with a Stock Adjustment after a stock take (the variance the count found, put into the ledger).

Read next

Closing the Month on Stock walks the month end these reports serve: cut-off, valuation and the tie-out, step by step. For the same stored-or-recomputed question across the rest of BigLedger, read Where did this figure come from?.