WCPOS – Point of Sale (POS) plugin for WooCommerce

描述

WCPOS (formerly WooCommerce POS) is a simple application for taking orders at the Point of Sale using your WooCommerce store. It’s great for phone orders too!

🕒 Install and start taking orders in less than 2 minutes.

🎥 DEMO

You can see a demo of the WCPOS plugin in action by going to demo.wcpos.com/pos with 🔑login/pass : demo/demo

Desktop Apps:
⬇️ Windows
⬇️ Mac (Intel)
⬇️ Mac (Apple Silicon)

Mobile Apps (Beta):
📱 iOS (TestFlight)
📱 Android (Google Play)

✨ FEATURES

  • Cross-platform: Accessible via browser, desktop, iOS & Android (mobile apps in beta)
  • Offline Storage: Fast product search and order processing
  • Flexible Cart: Add products not listed in WooCommerce
  • Barcode Support: Scan products directly into the cart
  • Receipt Templates: Pick from a built-in gallery — receipts, invoices, quotes, packing slips, gift receipts, kitchen tickets — or design your own
  • Thermal Printing: Print directly to 58mm and 80mm thermal printers over network, Bluetooth, or USB
  • Customer Tax IDs: Built-in field for VAT, ABN, GST, and other regional tax numbers
  • Multilingual: Available in most major languages
  • Built-in Support: Access live chat for instant help

🔓 PRO FEATURES

  • Stock Management: quickly adjust stock levels, pricing and more
  • Order Management: re-open and print receipts for older orders
  • Customer Management: create new customers and edit customer details
  • Payment Gateways: use any gateway for checkout
  • Coupons: apply coupons at the POS with search, coupon pills, and sequential discounts
  • Refunds: refund POS orders directly from the till
  • End of Day Reports: summarise daily sales, transactions, and cash flow for reconciliation
  • Stores: Manage locations with unique tax settings, pricing and receipts
  • Priority Discord support: one-on-one support via private chat

Discover all PRO features at wcpos.com/pro

📋 REQUIREMENTS

  • WordPress >= 5.6
  • WooCommerce >= 5.3
  • PHP >= 7.4

屏幕截图

  • WCPOS main screen

安装

Automatic installation

  1. Go to Plugins screen and select Add New.
  2. Search for “WCPOS” in the WordPress Plugin Directory.
  3. Install the plugin
  4. Click Activate Plugin to activate it.

Pro installation

If you have purchased a license for WCPOS Pro please follow the steps below to install and activate the plugin:

  1. Go to: http://wcpos.com/my-account/
  2. Under My Downloads, click the download link and save the plugin to your desktop.
  3. Then go to your site, login and go to the Add New Plugin page, eg: http://<yourstore.com>/wp-admin/plugin-install.php?tab=upload
  4. Upload the plugin zip file from your desktop and activate.
  5. Next, go to the POS Settings page and enter your License Key and License Email to complete the activation.

Manual installation

To install a WordPress Plugin manually:

  1. Download the WCPOS plugin to your desktop.
  2. If downloaded as a zip archive, extract the Plugin folder to your desktop.
  3. With your FTP program, upload the Plugin folder to the wp-content/plugins folder in your WordPress directory online.
  4. Go to Plugins screen and find the newly uploaded Plugin in the list.
  5. Click Activate Plugin to activate it.

常见问题

Where can I find more information on WCPOS?

There is more information on our website at https://wcpos.com.

  • FAQ – https://wcpos.com/faq
  • Documentation – https://wcpos.com/docs
  • Blog – https://wcpos.com/blog

评价

2025 年 11 月 28 日
We were looking for an easy solution to connect our WooCommerce webstore with a physical store. We sell books and currently have roughly 380k products online, which works perfectly with WooCommerce, ElasticPress, and some customizations, of course.Let’s face it: all plugins that aim to connect a physical store with WooCommerce are crap, and this one even costs around 120 euros and still doesn’t work as expected. It keeps freezing, not responding at all, or the EAN search simply returns no results, even though the products exist and are managed by ATUM (which is actually pretty good). The issue seems to be that under the hood, the products are mirrored through a super slow API, which bottlenecks everything very quickly.I’m really frustrated and will need to build my own solution over the next few weeks and months.On top of that, the support is nonexistent. Thank you very much for nothing. TL;DR: Can’t recommend.
2025 年 11 月 5 日
i would like to suggest you this pos is the best pos for woo commerce for our business thankyou
2025 年 6 月 23 日
I ran in to some tax table issues and jumped on the Discord support. “Kilbot” user name of support guy had me up and running in just a few minutes. Having this rapid response makes the difference between a small inconvenience and a massive headache. Highly recommend these guys.
阅读所有80条评价

贡献者及开发者

「WCPOS – Point of Sale (POS) plugin for WooCommerce」是开源软件。 以下人员对此插件做出了贡献。

贡献者

「WCPOS – Point of Sale (POS) plugin for WooCommerce」插件已被翻译至 12 种本地化语言。 感谢所有译者为本插件所做的贡献。

帮助将「WCPOS – Point of Sale (POS) plugin for WooCommerce」翻译成简体中文。

对开发感兴趣吗?

您可以浏览代码,查看SVN仓库,或通过RSS订阅开发日志

更新日志

1.9.0 – 2026/05/15

Almost three months of work — here are the highlights:

  • New receipt template gallery — pick from ready-made receipt, invoice, quote, packing slip, gift receipt, kitchen ticket, and right-to-left templates, and switch between them in settings.
  • Multiple receipt templates — install and enable several templates side by side instead of being stuck with one.
  • Thermal printer support — print receipts directly to thermal printers (58mm and 80mm) over network, Bluetooth, or USB, with a guided setup wizard in the WCPOS apps.
  • Customer Tax IDs — a new Tax ID field on the customer form, ready for VAT, ABN, GST, and other regional tax numbers.
  • Pro: Coupons at the POS — search for and apply coupons at checkout, with coupon pills in the cart and support for sequential discounts.
  • Pro: Refunds at the POS — refund POS orders directly from the till, with a full audit trail.
  • Pro: Per-store receipt templates — assign different templates to different stores, and drag-and-drop to reorder them.
  • Plus lots of smaller fixes — tax and coupon calculations, third-party plugin compatibility, faster syncs, and better translations.

1.8.14 – 2026/02/19

  • Hardened DB migration locking — upgrade now uses the WordPress core upgrader lock (WP_Upgrading) with an atomic acquisition check and a shutdown fallback, preventing concurrent migrations on high-traffic sites (#540)
  • Fixed offline gateway ignoring POS checkout status — orders placed with the Cash or Card gateway while offline now respect the configured POS checkout status instead of defaulting to “processing” (#544)
  • Fixed i18n locale fallback and caching — translation lookups no longer retry locales that returned a definitive 404, reducing unnecessary network requests on every page load (#543)
  • Fixed settings page clipping on some WordPress themes — the left side of the settings panel was being cut off on sites where #wpcontent has extra padding (#545)
  • Reduced extensions catalog cache TTL — the extension directory now refreshes every hour instead of daily, so newly published extensions appear faster (#546)
  • Allowed php-jwt advisory on PHP 7.4 — resolved a PHP Scoper install failure caused by a security advisory that only affects newer PHP versions (#541)

1.8.13 – 2026/02/17

  • Fixed root cause of duplicate product metadata — POS order processing no longer clones product objects in the stock/coupon path, preventing repeated meta rows from being re-saved on each stock update (#537)
  • Added a safer duplicate-meta repair migration — a new one-time cleanup removes only exact duplicate (post_id, meta_key, meta_value) rows for POS-touched products/variations, reducing API payload size and memory pressure without deleting distinct meta values (#537)
  • Expanded regression coverage for discount and stock edge cases — added tests for coupon recalculation behavior, variation pricing paths, and stock-reduction lifecycle to prevent regressions (#537)
  • Reduced diagnostic log noise — high-volume top-meta-key context is now opt-in so normal logs stay readable while deep diagnostics remain available when needed (#537)

1.8.12 – 2026/02/13

  • One-time cleanup of duplicate metadata — a migration automatically removes thousands of junk meta rows that accumulated on POS-touched products and orders, resolving memory exhaustion and slow API responses on affected stores (#532)
  • Reduced redundant order saves in payment gateways — Card and Cash gateways no longer call $order->save() before payment_complete() / update_status(), which already save internally (#532)

1.8.11 – 2026/02/13

  • Fixed critical memory exhaustion on large stores — API responses were re-reading all metadata from the database on every request, causing extreme memory usage on stores with large catalogs (#519)
  • Fixed O(n²) loop in order tax calculation — variable shadowing caused quadratic iteration over line item meta (#519)
  • New meta data monitoring — REST API responses now detect resources with excessive metadata and fall back to a safe response mode, preventing out-of-memory crashes (#521)
  • Security hardening — masked auth tokens in test endpoint, added directory protection for temp receipt templates (#519)
  • Updated all JS and PHP dependencies to latest stable versions (#521, #526)
  • Pro: Redesigned Edit Store page with modern React/Tailwind UI
  • Pro: Fixed SQL injection vulnerability in analytics and store authorization bypass

1.8.9 – 2026/02/11

  • Completely rebuilt settings page — new modern architecture with Vite, TanStack Router, headless UI components, zustand state management, and responsive layout with grouped sidebar navigation (#495, #498, #505)
  • New Extensions directory — browse, discover, and manage extensions directly from POS settings, with Pro integration hooks, GitHub links, and new-extension badges (#497, #500, #510)
  • New Logs page — view, filter, and paginate log entries from file and database sources with expandable details and unread counts (#504, #511)
  • Redesigned email settings — granular per-email toggles replace the old on/off switch, with new cashier notification options (#502, #508)
  • Fixed POS prices persisting to product database — price modifications made at the POS no longer overwrite the stored product price (#509)
  • Fixed coupon calculations ignoring tax — coupon subtotal filters are now tax-aware, preventing incorrect discount amounts (#507)
  • Fixed security plugin conflicts — CSP headers are now stripped on POS pages so Content-Security-Policy rules from security plugins no longer break the interface (#503)
  • Fixed WordPress 6.7+ compatibility — deferred translation calls in the Activator to avoid the “too early” notice (#498)

1.8.8 – 2026/02/06

  • Completely rebuilt translation system — switched to i18next with proper plural handling and regional locale fallback, loaded on-demand from jsDelivr and decoupled from plugin version updates (#37, #75, #76, #438, #439, #474)
  • Fixed conflict with REST API caching plugins — POS requests could break entirely when a REST API caching plugin was active, this is now resolved (#421)
  • Fixed expired JWT overriding valid authentication — an expired token could silently override a valid cookie session, locking users out unnecessarily (#472)
  • POS discounts no longer wiped by coupons — applying a coupon to an order with POS-discounted items no longer resets those discounts back to the original price (#464)
  • Fixed misc products showing $0 on receipts — miscellaneous products now display the correct price on receipts and order emails (#436)
  • Fixed checkout-to-receipt navigation — no more crashes or lost order links when completing a sale (#77)
  • Fixed token refresh on 403 errors — sessions that appeared “stuck” requiring a re-login should now refresh automatically (#74)
  • Fixed store switching issues — switching between stores no longer causes errors or blank screens (da8c05d)
  • Fixed missing data in received template — the order received page was missing link data, now restored (#476)
  • Tightened permission checks — capability checks now properly match what’s configured on the Access settings page (#467)
  • Improved performance during large syncs — the UI stays responsive while syncing large product catalogs (8657e1f)
  • Fixed web hydration in standalone mode — the web app loads correctly when accessed directly without the desktop wrapper (#19)