Source: Google Gemini

Inventory costing sounds like one of those topics people promise to “look at later.”

Then later becomes month-end.
Month-end becomes panic.
And panic becomes this question:

“Why is our COGS so weird?”

If you run a Shopify store, especially across multiple channels, inventory costing can go wrong very quietly. Sales may look healthy. Stock may look “more or less okay.” But your Cost of Goods Sold (COGS) can still be wrong because the transactions underneath are messy.

And when COGS is wrong, everything downstream gets distorted:

  • gross profit
  • margin by product
  • stock valuation
  • monthly profit
  • management reports
  • tax reporting

That is why this topic matters.

This article explains how Shopify businesses can avoid COGS errors by protecting transaction integrity. In simple English, that means making sure every sale, return, transfer, adjustment, and stock movement is recorded correctly from the start.

We will cover:

  • what inventory costing actually means
  • why Shopify sellers get COGS wrong
  • the most common transaction integrity problems
  • how to build a cleaner costing process
  • practical controls for Malaysian SMEs
  • what finance and ops must check every month

Let’s make your COGS less “agak-agak” and more trustworthy.


What Inventory Costing Actually Means

Inventory costing is the method your business uses to assign cost to the products you sell.

If you buy or produce a product for RM40 and sell it for RM100, your gross profit is not RM100. It is:

Sales price – Cost of goods sold

So if cost = RM40, then:

  • Sales = RM100
  • COGS = RM40
  • Gross profit = RM60

Simple enough.

But in real life, your actual cost may include:

  • product purchase cost
  • freight-in
  • import duty
  • packaging
  • landed cost allocation
  • warehouse handling, depending on your policy

And when you sell hundreds or thousands of SKUs through Shopify, it is not enough to know the cost “roughly.” You need a process that ties cost to real transactions accurately.

That is where transaction integrity comes in.


What “Transaction Integrity” Means in Shopify Inventory Costing

Transaction integrity means every inventory-related event is captured correctly, consistently, and in the right order.

For example:

  • when stock is received, quantity and cost are correct
  • when goods are sold, the right units leave stock
  • when goods are returned, they go back correctly or get written off properly
  • when stock is transferred, both sides are recorded
  • when damaged goods are scrapped, inventory is reduced properly
  • when manual adjustments happen, there is approval and support

Without transaction integrity, your costing logic falls apart.

You might have:

  • correct formula
  • nice dashboard
  • beautiful accounting software

…but still get wrong COGS because the underlying stock movements are wrong.

That is like using a calculator perfectly on bad data. Very accurate nonsense.


Why Shopify Businesses Commonly Get COGS Wrong

Shopify itself is very good at helping you sell.

But Shopify does not automatically guarantee accurate inventory costing unless your processes and integrations are strong.

Here are the common reasons COGS gets distorted.

1. Inventory quantities are wrong

If stock in the system does not match physical stock, then cost calculation based on that inventory is already weak.

2. Purchase cost is not updated properly

If product cost changes but the system still uses an old average or default cost, margin reports become misleading.

3. Returns are handled badly

A refunded order may reverse revenue, but the stock may not come back properly or may come back in the wrong condition.

4. Manual stock adjustments are uncontrolled

One casual adjustment in the warehouse can quietly affect inventory value and COGS.

5. Multi-channel sales are not synced properly

You may sell on Shopify, Shopee, TikTok Shop, and retail. If the stock movement only appears in one place, COGS gets out of sync with sales.

6. Bundles and kits are not mapped correctly

Selling one bundle should deduct several component SKUs. If that does not happen properly, inventory and COGS become unreliable.

7. Damaged or obsolete stock stays in inventory

If unsellable items remain as active inventory, stock value is overstated and COGS does not reflect reality.


The 8 Biggest COGS Errors Caused by Weak Transaction Integrity

Let’s go through the most common ones.


1. Selling Stock That Was Never Received Properly

This happens when goods arrive physically, but the receiving process is incomplete or wrong.

Example:

  • supplier sends 500 units
  • warehouse receives 480
  • system is updated as 500
  • 20 units were actually short or damaged

Now your stock quantity is overstated from day one.

When sales happen later, your system thinks it is consuming good stock that never existed. Eventually, someone adjusts the stock down, and COGS jumps in a later month.

Better control

At goods receipt:

  • count properly
  • inspect for shortages or defects
  • record the true quantity received
  • update cost only after receiving is confirmed

Do not receive by invoice only. Receive by physical reality.


2. Using Outdated Product Costs

Many SMEs enter a cost price once and then forget about it for months.

But product costs change:

  • suppliers raise prices
  • freight goes up
  • exchange rates change
  • packaging becomes more expensive
  • imported goods cost more after duty and delivery

If Shopify or your inventory system keeps using old cost, your reported margin becomes fiction.

Malaysian example

A Kuala Lumpur seller imports drinkware from China. Original cost per unit was RM18. Freight and import changes increase the landed cost to RM23, but the system still uses RM18.

Sales look profitable.
Actual profit is much thinner.

Better control

Review and update:

  • purchase cost
  • landed cost
  • packaging cost, if included in inventory policy

At minimum, do this for major SKUs every month or every new stock receipt batch.


3. Returns Are Refunded but Inventory Is Not Handled Correctly

This is one of the biggest hidden COGS problems.

A customer returns an item. Finance processes the refund. Good.

But what happens to the stock?

Possible outcomes:

  • item is resellable and goes back to stock
  • item is damaged and should not go back to normal stock
  • item is disposed of
  • item never physically returns, but refund was still given

If your system treats every refund as if stock came back in good condition, then inventory is overstated and future COGS is distorted.

Better control

Every return must be classified:

  • restockable
  • damaged
  • disposal
  • pending inspection

And the accounting treatment should match that condition.


4. Manual Adjustments Are Changing Inventory Value Quietly

Manual inventory adjustments are sometimes necessary.

But if they are frequent, uncontrolled, or undocumented, they destroy transaction integrity.

Common examples:

  • “found extra stock”
  • “just reduce this item”
  • “warehouse forgot to update”
  • “customer service said replace one unit”

Each of these affects:

  • quantity on hand
  • inventory value
  • future COGS
  • margin analysis

Better control

Require:

  • reason code
  • user name
  • approval
  • evidence for adjustment

A manual stock adjustment without documentation is basically a quiet invitation to future reconciliation pain.


5. Bundle Sales Are Not Reducing Component Costs Properly

Bundles are great for sales and terrible for lazy stock control.

Example:
A gift set sells on Shopify as one SKU, but physically it contains:

  • 1 serum
  • 1 toner
  • 1 cleanser

If your system deducts only the bundle shell SKU and not the components, then:

  • stock is wrong
  • COGS is wrong
  • component inventory remains overstated

Better control

Use proper bundle or bill-of-material logic so each bundle sale deducts the correct underlying items and their costs.

This is especially important for:

  • festive gift sets
  • beauty bundles
  • F&B hampers
  • subscription boxes

6. Multi-Location Transfers Are Not Recorded Properly

If you use:

  • retail outlet
  • main warehouse
  • third-party fulfilment centre
  • pop-up location

then stock transfers must be tracked correctly.

If one location reduces stock but the other side is not recorded properly, your cost and availability data become unreliable.

Example

HQ warehouse sends 100 units to a Johor retail outlet. Ops moves the stock physically, but the system is not updated. Shopify still thinks the warehouse holds those units.

Now online sales may use stock that is already elsewhere, and month-end stock valuation becomes messy.

Better control

Every transfer should have:

  • transfer date
  • source location
  • destination location
  • SKU and quantity
  • cost basis carried across
  • receiving confirmation

A transfer is not just a logistics event. It is an accounting event too.


7. Disposal and Damage Write-Offs Are Delayed

Unsellable stock often stays in the system too long because nobody wants to deal with it.

Common examples:

  • expired goods
  • damaged returned items
  • broken packaging
  • obsolete inventory
  • discontinued stock

If this stock remains as active inventory, then your closing stock is overstated and future COGS is understated.

That makes margins look healthier than they really are.

Better control

Review damaged and obsolete stock monthly.

If goods are no longer sellable:

  • write them off properly
  • move them out of active inventory
  • document the reason

This is not being negative. It is being honest.


8. Omnichannel Sales Are Not Feeding One Costing Logic

If you sell through:

  • Shopify
  • Shopee
  • TikTok Shop
  • wholesale
  • retail POS

but your cost system only properly tracks Shopify orders, then your inventory costing is incomplete.

You may have:

  • revenue from all channels
  • stock movement from some channels only
  • manual journals trying to fill the gaps

That leads to:

  • wrong stock balances
  • weird COGS swings
  • clearing accounts that do not tie

Better control

All channels must feed one central inventory movement process.

Omnichannel revenue without omnichannel stock control is a recipe for inaccurate COGS.


How to Build Stronger Inventory Costing With Transaction Integrity

Now let’s move from problems to practical structure.


1. Define One Costing Policy

First, decide what your inventory cost includes.

For example:

  • product purchase cost
  • freight-in
  • import duty
  • inward shipping
  • packaging, if material and consistent

Document it.

If the warehouse team, purchasing team, and finance team all use different definitions of “cost,” your reports will never align properly.


2. Protect the Receiving Process

Goods receiving is the start of transaction integrity.

Control this carefully:

  • count actual quantity received
  • inspect condition
  • match to PO and supplier documents
  • confirm unit cost
  • update inventory only after verification

Many COGS problems begin at receiving and only become visible much later.


3. Use Consistent SKU Mapping

One product must have one clear SKU identity across:

  • Shopify
  • warehouse system
  • accounting reports
  • marketplaces
  • purchasing records

If the same product appears under different names or mismatched codes, costing errors multiply quickly.


4. Separate Return Outcomes Physically and Financially

Returned stock should not all go into one “returns pile”.

Create separate outcomes:

  • restockable
  • damaged resale
  • non-sellable
  • disposal

Then make sure the accounting entries reflect those categories.

This improves both stock integrity and COGS accuracy.


5. Restrict Manual Adjustments

Manual inventory entries should be rare, visible, and approved.

At minimum:

  • every manual change needs a reason
  • every large change needs approval
  • every month-end adjustment needs review

This reduces accidental or casual changes that distort COGS.


6. Reconcile Inventory Movements Monthly

Do not only compare closing stock count.

Review the movement chain:

  • opening stock
  • purchases received
  • transfers
  • sales
  • returns
  • write-offs
  • adjustments
  • closing stock

This helps finance identify where the integrity broke, not just that something is wrong.


7. Align Ops and Finance Reviews

Inventory costing is not a finance-only issue.

Ops controls:

  • what physically happens

Finance controls:

  • how it is recorded and valued

If those two teams do not review together, inventory integrity weakens fast.

A monthly ops-finance review should cover:

  • top stock variances
  • damaged and written-off stock
  • major returns
  • slow-moving or obsolete items
  • negative margin SKUs
  • unusual manual adjustments

A Practical Example

Let’s say a Shopify seller in Selangor sells insulated tumblers.

Scenario

  • 1,000 units received
  • system recorded all 1,000 at RM20 each
  • actual usable units after inspection = 960
  • 40 had dents and cannot be sold as standard stock

If the team records all 1,000 as good inventory, then:

  • stock value is overstated by RM800
  • future COGS per sale may look fine at first
  • later, when the 40 units are written off, one month suddenly shows a big stock loss
  • margin appears unstable

Better treatment

At receipt:

  • 960 units into saleable inventory
  • 40 units into damaged / non-sellable review
  • write off or revalue those 40 based on actual recoverable value

Now both inventory and COGS are more accurate from the start.


Suggested Finance Controls for Shopify Inventory Costing

Here is a practical checklist.

Weekly

  • review unusual manual stock adjustments
  • review major returns and stock treatment
  • review negative stock positions
  • review top-selling SKUs for stock reasonableness

Monthly

  • reconcile opening to closing stock movement
  • review purchase cost updates
  • review damaged and obsolete stock
  • review bundle component deductions
  • review multi-location transfers
  • test a few sales and returns end-to-end

Quarterly

  • test landed cost logic
  • review costing method consistency
  • review channel integration completeness
  • review stock write-off trends

These are not glamorous controls, but they stop ugly surprises later.


Common Mistakes to Avoid

Let’s make these very direct.

Mistake 1: Trusting system stock blindly

System stock is only as good as the transactions feeding it.

Mistake 2: Updating selling prices but not cost prices

Then gross margin analysis becomes misleading.

Mistake 3: Refunding customers without proper stock outcome tracking

Then COGS and inventory drift apart.

Mistake 4: Treating bundles as one item only

Then component cost and stock remain wrong.

Mistake 5: Delaying write-offs

Then stock value looks stronger than reality.

Mistake 6: Letting every staff member adjust stock casually

Then transaction integrity disappears quietly.


Final Thoughts

Shopify inventory costing is not only about choosing a cost method.

It is really about whether your stock transactions are:

  • captured correctly
  • approved properly
  • valued consistently
  • linked across operations and finance

That is what transaction integrity means.

If transaction integrity is weak, your COGS will be weak too.
And when COGS is weak, your gross margin becomes a story instead of a fact.

The fix is not complicated, but it does require discipline:

  • receive stock properly
  • update cost accurately
  • control manual adjustments
  • classify returns correctly
  • track bundles and transfers properly
  • review damaged and obsolete stock on time

Do that, and your Shopify COGS becomes much more reliable.

And when management asks,
“Are these margins real?”

finance can say,
“Yes.”

Which is a much nicer answer than,
“More or less.”