GlemorDocs
Team guide

Orders and payment

Card payment is not live yet. Until it is, checkout sends customers to WhatsApp — on purpose.

Online payment is not switched on

The shop is built for Stripe, and the checkout will collect card, FPX and GrabPay the day the keys are in place. Today they are not. Until a Stripe secret key is set on the storefront's server, pressing Checkout returns this, and no payment is attempted:

Online payment is not configured yet. Message us on WhatsApp at +60 12-898 9412 and we will take the order by hand.

That is the designed behaviour, not a bug. A checkout that fails silently loses the sale; a checkout that hands the customer a working way to buy does not.

So where are the orders?

Nowhere on the site, until payment is switched on. While the checkout is returning the message above, the site cannot take an order — so an order reaches you the way the message asks for it, on WhatsApp. There is no order list to check.

In Stripe, once the keys are set. When card payment goes live, completed orders appear in the Stripe dashboard, and that is where fulfilment happens: the checkout collects a Malaysian shipping address and a phone number, so the customer's details and what they paid are on the payment record.

The Orders screen in the admin stays empty

Medusa runs the catalogue and nothing else. The shop asks it for products and prices; it does not create orders there. An empty Orders list in the Medusa admin is normal and does not mean a sale went missing.

Switching payment on

This one is a developer's job, and it is short. Someone needs to:

  1. Create the Stripe account, switch on Card, FPX and GrabPay — the last two need a Malaysian Stripe account.
  2. Put the secret key into the storefront's environment on Vercel.
  3. Register the payment notification endpoint and its signing secret.
  4. Place one real order end to end before telling anyone the shop takes payment.

The exact steps are in the repository's README.md, under Stripe.

What does not change

Prices. The checkout never trusts a price sent by the browser — it looks every item up from the catalogue on the server. So the price a customer is charged is always the price in the admin, whatever they may have had open in another tab.

On this page