Skip to content
All blog
Shopify Inventory Malaysia Reporting

Inventory valuation across online and offline

David 7 min read

A Malaysian retailer selling through a shop and a Shopify store is running one inventory across two channels. The stock is physically in locations; the demand arrives from wherever it arrives; and the balance sheet needs a single defensible number for what all of it is worth.

Getting that number right is mostly about deciding where the truth lives before the systems disagree.

The problem, stated plainly

Shopify knows stock by location and adjusts it as online orders are placed. Your point of sale adjusts it as shop sales happen. Your accounting system values it. Purchasing adds to it. Stock counts correct it.

Four systems with an opinion about the same physical items. They will diverge, and the question is not whether but how quickly you find out and which one wins.

Decide the master. One system holds authoritative quantities and the others follow. Usually the system where receiving happens, because that is where stock enters and where landed cost is established — see multi-channel stock sync for Malaysian retailers.

A design where two systems both believe they are authoritative produces a slow, permanent drift that nobody can reconcile because there is no reference point.

Quantity and value are different problems

Worth separating, because they are usually conflated and they have different answers.

Quantity is operational. It decides whether you can sell something, and it needs to be current within minutes on fast-moving lines to avoid overselling.

Value is financial. It decides what appears on your balance sheet and what lands in cost of goods sold, and it needs to be correct at period end rather than continuously.

That difference means Shopify's stock levels being slightly behind is an operational annoyance, while your valuation being wrong is a reporting error. They deserve different levels of attention, and stores routinely give all of it to the first.

Landed cost, or the valuation is wrong from the start

Inventory should be valued at what it cost to get it into your possession, not at what the supplier invoiced.

Purchase price, in ringgit at the rate on the date of the transaction.

Inbound freight, apportioned across the shipment. Apportioning by value is simplest; by weight is more accurate where the shipment mixes light expensive items with heavy cheap ones.

Import duty and clearance charges.

Inbound handling you pay for.

For an importing retailer the difference between invoice cost and landed cost is substantial, and using the invoice figure understates inventory on the balance sheet and overstates gross margin on every sale — see importing and foreign currency and cost of goods sold for Shopify stores.

Where stock goes missing between channels

Five places, and each needs representing rather than absorbing.

In transit between locations. Stock has left one place and not arrived at another. It exists and it is not available at either end, and a model with no in-transit state has to pretend it is in one of them.

Reserved against unpaid orders. Committed to orders that may never be paid. Real stock, unavailable to sell, and it should be released automatically when the order expires — see failed payments and the orders they leave behind.

Out with a courier and not yet delivered. Dispatched, not yours any more in commercial terms, and not the customer's yet either.

Returned and not yet inspected. Physically back and not yet valued, because its condition has not been decided — see returns on your own store and what they cost.

Shrinkage. Found at stock count, and the honest treatment is to record it as shrinkage rather than to quietly adjust quantities until they agree.

That last one matters more than it sounds. Adjusting a count to match the system removes the only signal you had. Recording the difference as a loss makes it a measurable, trending number that can be acted on.

The reconciliation that makes it trustworthy

Three checks, on three different rhythms.

Quantity, continuously. Shopify's stock against your master system. Differences here are usually sync failures or manual adjustments made in one place, and they are cheap to fix when found the same day.

Value, at period end. Total inventory value in your accounts against quantity at cost from your master system. This is the one that appears in your reporting and it should tie.

Physical, periodically. A count, at least on high-value and fast-moving lines, more often than annually. Cycle counting a subset weekly is far more effective than one full count a year and much less disruptive.

The measure of health is the size and direction of the differences over time. Small and random is normal. Growing or consistently one-directional means a process is wrong, not that stock is being lost — see keeping automated books healthy.

Common questions

Which system should hold authoritative stock quantities?

One, chosen deliberately — usually the system where stock is received, because that is where inventory enters and where landed cost is established. Every other system follows it. A setup where two systems each believe they are authoritative produces permanent drift with no reference point against which to reconcile.

Why separate inventory quantity from inventory value?

Because they are different problems with different tolerances. Quantity is operational and needs to be current within minutes on fast-moving lines to avoid overselling. Value is financial and needs to be correct at period end rather than continuously. Stock levels running slightly behind is an annoyance; a wrong valuation is a reporting error.

What should inventory be valued at?

Landed cost: the purchase price at the transaction-date exchange rate, plus apportioned inbound freight, import duty and clearance charges, and any inbound handling. For an importing retailer, using the supplier invoice figure instead understates inventory on the balance sheet and overstates gross margin on every subsequent sale.

How should stock discrepancies found at a count be handled?

Recorded as shrinkage rather than absorbed by adjusting quantities until they agree. Adjusting to match removes the only signal available, whereas recording the difference as a loss makes it a measurable figure that can be trended and acted on. Cycle counting a subset weekly surfaces these far earlier than one annual count.


Related: multi-channel stock sync for Malaysian retailers · cost of goods sold for Shopify stores · inventory and profit: the connection


See what you could build

Start a free trial and describe what your business needs in plain language — SmartB Studio builds the module for you.

Start free trial
Get started

No credit card · Cancel anytime · Your data stays yours