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:

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 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:

  1. 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.
  2. Count blind. The count sheet lists item and location, not the system quantity. A counter who can see "48" tends to find 48.
  3. Use two people. One counts, one records, and the person who runs the storeroom day to day does not count alone.
  4. Separate what is not yours. Consignment stock, customer goods in for repair, and anything already sold are left off the sheet.
  5. 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.
  6. Record condition. Damaged, expired and dusty items are noted as they are found. The count is when write-down candidates surface.
  7. 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:

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

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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.

Back to journal Get my opportunity map