A Taiwan-focused WooCommerce extension. Toggleable modules cover ECPay (綠界), NewebPay (藍新), SmilePay (速買配), LINE Pay, PAYUNi (統一金流), PayNow (立吉富), PChomePay (支付連), TapPay and Shopline Payments for payments; ECPay, NewebPay, SmilePay, PAYUNi and PayNow for convenience-store + home-delivery shipping; ezPay, ECPay, SmilePay, PayNow and AMEGO for Taiwan e-invoicing.
Enable only the providers you need from a single settings page — payment, shipping and invoice modules are fully independent and can be mixed in any combination.
HPOS-native, Block Checkout-native, PHP 8.2+ strict-typed, GPLv3, no premium gating.
Moksa AI assistant (new in 1.3.0)
Built on the WordPress 7.0 AI Client, Moksa AI is an optional in-admin chat assistant that lets you run common store tasks in natural language: find orders by invoice / shipping / payment number, look up order details and counts, change order status (single or batch), add order notes, issue / void / allowance e-invoices, create and print shipping labels, and enable or disable modules, individual payment methods and invoice issuing methods. Every action that changes data first shows a summary and waits for your explicit confirmation before it runs. The assistant uses whichever AI provider you connect under Settings → Connectors — the plugin never handles your AI keys, refunds, or credentials.
Source
Source code and issue tracker:
github.com/Moksa1123/moksa-for-woocommerce.
1.12.0 - 2026-10-09
New
-
An "Invoice number" column on the WooCommerce orders list, shown whenever an e-invoice provider is enabled. It reads whichever provider actually issued the invoice — ECPay, ezPay, Amego, PayNow, SmilePay, or PAYUNi's built-in invoice — and marks voided invoices. Like any column, it can be hidden from Screen Options.
Fixed
-
The "Invoice number" personalization tag in the block email editor only read ECPay invoices, so it came out empty for invoices issued by the other providers. It now reads all of them, and leaves voided invoices out.
1.11.4 - 2026-10-07
Fixed
- On the classic checkout, a half-width field could be pushed into the middle of the row and its partner dropped to the next line when the two fields above it differed in height by a few pixels (for example the country field being slightly taller than the state field). Each pair of half-width fields now starts on a new row.
1.11.3 - 2026-10-07
Security
- SmilePay payment notices could be forged. The only secret in SmilePay's check value is a 4-digit merchant code, leaving under a hundred values to try. Every new SmilePay order now carries its own signed key in the notification URL, failed checks stop automatic confirmation for that order after three attempts, and the check value is computed from the order total rather than the amount in the notice. Orders placed before this update keep the previous check.
- A late failure or payment-code notice could switch an already paid ECPay, NewebPay or SmilePay order back to failed or on hold, and overwrote the transaction number used for refunds. Such notices are now only recorded as an order note.
-
An ECPay or NewebPay payment whose amount does not match the order total (for example an old payment tab completed after the cart changed) now puts the order on hold for review instead of marking it paid.
Fixed
-
ECPay shipping status follow-up checks and the order screen's status lookup never worked: ECPay's successful reply was treated as an error.
- PAYUNi store pickup on the block checkout: a first-time customer could not place an order, because the hidden address fields were still required.
- ECPay paper invoices were issued to the ECPay member carrier instead of being printed.
- ECPay tax-ID and paper invoices failed on store-pickup orders without a street address. The pickup store's address is now used.
- PAYUNi "hide billing address for store pickup" on the classic checkout: switching back to home delivery left the address fields marked optional.
-
The AI assistant button appeared a second time inside the plugin-update screen.
Changed
-
Shipping status follow-up checks no longer save the order on every check (so no hourly order-updated webhooks), also compare the status description, rotate through every eligible order, and no longer run 8 hours late.
- The Taiwanese field layout is now switched on only from its own section. If the old "reorder fields" checkbox was off, the section starts off.
- The Taiwanese mobile number check is now its own setting and works without the Taiwan address tools.
1.11.2 - 2026-09-11
Fixed
- Half-width fields on the classic checkout could end up stranded at half width on their own — the phone field, for instance, whenever its neighbour had been hidden by store-pickup billing hiding, the country-hiding option, or a WooCommerce setting. Pairing was decided once on the server before any of that hiding happened. It is now re-checked in the browser from the fields actually on screen, every time the checkout refreshes, so a field whose partner disappears takes the full row.
- The email field could not usefully be set to 50% width: pairing reserved a slot for it on the shipping address form, which has no email field, so its neighbour there fell out of step. Pairing is now worked out per form from the fields it actually contains.
- NewebPay convenience-store pickup on the classic checkout never showed the store picker. The picker was drawn 200 ms after choosing the method, and WooCommerce's own refresh then replaced that part of the page and wiped it. It is now redrawn after every refresh, the same way the ECPay, PAYUNi and SmilePay pickers already were.
Older entries are available in the plugin's repository.