Closing the Month on Stock
This guide is for the stock controller and the accountant who close a month together. By the end of it, your closing stock figure will be one you can defend: the goods were received as they arrived, each one sits in the right month, the value follows a method you chose on purpose, and the slow stock has been looked at by a person. Plan on half a day at a normal month end. The year end takes longer, because of the full count.
BigLedger works out closing stock and cost of sales for you, company by company, when you run Month End Processing. It cannot tell whether the goods on the shelf were received honestly, whether a delivery on the 31st belongs to this month or the next, which valuation method suits the business, or whether a laptop two models old is still worth what it cost. Those are judgements, and this guide hands each one to a named person.
Meet GadgetSphere
GadgetSphere Sdn Bhd (GS) closes its books monthly. The finance manager at head office runs Month End Processing on the 5th working day. There is a storekeeper at each of the 22 branches, and three area stock controllers between them. Laptops lose value quickly: a model that sold for RM 3,999 in January sells for RM 2,999 by September, once its successor is on the shelf. That one fact drives Steps 6 and 7.
Step 1: Separate who holds the stock from who records it
The outcome: nobody can take stock and also make the records agree with what is left.
BigLedger checks permissions. It does not check whether one person holds two jobs that should be split. Separating them is the finance manager’s decision, and the permissions carry it out. GadgetSphere splits the jobs like this:
| Job | Who | Must not also |
|---|---|---|
| Hold the keys, receive deliveries, key the goods receipt | Branch storekeeper | Finalise a write-off at the same branch, or be the only counter |
| Count | Two staff, at least one from outside the stockroom | Accept the result |
| Accept a variance and finalise the write-off | Area stock controller, or the finance manager above the limit | Count at that branch |
| Send a transfer, and receive it | The sending storekeeper, and the receiving storekeeper | Do both ends of one transfer |
| Reset an average cost | Finance, with a second person reviewing the journal | Review their own reset |
| Run Month End Processing and lock the month | Accountant | Key stock documents into a month they are closing |
Where a branch is too small to split the jobs, the check has to come afterwards instead. The finance manager reviews every adjustment finalised last week, every Monday. See Step 7 of Counting Stock and Deciding What a Difference Means.
How you know it is right: once a quarter, the finance manager opens the permission sets for Stock Adjustment and Stock Transfer. They check that nobody holds FINAL on adjustments at a branch where they also keep the keys. Then they check that the Reset MA menus are hidden from everyone outside finance.
Step 2: Choose a valuation method, once, and know what it costs
The outcome: the closing stock figure uses a method your finance manager chose and your auditor has agreed.
BigLedger keeps a moving-average cost for every item and, where FIFO (first in, first out) is switched on for your account, a FIFO cost as well. Which one values your closing stock is a company setting, Inventory Closing Base On. If nobody sets it, it is the moving average. Only three of the options offered produce a figure: moving average, weighted average and FIFO. LIFO, replacement and manual cost are never filled in, so choosing one of them values closing stock at zero.
For GadgetSphere’s laptop in March (the arithmetic is on Costing Internals), cost of sales is RM 222,600 on moving average and RM 219,000 on FIFO. What each method is good for:
| Moving average | FIFO | |
|---|---|---|
| What closing stock means | What the units cost on average | What the most recent purchases cost |
| When prices fall as a model ages | Old, dearer units stay blended in the average | Old units leave first, so closing stock is valued at the recent, lower prices |
| What keeps it right | Nothing extra. The average catches up by itself after a back-dated document | A rebuild after back-dated documents and returns. The FIFO rebuild runs only when someone starts it, through BigLedger support. Until then, FIFO costs after the back-dated date stay as they were. You know it ran when FIFO costs on sales after the back-dated date have changed |
| What it does not see | Nothing | Receipts other than a purchase invoice, a sales return or a positive adjustment. A GRN Stock In, a transfer in, or opening stock loaded another way gives FIFO nothing to consume |
Two rules for whoever makes the choice:
- Decide at the start of a financial year, and agree it with your auditor. Month End Processing values both the opening and the closing stock of a month with the method set when it runs. So a change made mid-year revalues opening stock in a way last month’s journal never did. The revaluation never reaches the stock account either: from that month on, Step 5’s tie is out by the difference between the opening stock on the two methods, every month, until the accountant journals it. If a change is unavoidable, the finance manager agrees that one journal with the auditor, and knows it is done when the Step 5 tie holds again.
- Before choosing FIFO, prove it is being filled in. Open ten sales lines from last month. If their FIFO cost is empty or zero, FIFO is either not switched on for your account or has no receipts it can see. Choosing FIFO then values closing stock from nothing. Ask BigLedger support before you switch.
Step 3: Receive what arrived, not what was ordered
The outcome: every unit in stock came through a door and was counted there.
Purchase GRN, or Purchase GRN Stock In, created from the purchase order
The goods receipt arrives with the ordered quantities already filled in. That makes it easy to confirm the order instead of counting the delivery. GadgetSphere’s storekeepers work in this order:
- Count the cartons against the carrier’s note before signing it. Write any damage or shortage on the note in front of the driver.
- Open the cartons and count the units without looking at the order. For phones and laptops, scan every serial number.
- Only then open the receipt in BigLedger and change each line to the counted quantity. What is short stays open on the order for a later receipt. Damaged units are not received at all. Buying handles them with the supplier.
Two things in BigLedger reward this, and the first depends on which receipt you use. A serial number that already exists in the company is refused when the document that puts the stock on the shelf is finalised. On GRN Stock In, that document is the receipt, so a laptop scanned twice, or scanned under the wrong model, is caught at the door. On the plain GRN pair, the GRN moves no stock, and BigLedger checks its serials only when the Purchase GRN applet’s ENABLE_SERIAL_NUMBER_VALIDATION_FINAL switch (Settings > Field Settings) is on. With it off, the same check waits for the purchase invoice, which is finalised days later by whoever keys it, far from the carton. GadgetSphere sells serialised phones and laptops, so its finance manager turns the switch on. The switch also refuses a receipt whose serial count does not match its quantity. The opposite mistake shows up later: a serial that was never received is refused when a cashier tries to sell it. When that happens, the receipt is where the fix goes.
Know which document puts stock on the shelf. If your company receives on a plain GRN and the purchase invoice books the stock, goods received on the 30th and invoiced on the 3rd are on the shelf and not in the stock ledger at the month end. If it receives on GRN Stock In, the stock arrives at receipt and BigLedger posts a goods-received-not-invoiced accrual at the same time. Step 4 depends on which one you use. Use one pair for the whole company. Mixing the two counts a receipt twice.
How you know it is right: pick five receipts from last week. Each has the storekeeper’s count on the carrier’s note, and the quantity on the receipt matches the count, not the order. If you receive on the plain GRN, open the Purchase GRN applet’s Field Settings once and confirm the serial switch is on.
Step 4: Put everything in the right month
The outcome: the stock ledger at midnight on the last day matches the goods the business owned at midnight on the last day.
BigLedger dates everything by the dates you give it. It cannot know that the lorry arrived at 11:40 pm on the 31st. Cut-off is the stock controller’s job, and GadgetSphere does it in seven parts:
- Write down the last numbers. At close of business on the last day, each storekeeper records the last receipt number and the last invoice or delivery number, and sends them to the area stock controller. Anything numbered after them belongs to next month. Check it when the documents are keyed.
- Deal with received but not yet invoiced goods. On the GRN Stock In pair, those goods are in stock and the accrual is posted. On the plain GRN pair, they are not in stock at all. List the open receipts on the last day. Then either have the invoices keyed and dated in the month, or expect the count to show those items as surplus. In the second case the accountant accrues the liability by journal, because nothing else will. The accountant knows the accrual is right when its total equals the value of the open receipts on that list, and when it is reversed as those invoices are keyed.
- Look at the transfer queue. A transfer sent on the 31st and received on the 2nd belongs to the company, not to either branch. It sits at the company’s in-transit location, and the company’s closing stock includes it. Stock transfers can still be finalised in a locked month. That keeps a lorry already on the road from being stranded by a lock. It also means the transfer queue can change after you close, so read it last. Any line open longer than three days is a delivery that never arrived, or a receipt nobody raised. The receiving area controller chases it before the month is locked.
- Date the count adjustments in the month, on the header. A stock adjustment’s stock movement and its journal both take the document’s transaction date. On every save and at FINAL, BigLedger copies the header date onto every line. That date is filled in with the day the document is first saved, and on the screen only a user holding
SHOW_TRANSACTION_DATEcan change it. So a count on the 31st keyed on the 3rd lands wholly in the new month, stock and journal together, unless somebody sets the date back to the 31st. A file import takes the date from the Transaction Date column of the first row of each document (one document per location and reference). GadgetSphere givesSHOW_TRANSACTION_DATEto the area stock controllers who finalise year-end adjustments. They set the date to the count day before FINAL. They know it worked when the Stock Adjustment listing, filtered to the count day, shows every year-end adjustment, and none of them is dated in the new month. If the month is already locked (Step 5), FINAL refuses the back-dated document, so key these before the lock. - Lock late documents out of a reported month, or re-run it. A purchase invoice back-dated into a closed month re-costs every later sale. Nobody keys a document into a month after it is reported without the finance manager’s approval. If one is approved, the accountant re-runs Month End Processing for that month and every later month, in date order. How the finance manager knows the rule held: once a month is locked at
LOCK_TXN(Step 5), a late invoice cannot be finalised into it without someone reopening the month. For a month that is reported but not yet locked, the accountant checks the Step 5 tie again after every re-run. - If you close on FIFO, ask for the rebuild before Month End Processing. See Step 2.
- Count what you own, not what you hold. Stock can be yours and not on your shelf: goods in transit, stock placed with a consignee, a demo laptop lent to a corporate customer. Goods can also be on your shelf and not yours: a supplier’s consignment stock. Stock at a consignee sits at a consignment location that belongs to your company, so it is in your closing stock. Agree it with the consignee’s statement. BigLedger has no document for a demo or loan unit, so the area stock controller keeps a list the borrower has signed and agrees it at every month-end count: for each item, the units on the shelf plus the units on the signed list equal the ledger balance. Count a supplier’s consignment separately and agree it with the supplier’s statement. How it appears in your stock ledger depends on how consignment was set up for you, so ask whoever set it up before the year-end count, not during it. You know the ledger side is right when, for those items, your count less the supplier’s statement equals your own ledger balance. If the ledger balance includes the supplier’s units, your closing stock includes goods that are not yours; take that back to whoever set it up before the year end.
How you know it is right: after the count, the only differences on the count report are ones Step 5 of the counting guide explains, and none of them is “a receipt keyed next month”.
Step 5: Close, prove, lock
The outcome: the stock account equals closing stock, and the month cannot move.
Financial Report > Month End Processing
Month End Processing works out cost of sales for each company: opening stock plus purchases, purchase returns, stock adjustments and Reset MA, minus closing stock. It deletes and rewrites that month’s cost-of-sales journal every time it runs, and moves the stock account by closing minus opening. It never resets the account to your stock, so a difference that gets in stays in. Then:
- Tie the stock account to closing stock. The balance on the stock account at the month end should equal Historical Stock Balance run on the close’s basis: every location, no item filter, Calculate Base On the same as Inventory Closing Base On. BigLedger writes the journal and does not compare the two. The accountant does, every month. The six conditions under which they agree, the tie-out, and a worked example are on Stock report versus the stock account on the balance sheet.
- Tie closing stock to the count. At the year end, total the count sheets at cost and compare the result with closing stock. A difference means an adjustment is missing, or dated in the wrong month.
- Lock the month in the Chart of Account applet’s fiscal-year settings, and choose the value by what it stops.
LOCK_TXNrefuses FINAL on any document dated in that month, except stock transfers, and still lets the accountant post journals.LOCK_ALLrefuses both.LOCK_GLrefuses manual journals only, so stock documents still finalise into the month. The accountant setsLOCK_TXNonce Month End Processing has run, andLOCK_ALLafter the adjusting journals (see Set of Books and Fiscal Periods). How they know it holds: date a new stock adjustment in the locked month and press FINAL. It is refused with The selected date falls within a locked fiscal period. Discard the draft.
Step 6: Find the slow and the dead stock
The outcome: a list of stock that is not selling, with a decision against every line.
Stock Report > Stock Aging Report
The aging report assumes the oldest units leave first, and shows what is left by the month it arrived. Two things about how it counts matter before you trust it:
- It always starts on 1 January 2022, and there is no From date to set. The screen sends that fixed start date and replays every receipt, oldest first, up to the Date As you choose. Stock from before 2022 that is still on the shelf is aged as if it arrived with the first movement the report sees, so read the oldest column as “2022 or earlier”, not as an exact age. The month columns count back from the day you run the report, not from Date As. Run it on the 5th working day of April for March, and the first column is April. You know it is complete when, for three items at one branch, the report’s quantity with Date As left at today equals their balance in Stock Balance. If it does not, you cannot widen the range. Judge those items by sales instead, as described below.
- Every movement that adds stock starts a new age, for a branch and for the company alike. A laptop moved from
GS-KV-01toGS-PEN-01in August shows as August stock at Penang, however long it sat in Klang Valley. Running the report for the whole company does not undo this. A transfer passes through the company’s in-transit location, and the report counts that as stock leaving and arriving, so the company view shows the transferred units as August stock too. A customer return comes back as new stock as well. So the aging report cannot tell you how long transferred stock has been in the business, at any level.
BigLedger has no report of stock age that ignores transfers, so GadgetSphere judges slow stock by sales instead of age. The area stock controllers run the Stock Summary Report By Location (Stock Report > Stock Summary Report By Location) twice each quarter: once from 90 days ago to today, once from 180 days ago. Any line with Closing Balance (Include non-movement) above zero and nothing in Sold has not sold at that location in that time. A transfer does not hide it, because transfers are counted under Others, not Sold. Sold counts three document types only: cash bills (the till included), sales invoices and sales returns. An item sold once and returned once shows nothing sold, which is the right answer here. Stock shipped on a Sales GIN Stock Out is not in Sold. A company that ships on a GIN and bills on a Sales Invoice No Stock Out has its sales under Others, next to its transfers, so an item that sold that way still shows nothing in Sold. If any of your companies ships that way (at GadgetSphere it would be the distribution company), check every no-sale line that has a figure under Others before it goes on the list: run the Stock Movement Report for that item and location over the same dates, with Server Doc Type set to INTERNAL_SALES_GIN_STOCK_OUT (the list shows the raw type names; type SALES_GIN in its search box to find it). Any row that comes back with a Doc No and a Qty Out is a Sales GIN Stock Out in the range, which is a sale, and the line comes off the list. Don’t look for it in the Doc Short Code column: that column is blank for a Sales GIN Stock Out, as it is for every document type without a short code.
BigLedger has no rule for “slow” or “dead”, and does not flag anything. GadgetSphere’s rule: no sale for 90 days is slow, and no sale for 180 days is dead, read from those two runs. Each quarter, the area stock controllers send a list with a decision against every line:
| Decision | When it fits | What it does in BigLedger |
|---|---|---|
| Move it to a branch that sells it | One branch cannot shift a model another sells | A transfer. It resets the age at the receiving branch, so mark it on the list |
| Return it to the supplier | The supply agreement allows returns | A purchase return. It takes the stock out at its own price, and that price can move the average |
| Mark it down | It will sell at a lower price | A price change. Nothing happens to the cost until Step 7 |
| Bundle it, or give it away with a sale | An accessory or a superseded model | It leaves stock on the sale, and its cost becomes part of the month’s cost of sales |
| Write it off | It will not sell at any price | An adjustment to the damage account, as in the counting guide |
How you know it is right: every line of this quarter’s 180-day run with stock and no sale is on the dead list, every item on last quarter’s dead list has a decision and a date, and nothing on it is still unmoved and undecided this quarter.
Step 7: Value it honestly
The outcome: nothing on the balance sheet is carried at more than it will sell for.
Stock is valued at the lower of what it cost and what it will fetch less the cost of selling it: its net realisable value. That is the accounting standard: MFRS 102, or Section 13 of MPERS for a private entity that reports under it. BigLedger has no net-realisable-value test and no provision for obsolete stock. It values stock at cost, by the method you chose in Step 2. The write-down is a judgement the finance manager makes each quarter and at the year end, from the list in Step 6. The auditor will ask to see it.
For GadgetSphere, 30 laptops from the superseded model cost RM 3,180 each (RM 95,400) and will now sell for RM 2,999 less about RM 150 of selling costs: RM 2,849 each, RM 85,470 for the 30. That is a write-down of RM 9,930. There are three ways to put it in the books, and each has a cost:
| Route | What it does | What it costs you |
|---|---|---|
| Reset the average cost to RM 2,849 (Stock Adjustment > Reset MA) | Moves RM 9,930 from the stock account to the account you choose, and every later sale carries the lower cost | Permanent. It is company-wide, and later margins on that model look better by the amount you wrote down. Reversing it takes another reset |
| A provision journal: expense against a provision account shown under stock on the balance sheet | Leaves every cost in BigLedger alone. The provision is reviewed and changed each quarter | Nothing ties it to the items. The list behind it lives outside BigLedger and has to be kept with the journal |
| A manual closing value for the month in the company’s fiscal-year stock values (Chart of Account applet): the system’s figure beside a manual one, with a choice between them | Month End Processing uses your figure for closing stock, and next month’s opening, in place of the calculated one | The stock reports and the item costs still show cost, so the balance sheet and the stock reports disagree by the write-down, and somebody has to remember why. It lasts one month: next month’s closing is calculated at cost again, so the accountant re-enters the manual value every month the write-down should stand, before that month’s Month End Processing. A month missed reverses it through that month’s cost of sales. The accountant knows it was re-entered when, in the fiscal-year stock values, that month’s row has Select Manual ticked and a Stock Value (Manual) that is not zero (a zero is ignored and the calculated value is used), and the closing stock in that month’s cost-of-sales journal equals the manual figure, not Stock Value (System) |
We have not settled which of these is the house answer (it is with the product owner). All three are legitimate. For a write-down that will probably reverse (a model with a price promotion coming), the provision journal is the easiest to undo. For a write-down that will not reverse (a model that has been replaced), the reset keeps the item’s cost honest for every later report.
How you know it is right: for the ten highest-value items on the dead list, the carrying value is no higher than the latest selling price, less the cost of selling. The finance manager has signed the list the write-down was based on.
What success looks like
Five checks, ten minutes, after the month is locked:
- The stock account on the balance sheet equals Historical Stock Balance for the month end, run on the close’s basis (Step 5).
- The transfer queue has no line older than three days.
- The last receipt number each branch wrote down on the last day is the last receipt dated in the month.
- Ten sales lines from the month carry a cost under the method you chose. For FIFO, the FIFO cost is not empty.
- The dead-stock list has every line of the 180-day Stock Summary run with stock and no sale (less any line the Stock Movement Report, filtered to Server Doc Type
INTERNAL_SALES_GIN_STOCK_OUT, showed shipped in Step 6), a decision on every line, and the write-down is signed.
Common mistakes
| Mistake | What you see | Fix |
|---|---|---|
| Receiving the ordered quantity, not the counted one | A shortage at the next count that nobody can place | Count first, then change the receipt lines (Step 3) |
| Plain GRN pair, invoice keyed next month | Surplus at the year-end count; closing stock understated | List open receipts on the last day, and accrue or key the invoice in the month (Step 4) |
| Keying the year-end adjustments on the 3rd and leaving the date | The stock and the journal both land in the new year, so closing stock is out by the adjustment | Set the header date to the count day before FINAL, or import with the count day as Transaction Date. If one is already final, void it and key it again with the right date (Step 4) |
| Closing on FIFO without the rebuild after late documents | FIFO costs from before the late documents | Ask for the rebuild, then re-run Month End Processing |
Locking the month at LOCK_GL | Stock documents still finalise into the month you closed | Lock at LOCK_TXN, then LOCK_ALL (Step 5) |
| Choosing LIFO, replacement or manual cost as the basis | Closing stock is zero; cost of sales equals all purchases | Choose moving average, weighted average or FIFO |
| Judging slow stock by the aging report | Transferred or returned stock looks fresh, at a branch and for the company | Find no-sale items with the Stock Summary Report By Location over 90 and 180 days (Step 6) |
| Carrying superseded models at cost | An auditor’s adjustment at the year end | Step 7, every quarter |
Related documentation
- Counting Stock and Deciding What a Difference Means
- Costing Internals — where every cost figure comes from, and Reset MA
- Stock Transfer Procedures — the queue and the in-transit location
- Standard procurement workflow — the receipt from the purchasing side
- Reviewing a Set of Books Kept in BigLedger — the stock claim from the auditor’s side
- Financial Report applet — Month End Processing