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.
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.
| Report | Kind | As at | Valued at |
|---|---|---|---|
| Stock Movement Report | Recomputed | Your 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 updated | Each line’s own figures; the opening value at the company average |
| Stock Aging Report | Recomputed | Date As. Receipts are replayed oldest-first from a fixed 1 January 2022; the columns are counted back from today | — |
| Stock Summary Report By Location | Recomputed | Opening = the running balance on the last line before From; closing = the running balance on the last line up to the end of To | Closing quantity × the company price on the company’s last ledger line of any kind before the end date |
| Historical Stock Balance | Recomputed | The end of Date As | The 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 Code | Recomputed | Your date range | Cost = the company average carried on each sale’s own ledger line |
| Stock Purchase Report by Supplier | Recomputed from the purchase documents — finalised purchase invoice and purchase return lines, not the stock ledger | Document dates in your date range | Each 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 Expiry | Recomputed (batch entries on the ledger lines) | — | The location average on the balance row now |
| Stock Value By Level Report | Balance rows | Now | The company’s whole value of the item, on every location row (see the caution below) |
| Batch and Expiry Date Report | Balance rows (the batch balances) | Now; expiry buckets from today | The company average now |
| Stock Balance Report | Company balance row | Now | The company average now |
| Stock Balance Pricing Report | Location balance rows, added up per item | Now | The company balance row’s costs |
| Stock Balance Report With Serial | Location balance rows and serial balances | Now | The location average now |
| Stock Balance Report by Supplier with Serial | Finalised purchase invoice and purchase return lines | The purchase dates | The 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
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 two figures agree only when all six of these hold:
| Condition | What breaks it | How you see it |
|---|---|---|
| 1. Nothing else is coded to the stock account | A manual journal, payment voucher, invoice line or debit note coded to the stock account moves the ledger and never the stock | The 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 order | A 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 again | A 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 basis | The 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 number | Historical 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 column | The close values at Inventory Closing Base On. The report values at whatever Calculate Base On says | Set Calculate Base On to the company’s Inventory Closing Base On |
| 5. The same kinds of ledger line | The 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 agree | Ask BigLedger support whether your company’s stock arrives by sync, or has deleted ledger lines |
| 6. No manual closing value | A 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 accounts | Chart 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:
- 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.
- Note the stock account’s balance at the month end.
- Run Historical Stock Balance on the close’s basis (conditions 3 and 4) and total the value column.
- 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.
- 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
| Question | Report |
|---|---|
| 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 see | Why | What to do |
|---|---|---|
| Last month’s Historical Stock Balance is different from the copy you printed at the close | A recomputed report re-reads the ledger, and something dated last month was finalised since | Stock 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 Balance | It 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 value | Different cost lines, and Historical leaves out items with no ordinary or Reset MA line | Compare 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) differ | The running balance and the movement columns disagree: a back-dated document still being re-costed, or stock-sync lines with no document type | Open 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 Balance | The balance row is rewritten by a job after the ledger line exists | Wait 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 Balance | Location average versus company average | Expected. 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 one | Locations 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 hold | Each purchase row repeats the company’s current balance | Read 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’s | Line cost versus the month-end cost of sales | Expected. 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.
- Run Historical Stock Balance for that location and Date As, and note the quantity.
- 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.
- 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?.