Stock Control for Singapore SMEs: Landed Cost, Stock Counts and the GST on Write-Offs
Stock is the one figure in the accounts that someone has to walk into a storeroom to check. When the count and the system disagree, the difference is profit — and each reason for the difference has its own GST and tax treatment.
A Singapore distributor closes its year on 31 December. Xero says the storeroom holds S$186,400 of stock. Two people spend a Saturday counting, the count is priced at cost, and it comes to S$171,900. On S$1.2 million of sales, that S$14,500 takes gross margin from 25.0% to 23.8%, and the accountant will not sign off on either number until someone explains the gap.
Explaining it takes a week. The figures are illustrative:
Stock per Xero 186,400
Stock per count 171,900
-------
Difference 14,500
Scrapped in July 6,200
Samples and gifts 3,100
Billed, short-delivered 2,900
Unexplained 2,300
Four lines, four different answers. The cartons scrapped after a leak are a real loss, but nobody kept evidence of the disposal — which is what IRAS asks for before it accepts that no GST is due on stock that left for nothing. The samples and gifts are a marketing cost, not a cost of sales, and some of them needed output tax. The short delivery is not a loss at all; it is a supplier credit note nobody asked for. Only the last S$2,300 is shrinkage in the usual sense.
This guide is for a Singapore SME that buys and sells physical goods — a distributor, a retailer, an online seller, a trading company with one storeroom. It covers what a unit of stock costs, which system should hold the quantities, how to run a count that means something, and what happens for GST and income tax when stock leaves without a sale. The software examples use Xero; the rules apply whatever you use. It reflects IRAS, Singapore Customs and Xero guidance current in September 2026 — confirm anything that changes a filing against the latest version.
Why the stock figure is a profit figure
However your system records it, cost of sales comes down to one identity:
Opening stock 160,000
+ Purchases 926,400
- Closing stock 186,400
-------
= Cost of sales 900,000
Replace the closing figure with the counted S$171,900 and cost of sales becomes S$914,500. Every dollar by which closing stock is overstated is a dollar of profit that does not exist — reported to the owner, shown to the bank, and carried into the tax computation.
The error also hides well. This year's closing stock is next year's opening stock, so an overstatement flatters one year and penalises the next. Nothing ever shows up as a single missing amount. The margin just drifts, and the owner starts distrusting the management dashboard instead of the storeroom.
Two things set the figure: what each unit cost, and how many units there are. Most SMEs get both slightly wrong.
What a unit costs: landed cost, not invoice price
The accounting standard on inventories (FRS 2, in the standards published by ACRA) defines cost as the purchase price, plus import duties and taxes you cannot recover, plus the transport and handling needed to get the goods to where they are — less trade discounts and rebates. Storage, selling costs and general overheads stay out.
Take one shipment:
500 units at S$40 20,000
Freight and insurance 1,500
-------
Customs value (CIF) 21,500
Import GST at 9% 1,935
Local handling 500
Singapore Customs charges import GST on the customs value plus all duties. Duties apply to only four classes of goods — liquor, tobacco, motor vehicles and petroleum products — so for most trading stock the base is simply the CIF value.
For a GST-registered importer, the S$1,935 is not part of cost. It is input tax, claimed on the strength of an import permit that shows you as the importer, with the permit's value in Box 5 of the GST return and the permit's GST in Box 7. If you are not GST-registered, the GST is cost.
So the landed cost is S$20,000 + S$1,500 + S$500 = S$22,000, or S$44 a unit, not S$40. Sold at S$55, that is a 20% margin, not 27%. A business that prices off the supplier's invoice is counting on seven points of margin it does not have.
The practical problem is that freight and handling arrive on different bills, from different suppliers, weeks after the goods. Xero's tracked inventory updates an item's average cost from the quantity and cost price on the purchase bill. The forwarder's bill does not reach the item unless someone puts it there, with a revaluation adjustment or a landed-cost step in an inventory app. Posting freight-in to its own cost-of-sales account is the common shortcut: total gross margin stays roughly right, but item margins are overstated and closing stock is understated. Decide which of those you can live with, and write it down.
Two more rules on cost:
- Pick a cost formula and keep it. FRS 2 allows first-in-first-out or weighted average, applied consistently to similar items. Last-in-first-out is not permitted. Xero's tracked inventory uses average cost only.
- Foreign-currency bills are costed at the bill-date rate. The exchange difference when you pay the supplier later is not stock cost. It goes where the foreign-currency invoicing guide says it goes.
Which system holds the quantities
There are three workable set-ups. Xero's own guidance is candid about where its built-in inventory stops.
| Approach | How it works | Suits |
|---|---|---|
| Periodic count | Purchases post to cost of sales; a count sets closing stock by journal | Few lines, low value, steady stock |
| Xero tracked inventory | Every bill and invoice moves the count and average cost | Finished goods sold by invoice, up to about 4,000 items |
| Inventory app linked to Xero | The app holds counts and costs and posts to the ledger | POS or online sales, making goods, FIFO, purchase order receipts |
Xero says tracked inventory fits businesses that sell by invoice only, buy and sell finished goods, and are content with average cost. It points you to an app once you pass 4,000 tracked items, manufacture, need receipts against purchase orders, or want a different cost method.
Three behaviours to know before switching tracked inventory on:
- The inventory account is locked. Accounts of the Inventory type are system accounts you cannot journal to, so the ledger always equals the sum of the items. Every correction has to go through an inventory adjustment. A periodic closing-stock journal needs an ordinary current-asset account instead.
- Adjustments are permanent. A posted adjustment cannot be edited or deleted, only reversed by another one. One adjustment takes up to 1,000 items, and counted quantities can be imported from a CSV file.
- Sales ahead of purchases become backorders. Invoice an item before its purchase bill is entered and the quantity goes negative, with a value of zero. Late supplier bills mean stock records that are wrong in the meantime.
The real test of any set-up is whether the quantity in the system moves at the moment the goods move. Stock should go up when cartons arrive, not when the bill is keyed in. That needs a receiving record at the door — the step small businesses skip most. Without one, a delivery of 52 units against a bill for 60 goes into stock as 60. That is the S$2,900 line in the opening example, and three-way matching exists to catch it before the supplier is paid.
How to run a count that means something
A count is a control only if it is able to disagree with the system. Seven rules make it so:
- Fix the cutoff. Note the last delivery in and the last delivery out before counting starts. Goods received but not yet billed are yours: count them and accrue the bill. Goods invoiced but not yet collected are not: set them aside.
- Count blind. The count sheet lists item and location, not the system quantity. A counter who can see "48" tends to find 48.
- Use two people. One counts, one records, and the person who runs the storeroom day to day does not count alone.
- Separate what is not yours. Consignment stock, customer goods in for repair, and anything already sold are left off the sheet.
- Recount before adjusting. Set a tolerance. Anything over it is recounted by a different pair. Most large variances turn out to be unit-of-measure mistakes (cartons counted as units) or stock sitting in a second location.
- Record condition. Damaged, expired and dusty items are noted as they are found. The count is when write-down candidates surface.
- Sign it, then post it. The variance list is approved by someone senior before the adjustment goes in, and the signed sheets are kept.
The signed sheets are a statutory record, not a working paper. IRAS lists "stock lists at the end of each accounting period" among the records a GST-registered business keeps for at least five years, and companies must keep records for at least five years from the relevant Year of Assessment. File them the way the document retention guide describes.
If your accounts are audited and stock is material, expect the auditor to attend the year-end count, so agree the date early. A private company can be exempt from audit as a small company if it meets at least two of three tests for the past two financial years: revenue of S$10 million or less, total assets of S$10 million or less, and 50 employees or fewer. The exemption removes the auditor. It does not remove the need for a closing stock figure you can support.
Do not wait for year-end. Rank items by the value that moves through them in a year. A small share of items usually carries most of the value: count those monthly and the rest quarterly. Ten items every Friday is a better control than a thousand items once a year, because a variance found within a week of its cause can still be explained.
When stock leaves without a sale
This is where the tax rules sit. Every unit that leaves the storeroom without an invoice needs a reason recorded at the time, because the GST treatment depends on the reason.
| What happened | GST | Keep on file |
|---|---|---|
| Destroyed, no market value | No output tax if IRAS's conditions are met | Write-off approval, disposal evidence |
| Given as a gift | Output tax on market value if over S$200 per recipient per occasion | Recipient, occasion, cost |
| Given as a trade sample | No output tax if marked and not in saleable form | What was sent, to whom |
| Taken for own use | Same as a gift | Date, item, market value |
| Billed but not delivered | None — it is a supplier credit note | Receiving record, credit note |
Written off and destroyed
You do not account for output tax on business assets disposed of for free if they have no market value. IRAS lets you treat disposed assets as having no market value when all four of these hold: they were previously used by the business, they have been written off in the accounts, they were disposed of rather than given to a third party for further use, and you keep documentary evidence — a certificate of destruction from a licensed waste collector, or sign-off by an authorised person in the company.
In the opening example the cartons went into a skip in July. The loss was real. The evidence was not there. The fix costs five minutes on the day: a write-off form with photos, quantities, the reason, how the goods were disposed of, and a signature.
If the damaged goods are sold instead — to a liquidator, a recycler, staff at a discount — that is an ordinary sale and GST is charged on the price.
Given away
For gifts, IRAS requires output tax on the open market value when the total cost of gifts to the same recipient for the same occasion exceeds S$200 before GST and you claimed input tax on the goods. At S$200 or less, or where no input tax was claimed, nothing is due. IRAS's own example: a retailer gives a friend clothes from stock that cost S$300 and are now worth S$400. Output tax is 9% of S$400, or S$36, reported in Box 1 and Box 6.
Samples escape output tax only if they go to existing or potential customers, are not in a form normally sold to the public, and are clearly marked "Not for sale" or "Sample only". A full-size retail unit handed to a buyer is a gift and follows the S$200 rule.
In the accounts, samples and gifts are a marketing expense. Post the inventory adjustment to a marketing account, not to cost of sales, or the product's margin takes the blame for the sales team's generosity.
Taken by the owner
Stock taken home is a disposal for free, so the gift rule applies for GST. Income tax has its own rule. When trading stock is appropriated for non-trade or capital purposes, its open market value on that date is treated as income of the business — in effect, taxed as though it had been sold at market price. Record it on the day at market value, and let your tax agent handle the reporting.
Still on the shelf, but worth less
Stock is carried at the lower of cost and net realisable value — what it will sell for, less the cost of selling it — assessed item by item. When the expected price drops below cost, the item is written down.
For tax, the detail matters. IRAS's list of business expenses puts a specific provision for obsolete stock on the deductible side and a general provision on the non-deductible side. A flat percentage knocked off the stock value is a general provision. A schedule that names each item, its cost, its expected selling price and the reason is a specific one. Keep the schedule with the year-end file; it is one of the things your accountant will ask for when preparing the corporate tax return.
If you deregister for GST
Unsold stock is a business asset. In the final GST return you account for output tax on assets held on the last day of registration on which input tax was claimed, if their total open market value exceeds S$10,000. A business winding down with a full storeroom should run the stock down first.
Stock in the month-end close
A year-end count confirms a number. The monthly close is what keeps it from drifting. Add five checks to the "count what needs counting" step of the close:
- Item list agrees to the ledger. The total of the inventory item report equals the inventory balance on the balance sheet. With tracked inventory this is automatic; with anything else it is a reconciliation.
- Receipts and bills line up. Goods received but not billed are accrued. Bills entered for goods not yet received are flagged, not added to stock.
- No negative quantities. Each one is a purchase not yet entered or a sale of the wrong item.
- Adjustments reviewed. Every adjustment in the month has a reason, an approver and an attachment, and sits in the right account: write-offs in cost of sales, samples and gifts in marketing.
- Slow movers listed. Anything with no sale in 180 days goes on the write-down review list.
Then look at one ratio. Stock divided by annual cost of sales, times 365, is the number of days of stock you hold. In the opening example that is S$171,900 ÷ S$914,500 × 365, about 69 days. Whether 69 is good depends on supplier lead times. Whether it is rising is a cash question either way, and it belongs on the weekly cash-flow report.
What to automate, in order
- The item master. One code per item, a fixed unit of measure, and default accounts and GST codes on every item. Bad item defaults produce the GST coding errors that surface at quarter-end, and good ones need a chart of accounts that separates cost of sales from overheads.
- Receiving at the door. A phone photo of the delivery order and a quantity against the purchase order, captured when the goods arrive. This one record updates stock and feeds the invoice match.
- Landed cost. Freight, forwarder and permit documents are read and tagged to the shipment they belong to. Any shipment whose landed cost is still incomplete after two weeks is flagged. The permit's value and GST are captured for Boxes 5 and 7.
- Reorder and cover alerts. When an item drops below its reorder point or its days of cover fall under the supplier's lead time, a message goes to whoever places orders — the kind of narrow, reliable signal that works at SME scale.
- Cycle counts. A weekly list of items to count, a blind count sheet on a phone, a variance report, and an approval step before any adjustment above tolerance is posted.
- Exception reports. Negative quantities, items with no movement in 180 days, adjustments with no attachment, and gifts or samples over S$200 to one recipient.
- The year-end pack. Count sheets, variance approvals, write-off evidence, the obsolete-stock schedule and the final stock list, filed together and retrievable for five years.
Step 2 would have caught the short delivery on the day it arrived. A write-off form and the exception reports in step 6 would have explained most of the rest months before the count. That is the aim: a year-end count that confirms the number instead of discovering it.
The bottom line
Stock control is a short chain, and each link depends on the one before it:
Landed cost, not invoice price
→ quantities that move when the
goods move
→ blind counts, signed and kept
→ a recorded reason for every unit
that leaves without a sale
→ evidence for every write-off;
output tax on gifts over S$200
→ stock checked in every close,
not once a year
If your year-end count regularly produces a number nobody can explain, the fix is rarely a new inventory system. It is a receiving record, a write-off form and a monthly check. Use the Calcudesk automation ROI calculator to estimate what the annual clean-up costs now, and if you want those checks built around the systems you already use, book a 30-minute discovery call — we will trace where your stock figure comes from before recommending anything.