Shipping revenue versus shipping cost
Delivery is the second largest cost on most Malaysian ecommerce orders after the goods themselves, and it is the one most likely to be recorded in a way that makes it impossible to manage.
The problem is not that the cost is unknown. It is that shipping charged to customers and shipping paid to couriers are usually recorded in different places, at different times, at different levels of detail, and never brought together.
Keep the two sides separate and comparable
Shopify records shipping charged as its own component of the order, separate from the goods. That separation is deliberate and it should be preserved all the way into your accounts.
Shipping revenue is what you charged the customer, per order.
Shipping cost is what the courier charged you, per consignment, arriving on an invoice days or weeks later, sometimes with surcharges applied after the fact.
The instinct is to net them, or to code the courier invoice to a monthly delivery expense and forget it. Either way the comparison disappears, and with it any ability to answer whether your delivery pricing works.
The figure worth having monthly: shipping revenue, shipping cost, and the difference. Three numbers. Most stores have neither the first nor the second in a form that allows subtraction.
Free shipping is a promotion with a courier invoice
This is where the money actually goes on most stores.
Free delivery above a threshold is enormously effective at lifting basket size and it is not free. The courier charges the same as always; you have simply chosen to absorb it. Recorded as an absence of shipping revenue rather than as a promotional cost, it becomes invisible.
Two questions follow, and both are answerable from the data.
Is the threshold set correctly? The uplift in basket size has to exceed the delivery cost you absorb on the orders that qualified. Set too low, you are giving away delivery on orders that would have happened anyway. Set too high, nobody reaches it and it does nothing.
Which products qualify most often? A heavy, low-value product that regularly tips an order over the threshold is consuming the promotion's budget. That may be fine, and it should be a decision rather than an accident.
The analysis needs shipping cost attached to orders rather than accumulated monthly, which is why the recording question comes first — see per-product profitability on your own store.
The surcharges that arrive later
Malaysian courier invoices routinely contain charges that were not knowable when the parcel was collected.
Weight or dimension corrections. The courier reweighed or measured the parcel and charged for what it actually was, which may differ from what your system declared. On a store with variable packing this is systematic rather than occasional.
Remote area surcharges. Destinations outside standard coverage attract an additional charge, and East Malaysia and rural addresses are where this shows up.
Return-to-sender charges. A failed delivery coming back costs money in both directions, and it belongs to the order that generated it.
Fuel or peak adjustments, applied across a period.
All four arrive after the sale, which means the true delivery cost of an order is not known on the day it ships. Two consequences: same-day margin is an estimate, and any process that reconciles courier invoices only in total will never attribute these to the orders that caused them — see capturing the consignment note against the order.
Why your rates and the courier's rates diverge
The rates you charge customers are usually a simplified version of what you are charged, and simplification always costs something.
You charge flat rates by zone; the courier charges by weight band within zone. You charge one price for West Malaysia; the courier's cost varies within it. You charge nothing above a threshold; the courier charges regardless.
That divergence is a legitimate commercial choice — simple delivery pricing converts better than accurate delivery pricing. What matters is knowing its size. A store whose shipping revenue covers eighty per cent of its shipping cost is running a deliberate subsidy, and that is a fine position to be in provided it is deliberate.
The store that cannot tell you the figure is running an accidental subsidy of unknown size, and it grows with volume.
What to do with the answer
Four moves, in order of how easily they are made.
Adjust the threshold rather than the rates. Customers notice a shipping charge and do not notice a threshold moving slightly.
Reprice the outliers. Heavy low-value products can carry their own delivery charge, or be sold in multiples that make the delivery economics work.
Look at your courier mix. Different couriers price differently by destination and weight, and a store shipping everything through one carrier is unlikely to be optimal across its whole spread — see why Malaysian couriers keep their own networks.
Reduce the parcel, not the rate. Packing improvements that move a parcel into a lower weight band reduce cost with no customer-facing change at all, and this is consistently the most overlooked option.
The point of the comparison is not to eliminate the gap. It is to make it a number somebody chose — see the real margin on a Shopify order.
Common questions
Should shipping revenue and shipping cost be recorded separately?
Yes. Shipping charged to the customer arrives as its own order component and the courier charge arrives later on an invoice, so netting them or coding the courier invoice to a monthly expense removes the only comparison that matters. The useful monthly figures are shipping revenue, shipping cost and the difference between them.
How should free shipping be accounted for?
As a promotional cost rather than as an absence of shipping revenue. The courier charges the same regardless, so free delivery above a threshold is a subsidy you have chosen to absorb, and recording it as simply no shipping line makes both its size and its effectiveness invisible.
Why do courier charges differ from what was expected?
Because several charges are applied after collection: weight or dimension corrections when the courier measures the parcel itself, remote area surcharges for destinations outside standard coverage, return-to-sender charges on failed deliveries, and periodic fuel or peak adjustments. The true delivery cost of an order is therefore not known on the day it ships.
What is the cheapest way to reduce delivery cost?
Packing improvements that move a parcel into a lower weight band, since they reduce cost with no customer-facing change at all. Adjusting a free-shipping threshold is next, because customers notice a shipping charge appearing but rarely notice a threshold moving slightly, followed by repricing heavy low-value outliers and reviewing courier mix by destination.
Related: per-product profitability on your own store · why Malaysian couriers keep their own networks · the real margin on a Shopify order
Read next
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