Downloads

One till, every device.

macOSDetected

Version 1.11.9 · Apple Silicon · .dmg

Download for macOS

On an Intel Mac? Get the Intel build

Every app connects to the free WordPress plugin — install it first.

How it fits together

One store at the centre. Every till in sync.

  • One plugin is the only setupThe free plugin adds a secure REST API to your WooCommerce store. That’s the whole install — nothing to host or configure per device.
  • Every app reads and writes the same storeRing up a sale on the desktop, refund it on your phone — one set of products, orders and customers, updating in real time.
  • Offline-first, so the till never stopsEach device keeps working without a connection and re-syncs the moment it’s back online.

What stays in sync

  • Products & prices
  • Stock levels
  • Orders
  • Customers
  • Tax & receipts

Get started

Three steps to your first sale

It takes about two minutes, start to finish.

  1. 1

    Install the free plugin

    The foundation everything connects to. In your dashboard: Plugins → Add New, then search “WCPOS”.

    WCPOSFree · GPL

    Latest 1.11.9 · WordPress 5.6+ · WooCommerce 5.3+ · PHP 7.4+

  2. 2

    Pick your device

    All free, all in sync. Grab the one we detected up top, or any of these.

  3. 3

    Want more? Go Pro

    A licensed plugin that adds terminal payments, refunds and stock control on the same foundation.

    Unlock the full till

    Payments, refunds, stock & pricing, order management, end-of-day reports, multi-store and priority Discord support.

Release history

What’s new

Recent plugin releases. Desktop builds are numbered separately.

1.11.9LatestNov 1, 2026
  • Fixed POS sales saving with no tax on stores that calculate tax by the customer shipping address -- a regression in 1.11.8. A sale with no shipping address is taxed at the customer billing address, else at the shop base address, as WooCommerce does; the till showed the right tax all along. Orders saved by 1.11.8 with no tax are corrected with Recalculate on the order's edit screen.
  • PHP 8.5 no longer logs a deprecation notice on every POS request from the bundled login-token library.
  • Developers: the bundled Sentry error-reporting library is updated to 4.34.0.
1.11.8Nov 1, 2026
  • New sales start from WooCommerce's own "Calculate tax based on" setting (shop base address, customer billing address or customer shipping address) instead of always the shop base address. A sale with no customer address is still taxed at the shop base address, as in WooCommerce.
  • The Extensions screen and its menu badge no longer announce an extension update that needs a newer WCPOS than this site runs.
  • The refund window is titled with the order number, not the order's database id.
  • Developers: translations updated to 2026.11.0.
1.11.7Oct 28, 2026
  • Reading an order from the POS no longer saves it on stores using WooCommerce's High-Performance Order Storage. The first read of a web or admin order could attribute it to the cashier who opened it and make the till's next change to that order fail as out of date.
  • A line added to a sale that already has a coupon re-applies the coupon, so the coupon's discount matches the order total (a 10% coupon on a $50 sale stayed at 5.00 after a second $50 line).
  • A receipt printed for an order that still needs payment no longer shows a "PAID" row; the Invoice template shows "Amount due" instead. The bundled Detailed Receipt template is updated.
  • Variations load correctly on WooCommerce 11.3. A change in how WooCommerce 11.3 applies its on-sale filter dropped variations from the POS's catalogue read, and the till treated them as removed.
  • A sale is no longer marked paid when the store's payment check answers with an order that has no status. The pay page's fallback check now waits for a real order status.
  • A receipt opened from the device's own data for an order that still needs payment no longer prints a "PAID" row. Offline, or before the store's receipt data arrives, a pending or open order printed "PAID" and the Invoice template hid its "Amount due".
  • The loading screen's progress bar is readable on a device in dark mode.
  • Developers: the translation template (POT) is updated; Electron desktop runtime 43.8.1.
1.11.6Oct 21, 2026
  • Thermal receipts no longer break words in the middle ("devolucione / s") when printed through the print dialog, as a PDF, or as a full-receipt image. Text now wraps at word boundaries, as it does on a receipt printer.
  • Receipts open sooner after payment on sites with a heavy theme. The payment window's "paid" signal no longer waits for the theme's styles and scripts to load.
  • Saving a product barcode, a cloud-print order, a negative fee's tax or a receipt template no longer saves the record twice. Each write now runs once inside WooCommerce's own save, so other plugins' save hooks fire once, and a cloud print problem no longer leaves an "Error during status transition" note on the order.
  • The receipt screen warns when what prints will differ from the template you chose. A thermal template with no receipt printer prints its on-screen preview through the print dialog; an HTML template on a receipt printer prints the built-in layout; an HTML template on a Star CloudPRNT or Epson cloud printer prints nothing.
  • Automatic receipt printing no longer waits for the on-screen preview to load when the printer does not use it: receipt printers, cloud printers and already-rendered templates.
  • Card terminals and other non-cash gateways open the receipt as soon as the payment completes, instead of waiting for the order to sync.
  • A receipt that could not be downloaded in time is reported as that, not as a printer that did not answer.
  • Desktop: Epson network printers on port 9100 start printing up to 16 s sooner.
  • Guest sales on a store that taxes by shipping address are taxed at the till again. With no shipping address the till now falls back to the billing address, then to the shop address, as WooCommerce does.
  • The login screen says the app needs updating when the store's plugin no longer supports it, instead of offering "Re-authenticate" and "No stores found".
  • Logs: a catalogue change the store refused is always reported, and switching store mid-sync no longer leaves a row in the other store's log.
  • Translations updated to 2026.10.8.
1.11.5Oct 20, 2026
  • Web-store sales no longer re-save the product when they reduce stock. This fixes a checkout error and a doubled stock deduction on bank-transfer orders that a few stores saw, and keeps product descriptions exactly as you wrote them.
  • Developers: the woocommerce_product_set_stock / woocommerce_variation_set_stock listener and Products::product_set_stock() are removed; WooCommerce has bumped the product's modified date on every save since 3.4.0.
1.11.4Oct 20, 2026
  • A failed translation download no longer slows every POS and admin request. It is retried after an hour instead of on every request -- stores whose host cannot reach the translation CDN were waiting minutes for the POS to load; English stores were not affected.
  • Checkout and refunds no longer stop working after the browser tab or desktop window wakes with sync requests still in flight. Every later request to the store failed until the page was reloaded.
  • A completed order no longer logs "a change on this device clashed with an edit in your store". The first retry of a save was reported as a conflict even though the order had saved.
  • Logs and toasts alarm only when there is something for you to do. A retry the app handles itself is now an information row; a warning names the record, says what happened and links to where it is fixed.
  • A sale that times out while sending is reported as "still on its way", not as failed, so it is not entered twice.
  • A refund whose result could not be confirmed says so and tells you to check the order before trying again.
  • A storage error whose text happened to contain "409" or "CONFLICT" is no longer reported as a clash with your store. The real error is shown instead.
  • Web: the first download is a fifth smaller. Error reporting and date-format languages load only when they are needed.
  • Translations updated to 2026.10.7.

Full history on GitHub — Free · Desktop