What a store has to resolve before you choose a platform
An online store is a business website plus three things it cannot avoid: a catalogue people search, an order that takes money, and a promise about when the goods arrive. Planning one is a sequence of decisions rather than a design brief. What is the business model. What does the buyer actually do, from the first product view to the message confirming delivery. How complicated is the catalogue once variants, pricing and availability are real. Who operates the store day to day. And who carries the post-purchase responsibility when a parcel is late, a payment fails or a customer wants their money back.
The rest of this page uses one assumed example to keep those decisions concrete. A shopper picks physical products with variants from a catalogue. A store operator confirms the order. Stock is either owned by the store or routed to a supplier. Payment is confirmed before stock is allocated. A fulfilment operator receives the delivery handoff. A stock, payment or delivery problem can trigger a refund review. Those roles and policies are illustrative assumptions rather than our recommendation, and the real ones have to be agreed for your project. The worked table further down follows that example through the whole chain.
Malaysia pays electronically now
Published statistic. An average Malaysian now makes more than ten electronic payments a week. A checkout that only takes cards on delivery is refusing the way the country pays.
Source: Bank Negara Malaysia: Annual Report 2025 and Payment Statistics T1. Reviewed .
Read the graphic as text
- 2020: 170.
- 2021: 220.
- 2022: 284.
- 2023: 343.
- 2024: 432.
- 2025: 538. Three times 2020
Chart scale: Electronic payments made per Malaysian, per year.
Catalogue, stock and who actually fulfils the order
Your catalogue and your operations set the build boundary, far more than your design taste does. Six things decide it: how a product is identified, whether it carries variants with their own prices and stock, who owns the stock, which areas you deliver to, how the handoff to whoever ships the parcel works, and who is accountable when an exception occurs. A hundred products with three sizes each is not a hundred products. It is several hundred sellable items, each needing a price, a stock figure and a photograph that matches what arrives. How that data is structured decides whether filtering and catalogue search can work at all.
Fulfilment ownership changes the workflow more than anything else on that list. If you hold your own stock, allocation is an internal decision and you control the delivery promise. If a supplier ships on your behalf, your store is placing an order with someone else, and their acceptance, lead time and stock accuracy become part of a promise your customer thinks you made. Split fulfilment, where some lines ship from you and some from a supplier, needs an agreed rule for what happens when only half an order can be met.
Reservation timing is an operational policy, not a technical default, and platforms differ on it. Odoo, as one documented example, offers three reservation methods: at confirmation, manually, and a configurable number of days before the scheduled delivery date. That is an Odoo-specific example rather than a universal inventory design, but it frames the real question: at what moment does a unit stop being available to the next shopper. Deeper inventory, ERP, shipping and returns mechanics belong to their own guides rather than to this page.
Who actually ships the parcel
Editorial framework. Fulfilment ownership changes the workflow more than any design decision on the page.
Basis: Perfect Design: how ecommerce works. Reviewed .
Read the graphic as text
- You hold the stock. Allocation and the delivery promise are yours
- A supplier ships. Their lead time becomes your promise
- Split across both. Needs a rule for a half filled order
Shopify, WooCommerce or a custom build
Compare the routes by who carries which responsibility, not by brand loyalty. A hosted platform such as Shopify takes hosting, security patching and payment plumbing off your hands and charges for that, in subscription, in app fees and often in a share of each sale. An open-source platform such as WooCommerce gives you the code and the flexibility, and gives you the hosting, the updates and the plugin conflicts along with it. A custom build means the checkout, the data model and the admin are written for your business, and nothing arrives that you did not ask for. Whichever route you take, the domain, the hosting, the platform and payment accounts, the catalogue data and the integrations should sit in your business name from the start. An integration-led route sits on top of whichever of those you choose, and its feasibility depends on the available APIs, the permissions you can get, how clean the data is and what the third party's terms allow.
Every route still needs the same order management underneath. WooCommerce documentation, taken as one scoped example, treats orders created at checkout, orders created manually in the admin, order statuses, payment handling, test orders and abandoned-order recovery as separate concerns to configure and check. That is a WooCommerce-specific example rather than a universal rule, but the list is a fair checklist for any route. Whichever platform you pick, somebody has to decide how each of those behaves.
Why we lean towards custom, and when we do not
When the decision is genuinely open, we tend to recommend building it. The reasons are practical rather than ideological.
- The checkout follows your actual buying journey instead of the platform template, so the steps that lose customers can be removed.
- You are not paying a percentage of every sale to a platform on top of your payment gateway fees.
- Stock, orders and customers live in your own database, so connecting an existing system is an integration rather than a workaround.
- No app subscriptions stacking up each month to restore features the platform left out.
- The store is not held to a theme system, so performance and layout are yours to control.
Custom is not automatically right. A small catalogue with ordinary needs often ships faster and cheaper on Shopify or WooCommerce, and we will say so. If you sell forty products, take card and FPX payments, ship with one courier and have nobody in-house to run a system, the hosted route is the sensible one and paying for it is not a defeat. We would rather tell you that while we are scoping than bill you for a platform you did not need.
What Malaysian payment gateways publish
Gateway fees are an ongoing cost of trading, so they belong in the plan rather than in a footnote. The table below records what four gateways published on their own pricing pages, read on 18 September 2026. Nothing is interpreted, converted or averaged here, and where a page did not publish a figure clearly, the cell says so instead of guessing. Check the current rate at the source before you commit, because gateway pricing changes.
| Gateway | To start | FPX | Cards | E-wallets | Payout |
|---|---|---|---|---|---|
| toyyibPay | No fee on the FPX plan. Card payments carry a RM100 onboarding fee and RM100 a year from the second year. | RM1.00 per consumer transaction, RM2.00 per business transaction | 1.50% local, 3.5% foreign | DuitNow QR at 1.00% or RM1.00 per transaction | FPX in one to four business days, cards in four, DuitNow QR in two |
| Curlec by Razorpay | No setup or annual fee on the basic plan. The premium plan is a one-off RM999. | 1.50% or RM1 per transaction, whichever is greater. 1.00% on the premium plan | 2.40% domestic, 3.30% foreign. 2.00% and 3.10% on premium | DuitNow Pay at 1.20%, Touch n Go and Boost at 1.50% | Not published on the pricing page |
| Billplz | Free basic plan. The standard plan is RM999 a year. | A flat per-transaction fee, published without a unit label. Check the current figure on their page | 1.8% in ringgit, 3.8% otherwise. 1.5% and 3.5% on the standard plan | DuitNow QR, Touch n Go, Boost and GrabPay at 1.5% | FPX next business day, cards in two business days, wallets next day |
| Stripe | No setup, monthly or hidden fees | Listed on their pricing page. Confirm the current rate with Stripe | 3% + RM1.00 domestic, plus 1% international and 2% for currency conversion | GrabPay at 3%, Alipay at 2.9% + RM1.00. DuitNow QR and Touch n Go are not listed | Not stated on the pricing page. Instant payouts cost 1%, minimum RM2.00 |
Four gateways Malaysian merchants regularly ask about, iPay88, senangPay, Razer Merchant Services and Revenue Monster, do not publish transaction rates publicly and quote on application. Revenue Monster publishes a RM499 setup fee and terminal rental but no transaction rates. That is useful to know before you plan around a number heard second hand: a like-for-like comparison with those four needs a written quote from each, and the quote usually depends on your volume.
What settlement speed does to cash
Illustrative calculation. Hypothetical figures: settlement speed decides when the money is usable, which a tenth of a per cent rarely outweighs.
Basis: Stripe: Payouts. Reviewed .
Read the graphic as text
- Daily sales: RM 10,000. A round figure chosen for the example
- Next day payout: RM 10,000. About one day of sales in transit
- Four day payout: RM 40,000. About four days of sales in transit
- The difference: RM 30,000. Cash you cannot spend on stock this week
Match the workflow to what you sell
The commerce model decides the workflow, because each one has a different central entity and a different handoff. Storefront retail turns on a buyer and a product. B2B or dealer ordering turns on an approved account with its own pricing rules, so the catalogue and the price change depending on who is logged in, and an order may need approval before it is real. A marketplace turns on buyer, seller and settlement, which means you are running someone else's shop as well as your own and you owe them a payout. Our Aruva Marketplace prototype follows one order through all six roles a marketplace has to run: buyer, seller, platform operations, warehouse, carrier and support.
The models we are asked for after those are custom builds scoped to the business rather than off-the-shelf packages. Subscriptions turn on a recurring agreement and a renewal that can quietly fail. Digital products turn on entitlement, so what is delivered is access rather than a parcel. Rentals turn on a timed asset that has to come back in one piece. Event ticketing turns on capacity and admission, and course sales on enrolment and continuing access. Restaurant ordering turns on menu availability, preparation time and a pickup or delivery window. Our PestaHub prototype shows the timed-inventory shape: a live floor plan where a lot is either free or gone.
Payment, the order record, inventory and the admin view are shared subsystems across all of them. What is never shared is the exception rule. A failed subscription renewal, an unreturned rental and a missed collection slot are three different problems with three different owners. Our own checkout work has covered physical goods, services and digital products, with the fulfilment step changing according to what is being sold.
Online banking carries Malaysian checkouts
Published statistic. FPX is the rail Malaysian buyers reach for first. A store that hides it behind a card form is choosing the more expensive, less familiar option for its customers.
Source: Bank Negara Malaysia: Payment Statistics, Table T3 Payment Systems. Reviewed .
Read the graphic as text
- 2020: 367m.
- 2021: 639m.
- 2022: 646m.
- 2023: 714m.
- 2024: 826m.
- 2025: 956m. RM465 billion
Chart scale: FPX transactions per year, in millions.
The chain every store shares
Whatever the model, one chain runs underneath: product selection, checkout and confirmed payment, stock allocation, fulfilment, then exception and refund handling. The table walks the assumed example through it. The right-hand column is the part most plans leave out, and every entry in it is a test to run or a record to collect before launch, not a result being claimed in advance. The actors and policies remain assumptions to agree.
| Workflow step | Assumed actor | Proposed system response | Exception | Acceptance evidence to collect |
|---|---|---|---|---|
| Product selection | Shopper | Add the selected variant to the cart at its agreed price | The variant is unavailable, or its price changed after the page loaded | Catalogue and cart identity checks, price checks and availability checks |
| Checkout and confirmed payment | Shopper | Submit the order and wait for an authoritative payment status before confirming anything | Payment fails, is delayed, or a confirmation arrives twice | Observed success, failure, delay and replay payment events, with the order state recorded after each |
| Stock allocation | Inventory owner | Allocate under the agreed post-payment policy, or route the line to the supplier | Stock is short, or the supplier rejects the routed line | Allocation timing tests, concurrent-order tests and supplier routing tests |
| Fulfilment | Fulfilment operator | Record the agreed handoff and keep the order status moving as the parcel does | The handoff is missed, or only part of the order ships | Status transitions, customer notifications and delivery references, observed end to end |
| Exception and refund handling | Support and finance owners | Link the refund to its order and reconcile stock under the agreed policy | A refund is requested twice, or the payment and order records disagree | A duplicate refund test and a partial-return test, with payment identifiers, order transitions and stock-ledger reconciliation |
What a card payment costs, as published
Published statistic. The headline rate is half the decision. Settlement speed, the online banking fee and what a plan upgrade costs decide what you actually keep.
Source: toyyibPay pricing plans. Reviewed .
Also: Billplz pricing.
Also: Curlec by Razorpay pricing.
Also: Stripe Malaysia pricing.
Read the graphic as text
- toyyibPay: 1.50%. Cards carry a RM100 onboarding fee
- Billplz: 1.80%. 1.5% on the paid plan
- Curlec: 2.40%. 2.00% on the premium plan
- Stripe: 3.00%. Plus RM1.00 per transaction
Chart scale: Domestic card rate on the entry-level plan, read from each gateway on 18 September 2026.
When implementation help is worth paying for
The honest test is where the boundaries fall. If the catalogue, payments, fulfilment, integrations, permissions and exception paths all sit inside one platform, a hosted store and a good theme may be all you need. Once any of those cross a system boundary, into an accounting package, a supplier feed, a dealer price list or a customer database you already run, the work stops being configuration and starts being engineering.
For a useful first conversation, bring six things: where you are now, what you want to change, who it affects, what you already use, any constraint we should know about, and what would make you call the result accepted. Design and build deliverables are scoped and accepted separately from search visibility, measurement and ongoing care, and the platform, integration and maintenance responsibilities are agreed for your actual project rather than assumed. Tell us what you sell on the contact page and we will tell you which route we would take and why.



