| 开发者 | davidzoque |
|---|---|
| 更新时间 | 2026年11月12日 01:26 |
| PHP版本: | 8.0 及以上 |
| WordPress版本: | 7.1 |
| 版权: | GPLv2 or later |
| 版权网址: | 版权信息 |
/pos page (/caja on a Spanish site) with its own sign-in screen. From there you search products with their photo and stock, record the sales that come in through WhatsApp or Instagram (each one is a WooCommerce order, so stock goes down on its own), put products on layaway while the customer pays, record the stock that arrives and keep the list of what has to be shipped.
It was born for the shop that sells through chat and ships by courier, where a phone is enough. If you also have a physical store, turn on the Counter: a till screen for a computer or a tablet with a barcode scanner, cash with the change worked out, receipts on any printer and opening and closing the till.
It follows the country of the store (WooCommerce > Settings > General): the payment methods it offers, the carriers it suggests and the default sales channels are the ones of that country, and where WhatsApp is not the norm (the United States, for instance) the messages to the customer open as text messages in the phone's Messages app instead. Everything can be renamed, turned off or added to in WooCommerce > Dox POS > Sales.
What it does
assets/vendor/zxing with its license, loaded only when someone taps Camera, and never loaded from outside the site. Source code: https://github.com/zxing-js/library
External services
The register can load its two fonts from Google Fonts (fonts.googleapis.com and fonts.gstatic.com). This is off by default: a fresh install uses the fonts of the phone or the computer and the plugin does not connect to any outside service.
If you turn on the "Load the fonts from Google Fonts" switch in WooCommerce > Dox POS > Brand, the browser of whoever opens the register requests those fonts from Google, which receives their IP address and the usual data of a web request. With the switch on, the settings page loads the fonts the same way while you pick one, and when you type a font name the plugin asks Google whether a font by that name exists. No store, order or customer data is ever sent, and turning the switch off stops every request.
Google terms: https://policies.google.com/terms
Google privacy: https://policies.google.com/privacy
dox-pos folder to /wp-content/plugins/ and activate the plugin./pos (/caja on a Spanish site) and sign in with an administrator, a shop manager or a user with the "Cashier" role.No. For selling through chat a phone is enough: you search the product by name or SKU, record the sale and the order is in WooCommerce. In a physical store, the Counter works with any USB or Bluetooth barcode scanner (it types like a keyboard) or with the camera, and prints receipts from the browser on any printer.
No. The plugin never touches stock directly for a sale: it creates the WooCommerce order and WooCommerce discounts the stock, exactly as it does with an order from the website. Only stock entries add units, and voiding one takes them back.
Yes. When a sale is recorded, the order reserves its units with the same mechanism the WooCommerce checkout uses, so the last unit cannot be sold twice.
Administrators and shop managers. Someone with only the Cashier role sells and records stock without seeing any cost. Costs can be turned off entirely in WooCommerce > Dox POS > Products.
In the WooCommerce cost field ("Cost of Goods Sold"), so it also shows in the WooCommerce product editor and other plugins can read it. The plugin turns that feature on when you save the settings with the costs switch on.
Open the register, tap the gear at the top and choose Shipping costs. Add a cost "By weight" and write the ranges ("up to 1 lb, 6", "up to 5 lb, 10") and what a heavier order pays. It is a regular WooCommerce shipping method, so the web checkout charges the same, with no table rate plugin. Each product gets its weight and its size in the Products tab of the register; a product with no weight counts as zero.
Yes. The register reads the store country from WooCommerce. A Colombian store gets Nequi, the local carriers (Coordinadora, Servientrega, Interrapidísimo, TCC...) and WhatsApp; a US store gets Zelle and Venmo, USPS, UPS, FedEx and DHL, and text messages instead of WhatsApp; Mexico, Spain, Argentina, Chile, Peru and Ecuador have their own carriers, and any other country starts with DHL, UPS and FedEx. Card, cash, bank transfer and cash on delivery are there everywhere, and you can rename, turn off or add payment methods, carriers and channels in WooCommerce > Dox POS > Sales.
Yes. With Polylang or WPML each product exists once per language. Dox POS shows only the products in the store's default language (and the ones with no language), so each product appears once in Sell, Inventory, the Excel file and the counts. A web order placed in another language counts toward its main product in the best sellers and in Movements, and a product created from the register is created in the default language. Without Dox POS Pro, editing a product from the register changes only the main product. Dox POS Pro adds, with Polylang, a tab per language in the product form, creating a new product in every language at once and repairing a half-made translation. Dox POS changes stock only through WooCommerce, but it does not copy stock between translations: Polylang (free) does not do it either, so the store needs Polylang for WooCommerce, WooCommerce Multilingual (WPML) or a snippet that keeps the stock of the translations the same.
Dox POS sells in the store currency, also when Price Based on Country is installed and whoever opens the register is in another country. Dox POS Pro works with Price Based on Country zones: choose the zone of the register (for example Colombia in COP) and it sells in that currency with that zone's prices, with prices by zone in the product form, reports that show one currency at a time and store credit and layaways that keep their currency. Dox POS also detects CURCY, WOOCS and Aelia Currency Switcher to show a notice, but it does not sell in their currencies.
Yes. Orders are created through the WooCommerce API, and the plugin declares compatibility with High-Performance Order Storage and with the cart and checkout blocks.