Plixstar

Changelog

What's new on Plixstar — improvements, fixes, and updates, newest first.

What's new on Plixstar. Newest updates first.

August 5, 2026

New · Apply a shipping voucher per seller

When your order includes items from more than one seller, you can now apply a different shipping voucher for each seller, instead of only one for the whole order.

Fixed · Auto-applied vouchers now respect combinability rules

The best-voucher auto-apply at checkout no longer combines a platform voucher with a seller voucher or KOL code when the platform voucher isn't marked as combinable with them.

New · Privacy policy page

Added a Privacy Policy page, linked from checkout, sign-up, and the site footer, explaining what information we collect and how it's used.

Fixed · Videos attached to a return request now play inline

Videos uploaded as evidence for a return now play directly on the return detail page for customers, sellers, and admin, instead of showing a broken image.

Fixed · Admins can create seller-specific vouchers with stacking rules again

Creating or editing a voucher from admin no longer fails with a database error when the combinability settings are involved.

Fixed · Order search now finds orders with multiple sellers

Searching by order ID in the seller and admin order lists now works for orders that include items from more than one seller.

Fixed · Order IDs now match on internal support tools too

A few internal tools our support team uses showed a different reference number for an order than what sellers and customers see on their own pages. They now show the same one.

Fixed · Reviews and returns now work correctly when an order has multiple sellers

Writing a review or requesting a return for a delivered item no longer fails just because a different seller's item in the same order was cancelled. Each seller's items are now judged on their own delivery status.

Fixed · Shipping vouchers now apply correctly on multi-seller orders

A shipping voucher restricted to one seller now applies correctly even when your order also includes items from other sellers, instead of being rejected because another seller happened to be listed first.

Fixed · Seller can now be chosen when creating a seller-specific voucher

The seller dropdown when creating or editing a seller-restricted shipping voucher now lists all approved sellers, instead of appearing empty.

August 4, 2026

Improved · Sellers now schedule their own pickup

Sellers pick a pickup date and time before a shipment is booked, instead of it happening automatically the moment an order is paid. Tracking only appears once pickup is actually arranged, and sellers can move the date if plans change, right up until the courier collects it.

Fixed · Clearer messaging on reviews and returns before delivery

Writing a review or requesting a return now explains that it unlocks once your order is delivered, instead of the option just disappearing with no explanation. This also applies to past orders.

Improved · Simpler e-invoice request, always after delivery

Requesting a tax e-invoice is now a single, consistent step: from your order once it's delivered, instead of an extra option at checkout. If it's not delivered yet, the order page now clearly explains you can request one once it arrives.

Fixed · Order ID now matches across seller, customer, and admin views

The order ID a seller sees on their order list and detail page now matches the one the customer and our support team reference for the same order — previously it showed a different identifier.

Fixed · Order records keep the email used at the time of purchase

Order payment details on the seller and admin side now show the email address that was on file when the order was placed, instead of silently updating to whatever email is on the account today.

Improved · Lower minimum photo resolution

Product photos now only need to be 200px on the shortest side, down from 800px, making it easier to list products with smaller source images.

New · Notifications when an order is cancelled or refunded

You'll now get an in-app notification (in addition to email) when your order is cancelled or refunded, showing that the payment — including shipping — has been returned to you.

Sellers are also now notified by email and in-app when one of their orders is cancelled or refunded, so they're never left finding out by checking a stale order list.

New · Country field in your profile

You can now set your country in Profile settings.

New · Print your own invoice

You can now download and print the invoice for your order directly from your account, instead of asking the seller for it.

New · Cart reminder emails

If you leave items sitting in your cart, we'll send a reminder email after about a day so you don't lose track of them. You can turn this off anytime from Email Preferences in your account.

Improved · Order page combines items and shipping

Items and shipping/tracking details now live on a single page per order, instead of two separate tabs that mostly repeated each other.

Fixed · Review and return blocked incorrectly on split orders

When an order includes items from more than one seller, cancelling one seller's item no longer blocks you from reviewing or returning items from a different seller that were actually delivered.

New · Add videos to a return request

When requesting a return, you can now attach short videos alongside photos as evidence, not just photos.

Improved · Cancel an item even after it's been booked for pickup

You can now cancel an item up until the courier actually collects it — previously, cancellation locked as soon as the seller booked the pickup, even if the courier hadn't shown up yet.

New · Bulky orders now split into separate parcels automatically

Sellers can mark a product as bulky/irregular-shaped ("loose") when listing it. Orders that mix bulky and regular items now automatically ship as separate parcels instead of being forced into one package.

July 30, 2026

New · Multiple family delivery addresses

Family checkout now lets you save and choose between several delivery addresses, instead of being limited to one. Manage them from Family Settings, and pick whichever one fits when you check out.

Fixed · Family spending overview showed inflated numbers

Orders that split across multiple sellers were being counted more than once on the family Financial Overview page, inflating both the order count and total spend. It now shows the real numbers.

Improved · Clearer, more flexible refunds

Sellers can now propose a specific refund amount — item price, shipping, tax, or any combination — when forwarding a refund for approval, instead of only requesting the item's full price. Our team reviewing the request sees exactly the same breakdown and can adjust it before approving. Refund totals now also correctly include tax where it applies.

Improved · Order details show your coupon and referral

Order details now show the coupon code you used, and — if you shopped through a creator's link — who the order is credited to, alongside the discount already shown there.

Improved · Product pages show volumetric weight

Product pages now show an estimated volumetric weight alongside the item's actual weight, so it's clearer up front which one a courier may charge shipping on for bulkier items. The exact figure is still confirmed at checkout.

Improved · Address fields fill themselves in, and check what you type

Every form with a phone number, postcode, city, or state — checkout, account addresses, vendor pickup address, B2B, family, KOL — now behaves the same way: type a postcode and city and state fill in automatically, and picking a city fills in the matching state.

Phone numbers and postcodes are now checked for a valid format everywhere they're collected, not just on some forms. A few forms had gaps where an invalid number or postcode could slip through — those are now closed.

Fixed · Chat crash when opening full chat alongside the widget

Opening the full chat page while the chat widget was also open on the same conversation could throw an error and break the online/typing indicator.

Both views now share one connection for that indicator instead of fighting over it.

New · Optional shipping insurance at checkout

You can now opt in to shipping insurance for your order at checkout, for a small added premium (1% of your item subtotal, minimum RM2).

Insured orders are declared as insured to the courier (Pos Laju or Ninja Van) at booking time, so a lost or damaged parcel is covered.

July 29, 2026

Improved · Tax invoices issue on delivery

Your tax e-invoice is now issued once your order has actually been delivered, rather than as soon as payment goes through.

Requesting one at checkout works exactly as before — the request is recorded straight away and simply waits, then issues on its own once the order arrives. Nothing needs to be re-requested.

Improved · Family checkout says whose tax number it used

When a family order pre-fills a tax number, checkout now says it came from your family account, and that changing it applies to that order only.

Previously a member saw a tax number with no indication of whose it was.

Improved · Finding where to save your tax number

Your saved tax number now has its own entry under Account, next to Profile and Security.

The page existed but nothing linked to it, so the only way in was knowing the address. Checkout also pointed you to "Account → Tax Info" without that being anywhere to click — that hint is now a working link.

New · Vendors can now see photos customers attach to reviews

Product review photos were only visible on the storefront, not to the vendor who needed to act on the feedback.

The vendor reviews page now shows a photo count next to each review with attachments, and the full photos when replying.

New · Partial refunds

Admins can now issue a refund for less than the full computed amount — useful for a restocking-fee compromise or goodwill gesture that doesn't need the customer to return the item in full.

The refund dialog is pre-filled with the full amount; lowering it sends only that amount to the customer while the returned items are still accounted for as usual.

New · Choose your courier pickup date and time

Booking a Pos Laju or Ninja Van pickup used to always default to the next working day, 9am–12pm, with no way to change it.

Vendors can now pick a pickup date (Ninja Van) and time window (both carriers) before booking a shipment.

New · Bulk print picking slips

The bulk order page can now print packing slips for every selected order at once, instead of one at a time.

New · Order status tracks packing and pickup

Printing a self-fulfilled order's packing slip now moves it to "Processing" automatically, and a new "Ready for pickup" button confirms it's packed and waiting for the courier — matching the same stage an integrated-carrier order reaches once its label is booked.

Fixed · Resubmitting a rejected product now requires an edit

A rejected product listing could be resubmitted for review completely unchanged, with the same issue that got it rejected.

Vendors now have to edit the listing before it can go back for review — editing already returns it to Draft, so review always sees an updated listing.

New · Single item vs. variants, made explicit

Adding a product now starts with a clear choice: "Single item" (one price, one stock count) or "Has variants" (each variant gets its own price, stock, weight, and dimensions).

Previously price and stock could be entered at both the product level and the variant level with no clear relationship between them. Now only one applies, depending on which you pick — no more duplicate bookkeeping.

New · Weight and dimensions are now required for shipping

Product weight, length, width, and height are now required (unless shipping is disabled for that listing), for both single-item products and each variant.

Shipping quotes were silently inaccurate for any product missing this — the underlying field existed but no form ever collected it.

New · Minimum photo resolution

Product photos must now be at least 800px on the shortest side.

Smaller images looked noticeably blurry once a customer zoomed in on the product gallery.

New · Attach new photos when appealing a rejected return

If a seller rejects a return because the evidence photos weren't good enough, you can now attach new ones directly when you appeal — instead of only being able to add them in the return's message thread.

The new photos join the return's evidence, and show up on their own in the return's activity timeline so the seller can see exactly what was added with the appeal.

New · B2B quotes now record shipping method

Sending a B2B quote now requires choosing a shipping method — own transport (with a required transport company, e.g. DHL or GDEX) or Plixstar's standard shipping — plus package weight and dimensions.

Buyers see this on the quote alongside the price breakdown, instead of shipping cost being the only shipping information on a quote.

Improved · Order # now shown on B2B invoices

The order number now appears on the issued invoice document, next to the PO number.

July 28, 2026

Fixed · Support tickets now accept the order # you actually see

Attaching an order to a support ticket used to require pasting the full order ID.

Customers only ever see the short order # (e.g. "A1B2C3D4") elsewhere in the app, so that's now what the ticket form accepts — and if it still can't be matched, you'll get a clear error instead of the ticket silently going in unattached.

New · Remove your profile avatar

You can now remove your profile photo, not just replace it.

Improved · Return request dialog shows which order it's for

The Request Return dialog now shows the order # in its title, so you can confirm you picked the right order before submitting.

New · Admin tools for account recovery and addresses

Admins can now resend a customer's verification email, send them a password-reset link, and add, edit, or delete a customer's saved addresses — all from the Admin > Users detail page.

Previously these all required the customer to sort it out themselves, even when they'd reached out to support for help.

New · Return history timeline

Every return now keeps a full activity history.

The return detail page shows each step that has happened — submitted, reviewed, rejected, appealed, received, refunded — with its reason and any attached photos. Appealing a rejected return no longer erases the seller's original reason for rejecting it.

New · Photos in return messages

You can now attach a photo to a message in a return conversation.

Images only. A message can be a photo on its own, or text with a photo attached.

New · Variant photos

Products with colour or style options can now show a different photo for each one.

Tapping a variant on the product page swaps the main image to that variant's photo. Vendors and admins can upload one image per variant when editing a product.

New · Postcode management

Admins can now manage Malaysia's postcode list from the admin area.

Add, edit, delete, search by postcode or city, filter by state, and import or export in bulk with CSV.

New · Eco tag icons

Eco tags can now have an icon image, set from the admin eco-tags page.

Fixed · Print Invoice no longer errors

Print Invoice showed a not-found page on orders that were never paid.

The Print Invoice and Packing Slip links are now hidden until an order has something to actually invoice.

July 27, 2026

Feature: vendors can now see the purchase order once a B2B buyer issues one against their accepted quotation. Previously the vendor's RFQ page had no indication a PO existed at all — the buyer side had it, but the vendor side never surfaced it. Feature: family cart quantities can now be typed directly, not just clicked up/down one at a time. Changing a quantity from 2 to 20 used to mean 18 clicks on the "+" button — there's now a quantity box you can type into directly, alongside the existing +/- buttons.

New · Type a family cart quantity

Family cart quantities can be typed in directly.

Changing a quantity from 2 to 20 used to mean 18 taps on the "+" button. There is now a box you can type into, alongside the existing buttons.

getVendorRFQ() (b2b-rfq-vendor.ts) now also looks up b2b_purchase_orders by accepted_quotation_id against the vendor's own quotations on this RFQ, via the service-role client (there's no vendor-facing RLS policy on that table — only a buyer-side and an admin-only one). The vendor RFQ detail page renders a "Purchase order issued" card (PO number, status, total, buyer reference, issued date) when one exists. FamCartTable.tsx's qty cell now renders a real <input type="number"> (committing on blur/Enter, keyed per-row draft state) instead of a plain <span>, alongside the existing +/- steppers — updateFamCartItemQuantity already accepted any integer ≥ 1, only the UI was stepper-only. Removed the invite-code join flow end to end: CopyInviteLink.tsx, JoinFamilyCard.tsx, joinFamilyByCode(), the ?code= branch on /family-activate, and family_accounts.invite_code (migration drops the column). The owner-initiated email invite (inviteFamilyMember) is unchanged. Some orders never got their per-vendor store_id stamped — completePaymentSuccess() and createManualOrder() both call the idempotent split_order_into_subs RPC but deliberately swallow its failure ("admin can rerun via future tooling", which was never built), leaving orders.store_id permanently NULL on an otherwise-real, paid order. getInvoiceData() treated a missing store_id as "order not found" and 404'd. It now retries split_order_into_subs once for an unsplit parent row (no parent_order_id of its own) before giving up, self-healing the common single-vendor/manual-order case instead of 404ing on an order that plainly exists.

Family members are now added only by direct email invite.

The owner or a co-owner sends the invite from Family → Members. The shareable link and its join page have been removed.

Fixed · Chat opens on your latest message

Opening a conversation now scrolls to the newest message.

It used to land at the top of the history, with the message you came to read scrolled out of view.

Fixed · Cancellations and returns shown up front

A cancelled order now shows a clear banner with the date and reason, whatever tab you are on.

Return request status appears the same way instead of only showing after you click into Items. Cancelling one vendor's item in a multi-vendor order also shows the reason on that vendor's shipping card.

Fixed · B2B certificate uploads and pending applications

Large certificate uploads during B2B registration could fail on submit.

Admins also had no indicator anywhere for B2B applications waiting for review — the dashboard's "Needs your attention" row only counted vendor applications, so a submitted B2B application was easy to miss.

New · Cancel one vendor's item

You can now cancel a single vendor's item in a multi-vendor order.

Cancelling used to be all-or-nothing: if one vendor's item had shipped, the whole order was blocked. Each item can now be cancelled independently, right up until it ships.

Fixed · E-invoices for every vendor in an order

Multi-vendor orders only ever produced one e-invoice.

When an order split across several vendors, requesting an e-invoice at checkout produced a single document and the rest never appeared.

Fixed · The e-invoice checkbox no longer fails silently

Requesting an e-invoice with a blank or invalid tax number gave no error.

The order went through as though the box had never been ticked, rolling into the monthly consolidated invoice instead. Opening the order later showed nothing, with no explanation.

Improved · Order number on returns

The returns list now shows each request's order number on the card.

It was previously only visible by hovering.

Printing a shipping label is a seller and courier task.

The link had been showing on the customer order page by mistake.

New · Full payment breakdown on orders

Order payment details now show tax, shipping, shipping tax, and discounts, not just the total.

The customer, B2B, and Family order pages previously showed only the grand total and payment method. B2B cart orders had no breakdown at all.

New · Terms must be accepted at checkout

Every checkout now has a Terms & Conditions checkbox that must be ticked before ordering.

Applies to the customer, B2B, and Family checkouts.

New · Per-variant weight and bulky-parcel pricing

A variant can now define its own unit, weight, and dimensions.

Every variant used to share the product's single weight, which was wrong whenever pack sizes differed — a carton of 12 versus a single tin. Shipping quotes now also compare actual weight against volumetric weight and charge whichever is higher, so a large-but-light box no longer undercharges against what the courier actually bills.

Fixed · Vendor order CSV export fixed

Exporting vendor orders returned a server error instead of a file.

Improved · Courier e-invoices in the sidebar

Courier e-invoices now have their own admin sidebar entry.

The only way in used to be a small link tucked inside the main E-Invoices page.

Fixed · Onboarding phone validation

The customer onboarding form accepted any phone number.

A stale copy of the validation rules skipped the format check, so it never verified the number looked like a Malaysian mobile.

Improved · City fills in your state

Choosing a recognised city during onboarding now fills in its state automatically.

Town names that exist in more than one state are left for you to fill in rather than guessed.

Fixed · Consistent phone rules everywhere

Some numbers rejected by the site's own forms could still be saved.

Phone validation is now the same across every route into your account.

July 24, 2026

Redesign: creating or editing a voucher is now a full page with tabs, not a cramped dialog. The voucher form had grown to cover code/discount/limits/eligibility restrictions all in one long scrolling dialog. It's now a dedicated page (/admin/vouchers/new, /vendor/vouchers/new, and the matching edit routes) organized into Basics, Limits, and Eligibility tabs. Fix: a KOL code's category/product restriction was invisible everywhere except the checkout math. The restriction was stored and correctly enforced when a customer checked out, but neither the KOL's own code-detail page nor the admin KOL codes list ever showed what a code was actually restricted to.

Feature: a KOL's share link now tracks how many times it's been clicked. Previously there was no way to tell whether a KOL's shared link was actually getting clicked — copying it just put the raw URL on the clipboard with no tracking at all. The KOL's profile page now shows a running click count above their shareable codes.

Feature: each commission log entry now shows what it was earned on. The KOL's commission history previously showed only the code, order, and amount — with no way to tell at a glance whether a given line came from a category-restricted code, a product-restricted code, or a plain order-wide discount. Fix: seller info and buttons overlapped on mobile. On the product page, the seller's logo/name/rating and the "Chat"/"Visit Store" buttons crowded into the same row on narrow screens. On a store's public profile page, the same thing happened with the logo, store name, and "Chat"/"Follow" buttons.

Feature: added a "Back to top" button on long-scroll pages. The storefront catalog and store profile pages now show a small floating button once you've scrolled down a bit, so you don't have to scroll all the way back up manually as more products get added over time. Fix: a voucher restricted to specific products/categories, or to first-time customers, could actually be redeemed on anything by anyone. The "eligible products", "eligible categories", and "first-order only" rules on a voucher were only checked in the on-screen preview before checkout — the database function that actually creates the order never checked them. In practice this meant a "10% off Electronics only" voucher discounted the customer's entire cart regardless of what was in it, and a first-order voucher could be redeemed by repeat customers.

Feature: admin can now control whether a platform voucher stacks with a vendor voucher or KOL discount code. Previously there was no such control at all — any platform + vendor + KOL combination was always allowed. New checkboxes on a platform voucher (default off — not combinable) let admin opt a specific voucher in. The checkout page now proactively greys out the incompatible slot once a non-stackable platform voucher is applied, rather than only rejecting it after the customer tries to place the order. Fix: customers weren't notified about an abandoned cart until the next day. The "your payment didn't go through" reminder (in-app notification + email) only ran once a day, so a customer who abandoned checkout in the morning got no signal — no banner, no notification bell entry, nothing — until the next day's run, even though their items and pending order were both still sitting there waiting. Fix: cancelling a paid order didn't claw back the loyalty points it earned. Loyalty points were correctly reversed when an admin refunded an order or a return was processed, but not when a customer cancelled their own paid-but-unshipped order, an admin cancelled a paid order directly, or a vendor's cancellation request was approved — those three paths refunded the money but left the earned points in the customer's balance.

Technical details

VoucherForm.tsx keeps its single useForm() instance and submit handler unchanged — the restructuring only wraps the existing field groups in Tabs/TabsContent, following the same pattern already used on the admin order-detail page (AdminOrderTabs.tsx). The /new and /id/edit routes (previously redirect stubs pointing back to the list, per the old "CRUD lives in a dialog" convention) now render real pages; CreateVoucherButton.tsx on both admin and vendor is a plain link instead of a dialog trigger, and the list tables' row-level "Edit" action navigates to the edit route instead of opening CrudFormDialog. This is a deliberate, one-off exception to the dialog convention for this specific form given its size — noted in the PR so it doesn't read as reintroducing a bespoke pattern. KolCodeDetailView.tsx and the admin KolCodeTable.tsx now render the code's category name and/or "restricted to N products" chip, resolved server-side in kol.ts (getKolCodeDetail, getAllKolCodesPaginated/getAllKolCodes). Kept kol_codes.category_id singular rather than extending to multi-category — the schema already went single-category + multi-product in last week's restriction work, and category_percentage conceptually pairs one code with one category; flagging this call explicitly rather than silently deviating from a broader "multi-category" ask.

New kol_link_clicks table (migration 20260724000500_kol_link_clicks.sql) — one row per real /creator/[handle] pageview, logged server-side (recordKolLinkClick) from the page component only (not generateMetadata, which also resolves the same profile but isn't a real pageview, to avoid double-counting). Shown via getKolLinkClickCount on /kol/profile. Deliberately not the old ?ref=code query-param scheme — that was already tried and abandoned (see the comment in KolShareLinks.tsx) because nothing consumed it; this logs directly server-side instead.

KolCommissionRow (kol-payouts.ts) gained a computed basis field — e.g. "10% off Electronics", "RM5 off 2 products", "10% off order" — derived from the same discount_type/category_id/product_ids the discount and commission were computed against, rendered as a new column in KolCommissionView.tsx. Both overlap fixes were the same root cause: the outer flex container never switched to flex-col on mobile even though the inner button group already did, so the two blocks fought for the same row at narrow widths. Fixed in the product page's vendor card (storefront/products/[slug]/page.tsx) and the store profile header (stores/[slug]/page.tsx). New BackToTopButton component follows the existing BottomNav/CompareBar positioning convention so it never stacks on top of either. New migration 20260724000400_voucher_eligibility_stacking_enforcement.sql: create_order_transaction now (1) narrows the platform/vendor voucher discount to the eligible-lines subtotal via a new voucher_eligible_base() helper (joins voucher_product_restrictions/voucher_category_restrictions, same OR-of-product-or-category logic the client preview already used) and rejects outright if the eligible base is 0, instead of silently discounting the whole cart; (2) checks first_order_only against the customer's order history, respecting the existing voucher_fraud_settings.first_order_only_enforce master switch; (3) checks new vouchers.allow_stack_with_vendor / allow_stack_with_kol columns (platform-tier only, default false) against p_vendor_voucher_id / p_kol_code_id. The same "zero eligible items → reject" hardening was applied to the existing KOL product/category restriction (previously computed a silent RM0 discount instead of rejecting — same class of gap). VoucherForm.tsx gained the two stacking checkboxes (platform tier only); the checkout's VoucherSection/KolCodeInput now pass a stackingContext into the existing soft-check (validateVoucher/validateKolCode in cart.ts) so an incompatible combination is caught immediately rather than only at final submit. The admin manual-order form (NewOrderForm.tsx) previously skipped even the soft eligibility check entirely — now passes cartProductIds like the real checkout does.

Known deferred issue found while in this code, not fixed here: a vendor-tier voucher's discount is computed against the whole cart subtotal, not just that vendor's own line items, when the cart spans multiple vendors — voucher.store_id is validated for ownership but never used to scope the discount base. Flagging for a follow-up. /api/internal/notifications/reminders (the cron backing this, plus two other reminder types) was already correctly gated on "order pending 30+ minutes" and already idempotent per-order, but vercel.json's cron schedule for it was "0 9 * * *" — once daily — not actually every 30 minutes. Changed to "*/15 * * * *". No route code changes needed; the existing idempotency check (skip if a matching notifications row already exists) makes the higher frequency safe as-is. reverseOrderRewards() (lib/actions/refund-rewards.ts) was only called from refundOrder()'s own full-order path. Added the same call, proportional to the sub-order's share of the parent order's total, to refundSubOrder() (admin-orders.ts — covers cancelMyPaidOrder) and to the separate cancelSubOrder() admin path (shipment.ts — covers admin cancels and approveCancellation, which delegates to it). Voucher-usage reversal (withVoucher) only fires once every sibling sub-order of the parent has reached a terminal status, so a voucher applied across a multi-vendor cart isn't revoked while other vendors' sub-orders are still active. refundOrder()'s own per-sub-order calls pass skipRewardsReversal: true since it still does one full-order reversal itself afterward, keeping its admin-facing "X points deducted" summary accurate.

Feature: KOLs now have an independent commission rate, and a new admin KOL List page. Previously a KOL's earnings were just a pass-through of whatever discount they configured on their own code — there was no way to pay a KOL a rate independent of how generous their code was. Admins can now set each KOL's commission rate individually from a new KOL section in the admin sidebar (KOL List, KOL Codes, KOL Payouts, grouped together), and payouts are computed from that rate going forward.

New · Vendor-scoped shipping vouchers with tiers

Shipping vouchers can now be limited to one vendor, and can grow with cart size.

Admins can restrict a shipping voucher to a specific vendor, and vendors can create their own. Either can define a ladder — 1–2 items gets RM5 off, 3–5 gets RM10, 6+ gets free shipping — instead of one flat amount. A vendor-scoped voucher only ever discounts that vendor's own delivery fee.

Fixed · Payment email item names fixed

Every item in the payment confirmation email showed the word "undefined" instead of its name, with no photo.

Improved · Complete payment email summary

The payment confirmation email now shows subtotal, discount, tax, shipping, and shipping tax on their own lines.

Each appears only when it isn't zero, so the numbers add up to the amount paid.

Fixed · No Change Password on social sign-ins

Accounts created through Google or Facebook have no Plixstar password.

The Security page now explains that, instead of showing password fields that could only fail.

Improved · Family reachable on mobile

"Start Family" only existed in a bar hidden on phone-sized screens.

Phone users had no visible way to create or join a family group.

Fixed · Shipping voucher discount matched the total

An auto-applied shipping voucher could show one discount under Vouchers and deduct a different amount from the total.

Fixed · Three mobile layout fixes

Admin carrier rate card buttons could be cut off on narrow screens, the Returns table's status column crowded the layout, and the navbar could render underneath an iPhone's Dynamic Island when installed to the home screen.

New · KOL commission rates and a KOL list

Each creator can now have their own commission rate, set from a new admin KOL section.

A creator's earnings used to be a pass-through of whatever discount they set on their own code, so there was no way to pay a rate independent of how generous the code was. KOL List, KOL Codes, and KOL Payouts are now grouped together in the sidebar.

Improved · Profile photo updates everywhere

Updating your avatar only refreshed the profile page.

An already-open tab elsewhere in your account kept showing the old photo until a hard reload.

Fixed · "First order only" vouchers work

The checkbox silently depended on a separate master switch that defaulted to off.

Ticking it had no effect unless an admin had also found and enabled an unrelated setting.

New · Cap a percentage discount

Vouchers and creator codes can now set a maximum discount — "20% off, capped at RM50".

Applies to admin, vendor, shipping, and creator codes, and is enforced when the order is created rather than only in the on-screen preview.

New · Duplicate or resubmit a code request

A rejected code request used to be a dead end.

Every request now has a Duplicate action, and rejected ones get Resubmit — both open the form pre-filled and editable.

New · Creator codes for specific products

A creator's code could only be platform-wide or limited to a whole category.

Admins and creators can now pick specific eligible products instead.

New · Share a creator code to more apps

Instagram, TikTok, and RedBook have been added, with the caption shown up front.

The caption is now visible with its own copy button. These three apps don't support pre-filled captions, so those buttons copy the caption and open the app for you to paste.

Fixed · Notification dropdown fits mobile

The panel could run off the left edge of the screen and hide its own contents.

Fixed · E-invoice status fits order cards

The status badge and footer didn't wrap on narrow screens, so content bled past the card border.

Tapping Wishlist in the footer redirected creators away to their own dashboard.

The footer showed customer account links regardless of your account type.

July 23, 2026

Improved · Honest shipping tax and voucher amounts

Shipping tax is now always shown, and a covering voucher shows its true saving.

The tax line no longer hides or shrinks because a voucher covers it. Instead the voucher's own discount grows to match — a RM20 voucher on a RM10 fee plus RM0.60 tax now reads "−RM10.60". The tax is real, and the saving is the full amount. Applies to the customer, B2B, and family checkouts and to invoices.

Improved · Courier tax setup edits in a dialog

The Courier tax identities page showed both couriers' full forms expanded at once.

It's now a compact list with an Edit action per row, matching every other admin edit screen.

The admin E-Invoices page had no route to courier tax identities and listed up to 200 rows on one screen.

There's now a Couriers button, and the table pages 25 rows at a time.

New · Courier self-billed invoice viewer

A new page shows courier self-billed e-invoices once that feature is switched on.

It shows both parties, the delivery-services line for the month, and submission status.

Fixed · Correct delivery tax on invoices

Invoices recalculated shipping tax from the delivery fee with no knowledge that a voucher had reduced it.

An order with free shipping could show a tax charge the customer was never billed. Invoices now show exactly what was charged.

July 22, 2026

Improved · Free shipping waives the delivery tax

A voucher that fully covers delivery now clearly zeroes its tax too.

Tax is calculated on the original shipping fee, and the same voucher extends onto that tax. A 100%-off voucher zeroes both, so free shipping really is free. A partial voucher reduces the tax proportionally.

New · Self-billed courier invoices

Plixstar can now self-bill couriers that don't issue their own e-invoice.

Finance enters each courier's tax details, and a monthly job totals the previous month's shipping cost per courier into one invoice. It stays off for each courier until its details are verified and marked active.

New · Service tax on delivery

Checkout now charges service tax on the shipping fee, so RM10 delivery shows as RM10.60.

It appears as its own line in the order summary and on the invoice, and is calculated after any free-shipping voucher. Admins can set the rate under Settings → Financial.

New · Full transaction reconciliation

A new Reconciliation export lists every order with its complete breakdown.

Order id, customer, vendors, subtotal, shipping, discount, voucher and creator codes, loyalty, tax, total, commission, and vendor net — so finance can verify each transaction end to end. Order ids now show in full and can be clicked to copy.

New · Commission and payouts by vendor

A new "By vendor" page breaks earnings down per vendor.

Each vendor has a detail view listing every order with its commission, tax, and net. Report tables now page instead of stopping at 100 rows, and every finance export downloads with a timestamped filename so files sort by date and never overwrite each other.

Improved · Invoices reflect what was paid

The printable invoice now shows the discount and the exact amount charged.

It previously left out discounts and could overstate the total. Tax and shipping are shown too. Vendor order pages gain a commission column. Tax e-invoices can now only be requested once an order is delivered, and the amount sent reflects the after-discount total.

July 21, 2026

Fixed · Finance and Reports now agree

Revenue, commission, and tax on the Finance page now match the Reports pages.

Revenue was being double-counted on multi-vendor orders, and different pages disagreed on which order statuses count. Commission and tax are now calculated the same way however an order was created.

Improved · Stronger validation across the site

Passwords now need at least 8 characters with upper and lower case, a number, and a symbol.

Phone numbers must be valid Malaysian numbers and accept digits only. Postcodes accept exactly 5 digits, and the city field suggests Malaysian cities as you type while still letting you enter your own.

Improved · Signup address is saved automatically

An address entered during onboarding now appears as your default in Addresses.

Vendors provide a postcode and state at signup, which becomes their default pickup address once approved.

Fixed · Profile photo appears instantly

A new avatar now replaces the old one straight away, with no hard refresh, and stays in sync everywhere.

New · Accounts stay Pending until verified

New accounts now show as Pending until the email is confirmed.

After verifying you get a confirmation and are taken to login. The verification email is redesigned with step-by-step instructions and notes that the link expires in 24 hours. Trying to log in before verifying shows a clear notice with a resend option. Admins can see each account's status and activate a pending account manually, and people are emailed when their account is suspended or reactivated.

New · Chat deletion, recall limit, and live sync

You can now delete a conversation from your inbox.

The other person keeps their copy, and it reappears if they message you again. Unsending is now limited to 10 minutes after sending. Messages, edits, and unsends update live between the full chat page and the popup.

Improved · Cart clears after checkout

Items you buy are now removed from your cart once payment succeeds.

A partial checkout leaves the items you didn't buy. You also stay signed in when returning from the payment page.

Improved · Interface touch-ups

The header cart uses a shopping-cart icon, the currency switcher shows full names like "Malaysian Ringgit (RM)", and checkout shows brand marks for the supported payment methods.

Improved · Chat PDFs and a steadier popup

You can now attach a PDF as well as images.

The composer shows the supported types and size limit. Opening the popup refreshes so you see the latest message, and having chat open in two places no longer causes sync glitches.

July 14, 2026

B2B account applications now keep everyone in the loop. When you submit a B2B account, our team is alerted right away so it doesn't sit unseen. Once it's approved or rejected, you'll get both an in-app notification and an email — sent to the email address on your application and your account email, so you never miss the outcome.

Technical details

registerB2BCompany now calls notifyAllAdmins (in-app bell to every admin) plus a new sendB2BSubmissionAdminEmail template to the ops inbox (ADMIN_EMAIL/SUPPORT_EMAIL; no-op if unset). approveB2BCompany/rejectB2BCompany now notify() the submitting owner and email the applicant at a deduped set of both contact_email and the owner's account profiles.email (new b2bApplicantEmails helper). All notification/email steps are best-effort and never block the underlying status change.

Family e-invoice PDF download and links now work for every family member. A family co-owner can now download the tax invoice PDF and follow the "View" link on any family order — previously these only worked for the exact member who placed the order.

Technical details

The e-invoice PDF route (/api/einvoice/[uuid]/pdf) now widens authorization to family owner/co-owner via canViewFamilyOrderDetail, matching getOrderDetail/requestEinvoiceForOrder. requestEinvoiceForOrder returns a viewPath so RequestEinvoiceButton's success toast links to /family/history/[id] for family orders instead of the customer route that 404s for them.

July 12, 2026

New · Tax e-invoice status on B2B invoices

Open any B2B invoice and use the e-Invoice button to see its status.

Request one if it hasn't been filed, or request again if it was rejected — with the rejection reason shown.

New · Family tax documents and per-order tax numbers

Family orders now have the same Tax documents tab as regular order history.

At checkout, the family's saved tax number is pre-filled but can be changed for that specific order.

Fixed · B2B teammates can open each other's orders

Opening an order's tracking tab could wrongly show "not found" if you weren't the person who placed it.

Fixed · Order tracking timestamps

Carrier tracking times could briefly flash or disagree as the page loaded.

Fixed · No more "Login" flash in the header

On refresh, the account button now shows a loading indicator instead of briefly showing the signed-out state.

July 10, 2026

Fixed · Vendor payout ledger shows transactions again

The ledger came up empty for every date range because of a date-filter bug.

It now lists order earnings, balance adjustments, and payouts for the period you pick.

Improved · Payout ledger filter is now a View menu

The Orders / Adjustments / Payouts toggles are a single View button with checkboxes, matching the list pages. All three show by default.

New · Printable B2B invoices

The invoice detail page now has a Print button that produces a proper invoice document.

Vendor and buyer details, invoice number and dates, itemised lines, and totals — instead of a screenshot of the web page. Menus and the language bar no longer appear in the printout.

Fixed · B2B invoice downloads

The download link for a B2B tax e-invoice never appeared, because of a mismatch in how orders were looked up.

New · Separate B2B billing address

B2B checkout only captured a delivery address.

You can now set a separate billing address in Company Settings, or keep it the same as delivery, and confirm it at checkout. Each order records the address used.

New · Creators can request a payout

Creators with unpaid commission and a verified payout account can now request a payout.

Requests appear in the admin KOL Payouts page to approve, mark paid, or reject.

Fixed · Told when a refund needs help

If an automatic refund fails you now get a notification and an email letting you know the team will handle it manually, instead of silence.

Improved · Creator code removed from B2B checkout

B2B orders use negotiated pricing, so the creator code field has been removed.

Improved · Channels page hidden

The unused marketplace sync entry has been removed from the admin sidebar.

July 9, 2026

New · Shipping labels for customers and admins

The label download is no longer vendor-only.

Once a shipment has a courier and tracking number, the link appears on the customer order page and the admin order page too. All three now only offer it for orders actually booked through an integrated courier — a self-fulfilled order with a manually typed tracking number has no label to download.

Improved · Clearer courier booking failures

When a booking fails because the courier account is missing a permission, the notification now says so directly.

It used to show the raw courier error and imply that retrying might help.

Fixed · Order dates in your own timezone

Order dates on the customer, vendor, and admin pages were rendered in the server's timezone, so they could read hours off.

Fixed · No more label errors on incomplete orders

The download button appeared on shipped orders even when tracking data was never recorded, so clicking it just errored.

Fixed · Pending orders show their items

An order awaiting payment showed "0 items" and no photo in Order History, even though it had items.

New · Notified on every e-invoice outcome

You now get an email and an in-app notification whichever way an e-invoice comes back.

Only successful validation used to send anything, and there was no in-app notification at all. Validated, rejected, and cancelled all notify you now.

Improved · Account sidebar stays in view

The left sidebar on account pages used to scroll away. It now stays put while the content scrolls.

Improved · Refund buttons on one row

"Process refund" and "Flag as fraud" could wrap onto two lines and look like an accidental double button.

Fixed · Automatic shipment booking is reliable again

Some paid orders sat on "Booking with courier…" indefinitely.

The courier was either never booked, or booked without the tracking number making it back onto the order.

Fixed · Variant stock no longer blocked by product stock

A variant with plenty of stock could be rejected as out of stock.

Checkout was checking the product's overall stock first. Variant purchases now check only that variant's stock.

Improved · No vouchers on B2B checkout

B2B orders use negotiated pricing, so voucher stacking didn't make sense.

The voucher section is removed, and a B2B order with a voucher attached is now rejected outright rather than relying on the page simply not offering one.

Improved · Unused B2B Invoice tab removed

It let admins set an invoice logo, header, footer, and notes, but nothing read those fields into any output.

Removed for now; it can return once invoices actually use it.

Fixed · Safer B2B quote-to-order flow

A round of fixes to the request-for-quote process.

Only company admins, finance, and approvers can award a quotation or issue a purchase order. Accepted quotations carry their products and tax through to the order, so vendors see the right items and commission is recorded correctly. Expired quotations can no longer be accepted, cancelling can't collide with awarding, issuing a purchase order twice no longer creates a duplicate, and editing a request no longer duplicates its lines.

Improved · Safer buttons, dialogs, and forms

Confirmation dialogs across every portal now show a working state, can't be double-clicked, and can't be dismissed mid-action.

Long forms in pop-ups ask before discarding what you typed. On phones, buttons and inputs meet comfortable touch sizes, and sellers can finally reach the photo-delete button when managing images. Wide tables hint that they scroll and show fewer columns by default. Screen readers hear real names on row links and form fields. Filtered lists that come up empty now say so with a one-tap clear, instead of looking like an empty queue. And a crash in the B2B or Family portal keeps you inside the app with navigation intact.

Improved · Return risk hints in Malay and Chinese

The automatic risk badge on the admin returns queue showed English for every language.

Its title, note, risk levels, and reasons are now translated, along with the Customer column in the refunds queue.

Seller team members can now open the pages their role grants — orders, payouts, products, vouchers, reports — instead of hitting a missing page.

Family order links no longer show "not found", and a co-owner checking out without a saved family address is told to ask the owner. Buying one item with Buy Now no longer empties your saved cart. Creator share links now point at your public page, which finally has a "Shop on Plixstar" button. Plus fixes to B2B request creation, admin team access, voucher sorting, and B2B login destinations.

Improved · Admin returns queue tabs cleaned up

Twelve scrolling status tabs are now five: All, Needs approval, In progress, Closed, and Fraud.

Needs approval and In progress carry live counts. Any individual status is still available from the Status filter. The sidebar count now shows the approval queue, so the number in the nav is the number of decisions waiting.

July 8, 2026

Improved · Seller returns page is easier to scan

Eleven status tabs that scrolled off screen are now five.

All, Needs action, Awaiting return, Admin approval, and Closed. The three summary cards are gone since the tab counts carry the same information, and you can still filter by any individual status. The sidebar count now matches Needs action, so appealed and received returns don't slip by.

New · Who placed each family order

The family Order History table has a new "Added by" column.

Improved · Admin refund queue tidied up

Processing a refund now opens a focused dialog instead of expanding inline.

The table shows fewer columns by default with the rest behind the View menu, so there's no sideways scrolling, and the whole row opens the request.

Improved · Faster refund approvals

The five-item checklist that had to be fully ticked is now a short set of review reminders you can scan.

The refund confirms whenever you're ready. Fault attribution and notes are unchanged.

Improved · Bulk status page shows only actionable orders

It used to list every order, including delivered and cancelled ones that can't move.

It now lists only orders that can still be advanced, and lets you filter by each of those statuses.

Fixed · Order tracking works as expected

Several shipping fixes landed together.

The customer tracking history now shows manual shipped and delivered updates, not just courier scans. For parcels already booked with a courier, sellers can mark them shipped in one click instead of retyping details they never entered. Bulk updates no longer error on orders already at that status and can't push an order backwards. Refunds for online banking and e-wallet payments route to the manual queue with a clear next step.

July 7, 2026

Improved · A clearer refund process

Requesting money back is now a straightforward flow.

You choose Return & refund (send the item back) or Refund only (keep it). The seller decides whether they need the item returned, and every refund gets a final check by our team before money moves. At each step you, the seller, and our team see a plain note explaining what happens next. For a swap, start a refund request and arrange the exchange with the seller in chat.

"Organic Beauty", "Eco Home", and "Ethical Fashion" pointed at categories that never existed.

Fixed · Orders findable by short ID

Searching with the shortened ID shown on an order page could wrongly say the order doesn't exist.

Fixed · B2B purchase orders aren't payable at checkout

Purchase orders are paid later by invoice, so they no longer appear in the pending payment banner.

Fixed · E-invoice requests work first time

Toggling the request at checkout silently failed after payment, so it had to be repeated from the order page.

Fixed · Vendor order summary shows the discount

Where a voucher, creator code, or loyalty points were used, the vendor's figures didn't add up to the total.

The discount is now shown so the maths reconciles, and multi-vendor totals include tax and each vendor's share of the discount.

Fixed · Admin sees the customer's chosen shipping

The admin order page only showed the override control, not what the customer actually picked.

Admin's own courier and tracking overrides also didn't reappear on admin's own page, though vendors and customers already saw them.

July 5, 2026

Fixed · Clearer B2B purchasing and admin details

Approvers now see the product photo of each item they're approving.

Quote requests show the buyer contact, so vendors know who they're quoting for. Admin order details show the vendor's store name again instead of a blank.

Fixed · E-invoices issue reliably

When an order is paid, or you request one, the document is submitted and automatically checked until it's issued — instead of occasionally sticking on "processing".

New · See your return window

A delivered order now shows the date you have until to return it, plus a live countdown.

Improved · Invited-account form accessibility

Address and billing fields on the account-setup screen now have properly connected labels, and support autofill.

New · See your refund amount

Your return detail page now shows how much you're getting back, that it's going to your original payment method, and whether it's still processing.

New · Stronger password requirement

New passwords must be at least 8 characters when you sign up or reset. Existing passwords are unaffected at sign-in.

Fixed · Order confirmation email adds up

The email listed items but left out discount and shipping, so the prices didn't match the amount paid.

An expired or already-used link now explains what happened, instead of dropping you at a blank sign-in screen.

Improved · Bulk actions show progress

A bulk action now shows "Processing 3 of 20…" and a success summary instead of looking frozen.

Multi-step forms point you at the exact field to fix, and the header search box is fully keyboard-navigable.

Improved · Safer notification emails

Emails now carry a language tag for screen readers and better inbox handling.

Names and notes typed by a vendor or customer are shown as plain text, so unusual characters can't affect how a staff email renders.

Improved · More of the app speaks your language

The top bar and notification labels are now translated.

The onboarding address form supports autofill, portal charts follow dark mode, counts read grammatically ("1 order" vs "2 orders"), and the product-page back link returns you to your filtered search.

Fixed · Clearer feedback in onboarding and support

If your profile photo can't upload during signup we now tell you, and your profile still saves.

Support staff changing a ticket's status see it revert if the save fails, instead of a misleading value. Screen-reader users can tell which shipping option is selected.

Fixed · Support attachments and same-day vouchers

Adding a second attachment to a ticket no longer discards the first.

Vouchers can start and end on the same day, and a family account with no delivery address now links you straight to where to add one.

Improved · Coupons, feed, and compare fixes

Coupon dates now show in your language and Malaysia time.

Signing in from the Feed returns you to the Feed, and the "maximum 4 products" compare message appears in your language.

Fixed · Navigation and resilience fixes

Portal sidebars highlight the current Dashboard, breadcrumbs are clickable, and there's a "Back to store" link.

The "Vendors near me" tab survives a refresh and can be linked to, the wishlist heart responds instantly, a failed export tells you, some dialogs submit on Enter, and pages say so if the database hiccups instead of looking empty.

Fixed · Faster product pages

Product pages load quicker, and images download right-sized.

Chat images no longer make the conversation jump as they load, and the cart, compare, and payment pages show a fitting loading skeleton.

Fixed · Cleaner printed invoices

Invoices no longer split an item row or the totals block across two pages, and the status prints in your language.

Fixed · Clearer returns and cancellations

Appealing a rejected return no longer shows a contradictory "already reviewed" state.

Cancelling a paid order tells you if any part needs manual refund review. Return photo uploads reject oversized or non-image files up front.

Improved · A big accessibility pass

Sort direction is announced on portal tables, tap targets on table controls are bigger, and partially-selected checkboxes look distinct.

Proper labels were added to "Remember me", the category tree, the creator-code box, product-image remove buttons, and search price fields, plus a descriptive alt on the main product photo.

Fixed · Cleaner packing slips and accurate voucher reports

Setup reminders and tax banners no longer print onto packing slips and invoices.

Voucher analytics now record each voucher's real discount — every voucher used to be logged with the whole order's discount, inflating the reports.

Fixed · Sharper focus outlines

Keyboard focus rings on buttons now stand out instead of blending into green.

Catalog filter options show an outline, and several faint labels are darker and easier to read.

Improved · Localized sign-in and account setup

An expired verification link now explains itself and tells you how to get a new one.

Sign-in, sign-up, and password-reset messages appear in your language, and the invited-staff form is properly accessible.

The "Track your order" button led to a page that didn't exist.

It now opens your actual order and routes B2B and Family orders to their own history. Vendors who turned off announcement emails no longer receive them.

Fixed · Softer shadows

Shadows on menus, dialogs, and cards now carry a subtle olive tint suited to the cream background, instead of a flat grey.

Improved · Returns speak your language

Return reasons and the return conversation — role labels, prompts, and buttons — now appear in Bahasa Melayu and 中文.

New · Approved returns say what to do next

An approved return now shows a "Ship your item back" card.

It includes who pays return shipping and any cost the seller entered. You can see the photos you attached, and sellers get a confirmation prompt before marking an item received.

Fixed · Cart badge visible again

The number on the cart icon was the same dark colour as the header behind it.

It's now the same red as the wishlist and message badges, and chat uses the brand green so it matches everything else.

Fixed · Support ticket replies notify staff

Replying to a ticket now emails the support team, so it doesn't sit unnoticed.

Previously only their replies notified you. The attachment picker is now keyboard-reachable and errors are announced to screen readers.

Fixed · Add to cart from Compare

"Add to cart" from the Compare page built a broken cart line that could disrupt checkout.

It now adds the item properly, and products needing a size or colour take you to the product page to choose.

Improved · Easier keyboard navigation in portals

Every portal now has a "Skip to main content" link — press Tab on page load.

Greyed-out pagination arrows are properly skipped by keyboard and screen readers instead of acting like live links.

Improved · CSV imports are keyboard-accessible

The file pickers in the order and product import tools can now be opened with the keyboard.

In the order importer, one invalid row no longer cancels the whole import — what imports now matches what the preview marked "Will import".

Fixed · Shipping vouchers show the correct total

A shipping voucher was subtracted from your cart subtotal, so the total shown could be far below what you were charged.

Shipping discounts now apply only to the shipping fee, so the summary and the amount you pay always match.

Fixed · Bulk-select count stays accurate

Selecting rows then paging or filtering left a count that no longer matched what was on screen, so a bulk action could touch nothing.

Fixed · B2B and Family payment returns

After paying, "View order" led to a page not found, making it look like the order had vanished.

It now opens the correct order history, and paying from those accounts no longer clears your personal cart.

Fixed · Admin packing slips print again

The packing-slip page had been returning "page not found" for every order.

July 4, 2026

New · Choose how many rows to show

Portal list pages now have a "Rows per page" selector — 10, 25, 50, or 100.

Your choice is kept as you move between pages.

Improved · Confirmation pop-ups speak your language

The default Confirm, Cancel, and Working buttons now appear in Bahasa Melayu and 中文.

Fixed · Hidden prices stay hidden

For products priced only for signed-in shoppers, "Add to Cart" as a guest now opens the sign-in dialog.

It used to quietly add the item and reveal the price in your cart.

Fixed · No contradictory stock line

Picking a sold-out option now shows a single consistent "Out of stock".

A second line at the bottom could still say "In Stock" in green, contradicting the greyed-out button just above.

Fixed · One colour language for status labels

Badges for e-invoices, support tickets, creator codes, B2B companies, and license keys now use the same palette.

"Approved", "Pending", and "Failed" read the same across every screen instead of a different colour per feature.

Fixed · Consistent prices with thousands separators

Ringgit amounts now format one way everywhere: "RM 12,999.00".

Some screens showed "RM 12999" and others "RM12,999.00". Order totals, payouts, reports, invoices, and emails all match now.

Improved · Dates follow your language in every portal

Order lists, payouts, returns, reviews, tickets, charts, and packing slips now show dates as "4 Julai 2026" or "2026年7月4日".

Improved · Order status looks the same everywhere

An order marked Shipped now shows the same colour whether you're a customer, vendor, or admin.

Fixed · Honest payment status and safer cart clearing

The payment result page no longer says "Payment successful" when it doesn't yet know.

It now says we're confirming, and links to your order. "Remove selected" in the cart asks before deleting, since items are all selected by default and one tap could empty it. Error pages now speak plainly and offer a way back.

Fixed · Form errors announced everywhere

Screen readers now announce field errors across your account, returns, reviews, and every portal tool.

Fixed · Form errors announced at sign-up and checkout

Screen readers announce which field failed and why, and the failing field is outlined in red at the input.

New · Autofill for delivery addresses

Address forms now let your browser fill in name, phone, address, city, postcode, and state in one tap.

Links inside a clickable row — like the invoice PDF and verify buttons — now open correctly instead of navigating to the row.

The floating bulk-action bar also wraps to fit narrow phone screens.

Improved · B2B and Family portals on phones

Members can now open their portal from the phone menu — the switcher only existed on desktop.

Those pages also show a loading skeleton instead of a blank screen, and banner carousels pause on hover or touch and stay still if your device asks for reduced motion.

Fixed · Dates and payment errors in your language

Dates across your account now render in your chosen language, and payment errors join the checkout errors that already did.

Fixed · iPhones no longer zoom on tap

Tapping the search box, a quantity field, or the chat box used to zoom the whole page in and leave it there.

Fixed · Checkout and voucher errors in your language

An expired voucher, an out-of-stock item, or not enough loyalty points now appear in Malay or Chinese.

Improved · Going back keeps your place

Pressing Back after opening a product returns you exactly where you were, with everything you'd scrolled through still loaded.

Fixed · Variant choice announced to screen readers

Picking an option on a product page now announces which is selected instead of staying silent.

The red used for delete actions is slightly deeper so red text on light-red buttons is legible.

Improved · Clearer focus and readable labels

Keyboard users get a clearly visible focus outline on buttons and fields.

Status labels like "Pending" are darker and easier to read at small sizes, and warning buttons use a deeper shade so their white text is legible.

Fixed · Pages appear the moment they load

Every page used to stay blank until the site's scripts finished, which could take seconds on a slow connection.

Content now paints immediately. On slower phones this makes the whole store feel dramatically faster.

Fixed · Chat alerts open the right conversation

Tapping a new-message notification now goes straight into that conversation instead of the inbox.

Fixed · Edit forms protected from accidental closes

Pressing Escape or clicking outside a part-filled form no longer throws away your work.

You're asked whether to keep editing or discard. Untouched forms still close instantly.

New · Message editing time limit

Like WhatsApp, you can edit a message only within 24 hours of sending it. Unsending still works anytime.

Fixed · A snappier chat inbox

Your conversation list now loads in a fixed couple of queries instead of a couple per conversation.

New · Safer against double orders

Place Order stays locked until you're handed to the payment page, so a second tap can't create a duplicate.

Switching delivery address mid-checkout also resets the shipping options, so you always confirm the rate for the new address.

New · See when someone is online or typing

The chat header shows a green dot when the other person is online, and a typing hint while they write.

New · Chats show what you're asking about

"Chat with seller" on a product opens the conversation with that product attached.

Your first message carries a small product card. Sellers messaging from an order get the same with the order number. You can remove the attachment before sending.

New · Save a product edit from any step

A Save changes button is now on every step of the edit form, so you can tweak one field and save right away.

Creating a new product still walks through the steps.

New · Images in product descriptions

The description editor now has an image button.

Upload a size chart or lifestyle shot and it drops into the description. Images are compressed automatically and stay within the page width on mobile.

Improved · A faster description editor

The rich-text editor has been rebuilt, keeping the same formatting with undo and redo. Existing descriptions are unchanged.

July 3, 2026

Fixed · Description length counts your text

The minimum and maximum now measure what you typed rather than hidden formatting.

Short descriptions are still caught, and long formatted ones aren't cut off early.

Fixed · Product pages working again

A recent update to rich-text descriptions was crashing every product page.

Fixed · Chat history kept for disputes

Deleting an account or store no longer erases the conversations tied to it.

Messages are preserved and remain visible to admins for support and dispute resolution. There's also a light anti-spam limit on very rapid sending.

You can see a Read marker once the other person opens your message.

Messages are grouped under Today / Yesterday / date dividers, your conversation list has a search box, and the pop-up widget fits small phones properly.

Fixed · Chat photos are private

Images shared in a conversation are no longer reachable by public link — only the two people in that chat and admins can open them.

Submitting a return or appeal now shows a View link that opens it, and requesting a tax invoice links to its order.

Saving your public creator profile now shows a View link that opens it.

New · Admins can review conversations

A new Chat page lets admins read every customer-to-seller conversation, read-only, for support and moderation.

Issuing a purchase order, approving or rejecting a request, submitting a request, and creating an RFQ now include a View link.

New · Sellers can start a chat

Vendors can now open a conversation with a customer from an order. Previously only customers could start one.

Sending or voiding an invoice, creating an order, publishing to a marketplace, answering a question, and updating a return policy now include a View link.

New · Archive conversations

Archiving moves a conversation out of your inbox into an Archived area you can reopen anytime. It only affects your own view.

Actions on vendors, orders, products, users, B2B companies, and promotions now include a View link that opens that record.

New · Edit or unsend chat messages

You can edit the text of a message you sent — it shows a small "edited" note — or unsend it entirely, and the other person sees the change right away.

Improved · Docs layout improvements

The navigation sidebar now stays pinned, and the width toggle switches only the article between a centered column and full width.

Fixed · B2B invoices in one place

The separate Invoice and RFQ Payment pages showed the same invoices.

They're now a single Invoices page with All / Unpaid / Paid / Void tabs. Paying an invoice is limited to Finance and Company Admin roles.

Improved · Notifications that point somewhere

After updating a live product the confirmation now has a View product link.

Form errors now name the exact fields to fix — "Please fix: Product name, Price" — instead of a vague "check the highlighted fields".

Improved · Chats stay in order and can't be altered

Your conversation list now floats the most recently active chat to the top.

A message's text and photo are locked once sent, so neither side can quietly change what the other said.

New · Rich text product descriptions

The description field is now a proper editor with headings, bold and italic, lists, and links.

Your formatting shows on the product page. Existing descriptions keep working unchanged.

New · More media formats, several at once

You can now select multiple files in one go, and we accept GIF, AVIF, and MOV on top of the usual formats.

Animated GIFs stay animated. Files your browser can't display are turned away with a clear message.

Improved · More reliable chats

Long conversations open on your most recent messages, with a "Load earlier messages" link.

A message you send no longer occasionally appears twice, the unread badge stops counting the conversation you're reading, and a failed send keeps your text and photo so you can retry.

Improved · A friendlier address book

Saved addresses show in a cleaner list with your default pinned to the top, and the add/edit form has a "Set as default" toggle built in.

Improved · A cleaner Profile and Security page

Profile shows your details at a glance and switches to editing only when you tap Edit.

Security shows your email and password with a Change button on each. Both move to a roomier two-column layout.

Fixed · Opening Chats doesn't jump the page

The chat now scrolls only inside the conversation view, so the page stays where you left it.

Fixed · Plixstar icon in your browser tab

The site icon in tabs and bookmarks is now the Plixstar mark instead of a generic placeholder.

Fixed · Product videos load faster

Clips stay cached far longer, and a clip's data doesn't load until you play it — noticeably lighter on mobile.

Improved · Uploaded photos are shrunk automatically

Avatars, logos, banners, review photos, and chat images are compressed the moment you pick them, with no visible loss of quality.

Fixed · Cart no longer doubles on refresh

Reloading while signed in could add your cart items on top of themselves — 2 became 4, then 8.

July 2, 2026

Fixed · E-invoice without a tax number

Leaving the tax number blank now files a General Public e-invoice and issues it, instead of quietly reusing a number you'd entered before.

Improved · A tidier Returns page

Returns filters now live in the same slide-in panel as Orders.

Each return's detail page is reorganised: a progress timeline up top, details and items on the left, your conversation with the vendor on the right.

Improved · Clearer e-invoice status

The Tax Documents tab now shows exactly where your e-invoice stands — issued with its QR code and PDF, still validating, or rejected.

If rejected it tells you why and lets you request again. While validating, the request button is hidden so you can't file a duplicate.

July 1, 2026

Improved · A cleaner Orders page

The toolbar keeps search, sort, per-page, and view, and tucks every filter into a panel that slides in from the side.

Opening an order and heading back keeps your filters and sort exactly as you left them.

Fixed · Guest e-invoices pass validation

An e-invoice for a customer who didn't request a tax invoice is now filed under the general-public category required by LHDN.

Fixed · E-invoices record correctly

A field-name mismatch recorded every successful submission as failed, even though it had been accepted.

June 30, 2026

Clearer messages when a shipment can't be booked. If a Pos Laju or Ninja Van booking fails, the order page now explains why in plain language — for example, that the carrier account isn't authorized to create shipments yet, or that a pickup address is missing — instead of showing a raw technical error. The full technical detail is still available under a "Technical details" toggle. — 8:30 PM

Technical details

shipment_bookings.last_error holds the raw carrier error (e.g. Ninja Van's 403 ... insufficient permissions (required scopes: ...)), which the vendor failure banner and ShippingForm previously rendered verbatim in a <pre> — reading as a bug to testers. New classifyBookingError() (lib/shipping/booking-errors.ts) maps the raw text to a stable kind (auth / address / validation / temporary / generic) + carrier label; both vendor surfaces now show a friendly i18n message (en/ms/zh vendorOrders.bookingBanner.cause*) with the raw text moved behind a <details> "Technical details" expander. AdminShippingOverride keeps the raw error unchanged for debugging. Note the Ninja Van sandbox 403 itself is a carrier-account scope gap, not a code bug.

Vendor order screen stays put after booking a shipment. When a seller books a Pos Laju or Ninja Van shipment, the order page now keeps them on the Shipping tab they were working in, instead of jumping back to the Items tab. — 8:20 PM Faster, more reliable online-banking payments. Paying by online banking (FPX) now confirms your order the moment your bank approves it, instead of occasionally showing "pending" for a while as the behind-the-scenes steps catch up. — 8:20 PM

Fixed · Orders mark themselves Shipped

Once a courier scans a parcel as picked up, the order moves to Shipped on its own and the customer gets the email.

Vendors no longer have to mark it manually, though they still can.

Fixed · Vendor order screen stays put

Booking a shipment now keeps you on the Shipping tab instead of jumping back to Items.

Fixed · Faster online-banking payments

Paying by online banking now confirms your order the moment your bank approves it, instead of showing "pending" for a while.

Fixed · Unpublished products leave the spotlight

The creator spotlight on the home page now hides any product that's been unpublished or moved back to draft.

Improved · Edit product steps in any order

You can jump straight to any section — Basics, Pricing, Media, Details, Review — instead of stepping through one at a time.

Fixed · Logging in takes you to the right place

Signing in now lands you in your own area based on your account, instead of the home page.

Signing in to finish something you were doing still keeps you where you were.

Fixed · Tidier checkout address

Saved addresses no longer stack up as a tall list — checkout shows a single searchable picker.

June 29, 2026

Improved · Shopping and account improvements

A batch of upgrades across browsing, your cart, and your account.

Add wishlist items straight to your cart, see each shop's name on product cards and its rating on the product page, jump from the search bar into the full catalogue, view recent orders on your account overview, give a reason when you cancel, and get a reference number when you request a return.

Improved · A cleaner cart

The slide-out cart has a tidier layout: items scroll in the middle, with the total and Checkout button pinned to the bottom.

Improved · Cleaner product cards

Each card shows price, rating, eco-certification, and a save heart — tap anywhere to open the product. The shop name links straight to that shop.

Improved · Confirm before removing a cart item

Tapping the ✕ now asks you to confirm, so an accidental tap won't clear something you meant to keep.

Improved · Wishlist updates right away

Items you heart appear in the slide-out wishlist the moment you open it, with no refresh.

New · Manage who runs your family

Owners can hand ownership to another member, or step a co-owner back down to member, from the Members page.

New · Add to cart from the listings

Product cards now have a quantity box and an Add to Cart button, so you can grab an item without opening it.

Items with options still open the product page so you can choose. The same editable quantity box appears in your cart.

New · Name your family account

Owners can set and later change a name for their family account, shown on the dashboard and order history.

Improved · Zoom product photos

Hover any photo to magnify it under your cursor, and click for a larger view with every photo lined up beside it.

Improved · Shop filter and star rating stick

Filtering to a shop while searching by keyword now narrows to that shop, and a minimum star rating hides lower-rated items as expected.

New · Easier sharing, and saved counts

The Share button opens a tidy pop-up with one-tap sharing to WhatsApp, Facebook, X, Telegram, email, or LinkedIn, plus copy link.

The heart shows how many shoppers have saved a product, so you can tell at a glance what's popular.

Eco-certification, rating, and product-type filters now apply to search results, not just browsing.

Improved · See why an order was cancelled

A cancelled order shows the date it was cancelled and, if you gave one, your reason — right on the order card.

Fixed · Fixes from testing

You can change your profile photo after one is set, adjust quantities inside your Family shared cart, and see a per-member spending breakdown.

For business accounts, a request's rejection reason now appears in the staff Requests list, not only in the email.

Improved · Your wishlist everywhere

The heart sits at the top of every product page and shows for everyone.

Tap it and, if you're not signed in, a quick sign-in pops up and your save goes through. The heart in the top bar shows how many items you've saved and opens a slide-out list.

Improved · Smoother shopping touches

Add to cart from the wishlist with a confirmation, see recent orders and seller ratings at a glance, and friendlier shipping and return labels.

Improved · More admin tools

Six additions to the admin console.

Shipping Settlements reconciles each carrier bill against the shipping quoted at checkout, with per-row variance highlighted when it's off. Support tickets can be assigned to a staff member. The e-invoice view gains an invoice details panel. Returns carry an automatic advisory risk flag, separate from the manual fraud flag. Platform settings expose the loyalty redemption rate and points expiry. Vendors get a publish-to-marketplace action.

Improved · Save favourites from the product page

Tap the heart next to Add to Cart — no need to head back to the listing. It shows filled when an item is already saved.

Improved · Filter from the toolbar

Filters now sit inline as quick dropdown chips instead of behind a slide-out panel.

Order history and returns filter this way on desktop, with the panel kept for phones. Admin cancellations, e-invoice, and RFQ lists gain new filters.

Fixed · Admin console improvements

Retry every stuck carrier booking in one click, see which customer each refund belongs to, and search orders by vendor name.

The vendor leaderboard can be filtered by date range, the RFQ view shows the purchase order created when an RFQ is awarded, and rejecting a cancellation now notifies the customer.

New · Zoom photos and watch product videos

Tap a photo to open a full-screen view you can zoom and pan, and sellers can add short videos that play in the gallery.

Photos and videos are resized as they upload, so pages stay sharp and load fast.

Improved · Sign in without losing your place

Tapping the wishlist heart, Buy Now, following a store, or chatting with a seller now opens a quick sign-in right where you are.

Once you sign in, whatever you were doing carries on.

Fixed · See every family order

Owners and co-owners can open the full details of any order placed by a member.

Previously only the person who placed it could, even though all family orders showed in the shared history.

New · Ask for the same item again

When returning a faulty product you can choose Replacement to have an identical item reshipped, alongside Refund and Exchange.

New · All your cancellations in one place

A new Cancellations page lists every cancellation for your store, with the order, customer, amount, and reason.

Improved · Choose your courier when booking

On an order's Shipping tab you can pick the courier and book the label yourself, instead of only retrying the one the customer chose.

June 28, 2026

Improved · Filters, sort, and view on one line

Management tables show the View menu on the same row as Filters and Sort, for a tidier toolbar across every list.

Improved · Clearer B2B quotes and invoices

Each quote request shows a short reference code so you can spot it at a glance, and an invoice's detail page lists every item with quantity and price.

Improved · Family portal fixes

Out-of-stock options can no longer be added to a shared cart, and the members list refreshes correctly after you invite, promote, or remove someone.

Fixed · More reliable e-invoicing

Submitted invoices are automatically checked and confirmed, transient network errors retry instead of failing for good, and refund and exchange documents carry the correct tax details.

Improved · Swipe and drag through photos

On a computer the main product image has arrows, and you can drag the photo itself to flip through.

On mobile the swipe is smoother and no longer bounces the page.

Improved · Push notifications

Opt in to get order and account updates on your phone or desktop even when Plixstar isn't open.

Improved · Show only the columns you care about

Portal tables have a View menu to hide or show columns, and your choices are remembered.

Improved · Handle many at once

Select multiple rows and act on them together from a floating action bar that appears when you make a selection.

Fixed · Imported product photos display

Pictures pulled in from a connected shop were sometimes saved with a broken link and showed a placeholder.

Improved · Clearer search suggestions

The instant search drop-down shows names and prices in readable contrast, and hides prices on login-only products with a "Login to view price" note.

New · E-invoices live on your orders

Status, requests, and PDF downloads have moved onto each order, so everything sits in one place.

The separate Invoices and bulk pages are gone. You can filter orders by e-invoice status and request several at once.

Improved · A guided builder for longer forms

Creating a product, flash sale, or manual order now walks you through clear steps with a live preview, and a final review before you save.

Fixed · Return photos upload reliably

Attaching evidence photos no longer fails for screenshots or files with spaces and special characters in their names.

Improved · A much better experience on your phone

A mobile-first overhaul brings app-like navigation at the bottom, sticky add-to-cart and checkout bars, swipeable photos, and a catalog that loads as you scroll.

You can also install Plixstar to your home screen and browse key pages offline.

Improved · Filter by more than one thing

List filters now let you select several options at once, and downloaded reports match exactly what you've filtered.

Fixed · Sharing works everywhere

The Share button opens your phone's native share sheet on mobile and copies the link on desktop, and is no longer missing on larger screens.

Improved · Store picker fixed

Admins can choose a store again — the list was showing "No results" even when approved stores existed.

Improved · Quicker edits without leaving the page

Creating or editing products, vouchers, banners, and tickets now opens in a pop-up on top of the list, so you keep your place.

Improved · Creator portal polish

Payout pages refresh correctly after changes, a code's redemption list matches its totals, and tickets can only be linked to your own orders.

New · Developer docs linked

A new Developer link in the footer takes you to our documentation and API reference.

Improved · Stay up to date automatically

When we ship a new version you'll see a gentle "refresh to update" prompt, so you're never stuck on an old version.

June 27, 2026

Improved · Now in your language

Sign-in and account pages for shoppers are now available in multiple languages.

Improved · Fewer accidental clicks

Added a confirmation step before payout balance adjustments and before retrying a refund.

Improved · Smoother behind the scenes

Speed and reliability improvements across the app.

June 26, 2026

Improved · Safer checkout and payments

We strengthened how order totals, payments, and refunds are calculated and processed.

Improved · Your data stays yours

Tightened access controls so account, order, and payout details are only visible to the people they belong to.

On this page

August 5, 2026New · Apply a shipping voucher per sellerFixed · Auto-applied vouchers now respect combinability rulesNew · Privacy policy pageFixed · Videos attached to a return request now play inlineFixed · Admins can create seller-specific vouchers with stacking rules againFixed · Order search now finds orders with multiple sellersFixed · Order IDs now match on internal support tools tooFixed · Reviews and returns now work correctly when an order has multiple sellersFixed · Shipping vouchers now apply correctly on multi-seller ordersFixed · Seller can now be chosen when creating a seller-specific voucherAugust 4, 2026Improved · Sellers now schedule their own pickupFixed · Clearer messaging on reviews and returns before deliveryImproved · Simpler e-invoice request, always after deliveryFixed · Order ID now matches across seller, customer, and admin viewsFixed · Order records keep the email used at the time of purchaseImproved · Lower minimum photo resolutionNew · Notifications when an order is cancelled or refundedNew · Country field in your profileNew · Print your own invoiceNew · Cart reminder emailsImproved · Order page combines items and shippingFixed · Review and return blocked incorrectly on split ordersNew · Add videos to a return requestImproved · Cancel an item even after it's been booked for pickupNew · Bulky orders now split into separate parcels automaticallyJuly 30, 2026New · Multiple family delivery addressesFixed · Family spending overview showed inflated numbersImproved · Clearer, more flexible refundsImproved · Order details show your coupon and referralImproved · Product pages show volumetric weightImproved · Address fields fill themselves in, and check what you typeFixed · Chat crash when opening full chat alongside the widgetNew · Optional shipping insurance at checkoutJuly 29, 2026Improved · Tax invoices issue on deliveryImproved · Family checkout says whose tax number it usedImproved · Finding where to save your tax numberNew · Vendors can now see photos customers attach to reviewsNew · Partial refundsNew · Choose your courier pickup date and timeNew · Bulk print picking slipsNew · Order status tracks packing and pickupFixed · Resubmitting a rejected product now requires an editNew · Single item vs. variants, made explicitNew · Weight and dimensions are now required for shippingNew · Minimum photo resolutionNew · Attach new photos when appealing a rejected returnNew · B2B quotes now record shipping methodImproved · Order # now shown on B2B invoicesJuly 28, 2026Fixed · Support tickets now accept the order # you actually seeNew · Remove your profile avatarImproved · Return request dialog shows which order it's forNew · Admin tools for account recovery and addressesNew · Return history timelineNew · Photos in return messagesNew · Variant photosNew · Postcode managementNew · Eco tag iconsFixed · Print Invoice no longer errorsJuly 27, 2026New · Type a family cart quantityImproved · Family invite links removedFixed · Chat opens on your latest messageFixed · Cancellations and returns shown up frontFixed · B2B certificate uploads and pending applicationsNew · Cancel one vendor's itemFixed · E-invoices for every vendor in an orderFixed · The e-invoice checkbox no longer fails silentlyImproved · Order number on returnsImproved · Shipping label link removed for customersNew · Full payment breakdown on ordersNew · Terms must be accepted at checkoutNew · Per-variant weight and bulky-parcel pricingFixed · Vendor order CSV export fixedImproved · Courier e-invoices in the sidebarFixed · Onboarding phone validationImproved · City fills in your stateFixed · Consistent phone rules everywhereJuly 24, 2026New · Vendor-scoped shipping vouchers with tiersFixed · Payment email item names fixedImproved · Complete payment email summaryFixed · No Change Password on social sign-insImproved · Family reachable on mobileFixed · Shipping voucher discount matched the totalFixed · Three mobile layout fixesNew · KOL commission rates and a KOL listImproved · Profile photo updates everywhereFixed · "First order only" vouchers workNew · Cap a percentage discountNew · Duplicate or resubmit a code requestNew · Creator codes for specific productsNew · Share a creator code to more appsFixed · Notification dropdown fits mobileFixed · E-invoice status fits order cardsFixed · Creator accounts keep their footer linksJuly 23, 2026Improved · Honest shipping tax and voucher amountsImproved · Courier tax setup edits in a dialogImproved · E-invoice dashboard links and paginationNew · Courier self-billed invoice viewerFixed · Correct delivery tax on invoicesJuly 22, 2026Improved · Free shipping waives the delivery taxNew · Self-billed courier invoicesNew · Service tax on deliveryNew · Full transaction reconciliationNew · Commission and payouts by vendorImproved · Invoices reflect what was paidJuly 21, 2026Fixed · Finance and Reports now agreeImproved · Stronger validation across the siteImproved · Signup address is saved automaticallyFixed · Profile photo appears instantlyNew · Accounts stay Pending until verifiedNew · Chat deletion, recall limit, and live syncImproved · Cart clears after checkoutImproved · Interface touch-upsImproved · Chat PDFs and a steadier popupJuly 14, 2026July 12, 2026New · Tax e-invoice status on B2B invoicesNew · Family tax documents and per-order tax numbersFixed · B2B teammates can open each other's ordersFixed · Order tracking timestampsFixed · No more "Login" flash in the headerJuly 10, 2026Fixed · Vendor payout ledger shows transactions againImproved · Payout ledger filter is now a View menuNew · Printable B2B invoicesFixed · B2B invoice downloadsNew · Separate B2B billing addressNew · Creators can request a payoutFixed · Told when a refund needs helpImproved · Creator code removed from B2B checkoutImproved · Channels page hiddenJuly 9, 2026New · Shipping labels for customers and adminsImproved · Clearer courier booking failuresFixed · Order dates in your own timezoneFixed · No more label errors on incomplete ordersFixed · Pending orders show their itemsNew · Notified on every e-invoice outcomeImproved · Account sidebar stays in viewImproved · Refund buttons on one rowFixed · Automatic shipment booking is reliable againFixed · Variant stock no longer blocked by product stockImproved · No vouchers on B2B checkoutImproved · Unused B2B Invoice tab removedFixed · Safer B2B quote-to-order flowImproved · Safer buttons, dialogs, and formsImproved · Return risk hints in Malay and ChineseFixed · Thirteen broken links and dead ends fixedImproved · Admin returns queue tabs cleaned upJuly 8, 2026Improved · Seller returns page is easier to scanNew · Who placed each family orderImproved · Admin refund queue tidied upImproved · Faster refund approvalsImproved · Bulk status page shows only actionable ordersFixed · Order tracking works as expectedJuly 7, 2026Improved · A clearer refund processFixed · Homepage categories link somewhereFixed · Orders findable by short IDFixed · B2B purchase orders aren't payable at checkoutFixed · E-invoice requests work first timeFixed · Vendor order summary shows the discountFixed · Admin sees the customer's chosen shippingJuly 5, 2026Fixed · Clearer B2B purchasing and admin detailsFixed · E-invoices issue reliablyNew · See your return windowImproved · Invited-account form accessibilityNew · See your refund amountNew · Stronger password requirementFixed · Order confirmation email adds upFixed · Clearer sign-in link failuresImproved · Bulk actions show progressImproved · Safer notification emailsImproved · More of the app speaks your languageFixed · Clearer feedback in onboarding and supportFixed · Support attachments and same-day vouchersImproved · Coupons, feed, and compare fixesFixed · Navigation and resilience fixesFixed · Faster product pagesFixed · Cleaner printed invoicesFixed · Clearer returns and cancellationsImproved · A big accessibility passFixed · Cleaner packing slips and accurate voucher reportsFixed · Sharper focus outlinesImproved · Localized sign-in and account setupFixed · Order emails link to the right placeFixed · Softer shadowsImproved · Returns speak your languageNew · Approved returns say what to do nextFixed · Cart badge visible againFixed · Support ticket replies notify staffFixed · Add to cart from CompareImproved · Easier keyboard navigation in portalsImproved · CSV imports are keyboard-accessibleFixed · Shipping vouchers show the correct totalFixed · Bulk-select count stays accurateFixed · B2B and Family payment returnsFixed · Admin packing slips print againJuly 4, 2026New · Choose how many rows to showImproved · Confirmation pop-ups speak your languageFixed · Hidden prices stay hiddenFixed · No contradictory stock lineFixed · One colour language for status labelsFixed · Consistent prices with thousands separatorsImproved · Dates follow your language in every portalImproved · Order status looks the same everywhereFixed · Honest payment status and safer cart clearingFixed · Form errors announced everywhereFixed · Form errors announced at sign-up and checkoutNew · Autofill for delivery addressesFixed · E-invoice links work inside tablesImproved · B2B and Family portals on phonesFixed · Dates and payment errors in your languageFixed · iPhones no longer zoom on tapFixed · Checkout and voucher errors in your languageImproved · Going back keeps your placeFixed · Variant choice announced to screen readersImproved · Clearer focus and readable labelsFixed · Pages appear the moment they loadFixed · Chat alerts open the right conversationFixed · Edit forms protected from accidental closesNew · Message editing time limitFixed · A snappier chat inboxNew · Safer against double ordersNew · See when someone is online or typingNew · Chats show what you're asking aboutNew · Save a product edit from any stepNew · Images in product descriptionsImproved · A faster description editorJuly 3, 2026Fixed · Description length counts your textFixed · Product pages working againFixed · Chat history kept for disputesNew · Read receipts, date dividers, and chat searchFixed · Chat photos are privateImproved · Notifications link to what changedImproved · Creator profile links to your pageNew · Admins can review conversationsImproved · B2B notifications link to recordsNew · Sellers can start a chatImproved · Seller notifications link to recordsNew · Archive conversationsImproved · Admin notifications link to recordsNew · Edit or unsend chat messagesImproved · Docs layout improvementsFixed · B2B invoices in one placeImproved · Notifications that point somewhereImproved · Chats stay in order and can't be alteredNew · Rich text product descriptionsNew · More media formats, several at onceImproved · More reliable chatsImproved · A friendlier address bookImproved · A cleaner Profile and Security pageFixed · Opening Chats doesn't jump the pageFixed · Plixstar icon in your browser tabFixed · Product videos load fasterImproved · Uploaded photos are shrunk automaticallyFixed · Cart no longer doubles on refreshJuly 2, 2026Fixed · E-invoice without a tax numberImproved · A tidier Returns pageImproved · Clearer e-invoice statusJuly 1, 2026Improved · A cleaner Orders pageFixed · Guest e-invoices pass validationFixed · E-invoices record correctlyJune 30, 2026Fixed · Orders mark themselves ShippedFixed · Vendor order screen stays putFixed · Faster online-banking paymentsFixed · Unpublished products leave the spotlightImproved · Edit product steps in any orderFixed · Logging in takes you to the right placeFixed · Tidier checkout addressJune 29, 2026Improved · Shopping and account improvementsImproved · A cleaner cartImproved · Cleaner product cardsImproved · Confirm before removing a cart itemImproved · Wishlist updates right awayNew · Manage who runs your familyNew · Add to cart from the listingsNew · Name your family accountImproved · Zoom product photosImproved · Shop filter and star rating stickNew · Easier sharing, and saved countsImproved · Filters work while you searchImproved · See why an order was cancelledFixed · Fixes from testingImproved · Your wishlist everywhereImproved · Smoother shopping touchesImproved · More admin toolsImproved · Save favourites from the product pageImproved · Filter from the toolbarFixed · Admin console improvementsNew · Zoom photos and watch product videosImproved · Sign in without losing your placeFixed · See every family orderNew · Ask for the same item againNew · All your cancellations in one placeImproved · Choose your courier when bookingJune 28, 2026Improved · Filters, sort, and view on one lineImproved · Clearer B2B quotes and invoicesImproved · Family portal fixesFixed · More reliable e-invoicingImproved · Swipe and drag through photosImproved · Push notificationsImproved · Show only the columns you care aboutImproved · Handle many at onceFixed · Imported product photos displayImproved · Clearer search suggestionsNew · E-invoices live on your ordersImproved · A guided builder for longer formsFixed · Return photos upload reliablyImproved · A much better experience on your phoneImproved · Filter by more than one thingFixed · Sharing works everywhereImproved · Store picker fixedImproved · Quicker edits without leaving the pageImproved · Creator portal polishNew · Developer docs linkedImproved · Stay up to date automaticallyJune 27, 2026Improved · Now in your languageImproved · Fewer accidental clicksImproved · Smoother behind the scenesJune 26, 2026Improved · Safer checkout and paymentsImproved · Your data stays yours