The moment you open a second location, a set of questions arrives that a single shop never has to answer. Which store holds that stock? Which register sold it? Can the manager of store B see store A’s takings? Should the two stores even share a price list?
A multi-store WooCommerce POS answers these with one idea: outlets. Everything else follows from getting that model right.
One site, many outlets — not many sites
The instinct is to give each store its own WordPress install. Resist it. Two sites means two product catalogues to maintain, two order lists to reconcile, and a spreadsheet to add them together at the end of the month. When the third store opens, you have a full-time job that produces no revenue.
Run one WooCommerce store. Model each physical location as an outlet, and each till in that location as a register. Every order carries the outlet and register it came from, so a single order list can be sliced any way you need — by store, by till, by cashier, by day.
This is how OpenPOS is structured. Outlets and warehouses are first-class objects; registers belong to outlets; cashiers are assigned to the outlets they work in.
The hard part: stock per location
WooCommerce, out of the box, stores one stock number per product. Not one per store — one, full stop. That number answers “how many exist” and cannot answer “how many are in the Manchester shop”.
You have three options, and they suit different businesses.
Shared stock pool
Every store draws from the same number. Simple, and genuinely correct if your stores share a warehouse and ship from it — which is the case for a lot of furniture, appliance and made-to-order businesses.
It fails when a customer standing in one shop is told an item is in stock, and the item is in fact ninety miles away.
Per-outlet stock
Each outlet and warehouse holds its own quantity for each product. A sale at the Manchester till decrements Manchester’s number. This is what most multi-store retailers actually want, and it is what the OpenPOS stock management for outlets and warehouses provides, together with stock transfers between locations and adjustments for shrinkage, damage and counts.
The cost is discipline. Someone has to record the transfer when a box moves between shops. If nobody does, the numbers drift, and a POS whose numbers have drifted is worse than no numbers at all because staff learn to ignore it.
Online stock as a separate pool
Treat the website as its own outlet, holding stock in a fulfilment warehouse. Shop customers cannot buy the web stock and web customers cannot buy the shop stock. This is the safest configuration if overselling online is expensive for you, and the least efficient use of inventory.
Prices that differ by store
An airport branch charges more than a suburban one. A wholesale counter charges less than the retail floor. WooCommerce has one price per product, so anything else needs a price book: a set of rules mapping products to prices for a given outlet or customer group. OpenPOS supports this through its Price Book add-on rather than baking it into the core register, which keeps the common case simple.
Before you build a price matrix, ask whether you need one. Two prices for the same product is two things to get wrong on a promotion, and customers do notice.
Who can see what
Permissions are what separates a two-store shop from a chain. The pattern that works:
- Cashiers see their own outlet’s products and their own sales. They cannot open the reports.
- Store managers see their outlet’s reports, can process refunds and can approve discounts above a threshold.
- Head office sees everything, across every outlet, in one report.
Give each cashier their own login rather than sharing one per till. It costs nothing — OpenPOS charges no per-user fee — and it is the only way to answer “who gave that discount” three weeks later. Sessions are tracked per cashier, outlet and IP address, and a cashier can be logged out remotely without losing the open cart.
Closing the day across locations
Each register opens with a float, takes cash through the day, and closes with a count. The difference between the counted cash and the expected cash is the variance, and it belongs to that register on that day, at that outlet. Roll those up and you have a chain-level cash position without anyone emailing a photo of a till roll.
Do not let a manager close a register from head office. The count has to happen where the cash is.
What this costs
Worth stating plainly, because it is where hosted platforms hurt. Subscription POS products almost universally charge per register, per location, or both. Five tills across three stores on a $79-per-register plan is roughly $400 a month, forever, before you have sold anything.
OpenPOS is a one-time purchase for the site. Unlimited outlets, unlimited registers, unlimited cashiers. The marginal cost of the fourth store is a tablet and a printer.
Frequently asked questions
Can each outlet have its own receipt header?
Yes. Receipt templates can carry the outlet’s name, address and tax number, so the Manchester shop does not hand out receipts with the London address on them.
Does each store need its own internet connection?
Each store needs to reach your WordPress site. Offline mode covers short outages, but a store with no connection for a week is a store you cannot report on.
Can I transfer stock between stores from the POS?
Yes — stock transfers and adjustments are part of the outlet and warehouse management, with a live stock overview across locations.
How many outlets is too many?
The limit is your hosting, not the plugin. Past roughly a dozen busy stores, invest in a properly sized server and a database that has been indexed by someone who enjoys that sort of thing.
Open the live demo (admin / admin123) and switch outlets to see how it fits together, or compare the field against the best POS plugins for WooCommerce before you commit.