Shopify in Malaysia — what it does, what it cannot do, and what that costs
Shopify is a good storefront. It handles the catalogue, the checkout, the discounts and the customer relationship, and Malaysian merchants use it for the reason merchants everywhere do: on a marketplace you rent the customer, and on your own store you own them.
There is one structural fact about running Shopify in Malaysia that almost nobody is told before they start, and it decides how much work the finance side will be for as long as the store exists.
Shopify Payments is not available in Malaysia.
Everything below follows from that sentence.
Why one missing product changes the accounting
In the countries where Shopify Payments operates, Shopify is both the shop and the payment processor. It knows what the customer paid, what it deducted in fees, when it paid you, and which orders were in that payout. The books close because one system saw the whole transaction.
Malaysia is not one of those countries. A Malaysian merchant connects a third-party gateway instead — iPay88 or eGHL, now consolidated under ADAPTIS, or Fiuu, Billplz, senangPay, Curlec, Stripe. The store is Shopify. The money is somebody else's.
That split is invisible until you try to work out what a sale actually made you.
What Shopify's own data contains, and what it does not
This is not a matter of interpretation. Shopify documents it. The OrderTransaction object in the Admin API carries a fees field, and against it sits this note:
Only present for Shopify Payments transactions.
The same restriction applies to the settlement currency and settlement rate fields.
So for a Malaysian store, the API returns the order, the line items, the discounts and the gross amount the customer was charged — and nothing at all about what that sale cost to collect. No fee. No net. No payout record. No link between a deposit in your bank and the orders that produced it.
Shopify holds one leg of a three-legged problem, and no amount of configuration changes that, because the data is not being withheld — on Shopify's side it does not exist.
The fee nobody budgets for
There is a second consequence, and this one is money rather than data.
Because you cannot use Shopify Payments, Shopify applies a third-party transaction fee to every order — 2% on the Basic plan — on top of whatever the gateway charges, which is typically another 2–3%.
A Malaysian merchant is therefore paying roughly double the headline processing rate. Worse, the Shopify half arrives on your Shopify invoice rather than in your order data. It is not deducted per order, it is not in any settlement report, and it will not appear in a per-product margin figure unless somebody puts it there deliberately.
Sellers routinely discover this months in. See the Shopify third-party gateway fee explained.
So reconciliation is three-way, not two-way
On Shopee or TikTok Shop the platform hands you a settlement report with the fees itemised. Painful to read, but complete — see how to read your Shopee settlement report.
A Malaysian Shopify store has no such document, because no single party produced one. Instead:
Shopify tells you what was ordered — orders, line items, discounts, gross value, refunds. The gateway tells you what was collected and what it cost — fees, net amount, payout batches, holds, chargebacks. The bank tells you what actually arrived.
Closing the books means matching all three, and the joining keys were not designed to line up. Shopify has an order number. The gateway has its own transaction reference. The bank has a lump sum covering a day or two of orders, net of fees, with a narration field that may name neither.
That is the entire problem in one paragraph, and how Shopify reconciliation actually works sets it out step by step.
The things that go wrong, in the order they usually go wrong
Revenue recorded from the bank. The deposit is net, so revenue is understated and the fees are never recorded as an expense at all. Margin then looks better than it is on every single product.
Fees averaged instead of attributed. One monthly fee figure spread across all orders. Adequate at the P&L level, useless for deciding which products or channels are worth having — fee structures differ by payment method, and an FPX transfer, a card payment and a buy-now-pay-later order do not cost the same.
Refunds treated as negative sales. They are not. A refund usually returns the principal and not the original processing fee, so every refunded order leaves behind a cost that never comes back.
Chargebacks found late. On a marketplace the platform absorbs most disputes. On your own store you do not, and a chargeback lands weeks after the sale with a fee attached.
Several gateways, none joined up. Most growing Malaysian stores end up with two or three, because customers reach for FPX, cards and e-wallets in different proportions. Each settles on its own clock into the same bank account — see running more than one payment gateway.
What the API side actually demands
If you are building or buying an integration, the shape of the work is worth knowing before anyone estimates it.
Shopify's Admin API is GraphQL. REST has been legacy since October 2024, and new public apps have been GraphQL-only since April 2025. Versions ship quarterly and are supported for roughly twelve months, so an integration needs a maintenance pass a couple of times a year rather than ever being finished.
Two access gates catch people out. Orders older than 60 days require Shopify's approval through an additional scope, and customer personal data requires a separate protected-data approval. Both are lead time in a project plan, not a checkbox.
Rate limits are cost-based rather than request-based, and bulk operations — asynchronous, delivered as JSONL — are the right tool for a nightly full pull, because they sit outside the limits that constrain ordinary queries.
Then you do all of it again for the gateway, whose API is a different design by a different company with different guarantees. What it takes to build a Shopify connector covers the real scope.
The standard to aim at
- Revenue recognised from orders, never from bank deposits
- Gateway fees attributed to the orders that incurred them, not averaged across a month
- The Shopify platform fee treated as a cost of sale, because that is what it is
- Every payout decomposed to the orders inside it, then matched to the bank
- Refunds, chargebacks and their fees recorded separately from sales
- One stock figure across the store, the marketplaces and any physical outlets
None of that is exotic. It is ordinary accounting made awkward by a data split Malaysian merchants did not choose and cannot configure away.
Common questions
Is Shopify Payments available in Malaysia?
No. Shopify Payments operates in a limited set of countries and Malaysia is not among them, so Malaysian merchants connect a third-party gateway such as iPay88 or eGHL under ADAPTIS, Fiuu, Billplz, senangPay, Curlec or Stripe. The store runs on Shopify while the money runs through a separate company, and that split is the source of most reconciliation difficulty.
Why can Shopify not tell me what a sale cost me?
Because the fee data belongs to the payment processor, and in Malaysia the processor is not Shopify. Shopify's own API documentation states that the transaction fees field is present only for Shopify Payments transactions, so a Malaysian store's API returns the gross order with no fee, no net amount and no payout information at all.
What is the extra Shopify fee for Malaysian merchants?
Because Shopify Payments cannot be used, Shopify charges a third-party transaction fee on every order — 2% on the Basic plan — in addition to the 2–3% the gateway itself charges. It is billed by Shopify rather than deducted per order, so it lands on your Shopify invoice rather than in your sales data and is easily left out of margin calculations entirely.
How is reconciling a Malaysian Shopify store different from reconciling Shopee?
Shopee produces a single settlement report showing orders, fees and the resulting payout, so reconciliation is a two-way match against the bank. A Malaysian Shopify store has no equivalent document: orders live in Shopify, fees and payouts live with the gateway, and the deposit lives in the bank, so three separate sources must be joined using references that were never designed to correspond.
Related: how Shopify reconciliation actually works · choosing a payment gateway for your Malaysian store · expanding from Shopee to your own online store
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