Bar Sync with Plutaz ePOS in Meztezz
Liquor in an Indian restaurant lives in two worlds. One world is excise — Transport Passes, invoices from the State Excise Department, sealed bottles arriving at the store, retail sales over the counter. The other world is the bar — open bottles, 30 ml pegs, cocktail recipes, KOTs flying to the bartender. If these two worlds don’t talk to each other, somebody is typing the same bottle counts into two systems, and by the end of the month nobody trusts either number.
Bar Sync is the bridge. It connects Plutaz ePOS — our PWA that handles excise receipts and off-counter retail sales — to Meztezz — the restaurant and bar POS that handles everything from the first KOT to the final bill. When Plutaz transfers bottles to the bar, Meztezz picks them up automatically. No re-keying, no mismatches, one audit trail.
This post walks through why the split exists, what each system owns, and exactly how to set up and run Bar Sync.
At a Glance
| Part | What you’ll learn |
|---|---|
| 1. The Two Halves of Liquor Management | Why liquor needs two systems and what each one owns |
| 2. What Plutaz ePOS Handles | Excise receipts, off-counter retail sales, transfers to bar |
| 3. What Meztezz Handles | Bar inventory, open bottles, drink recipes, billing, wastage |
| 4. How Bar Sync Works — The Mental Model | The one-way flow from Plutaz to Meztezz, and why it’s incremental |
| 5. Setting Up the Connection | API URL, API key, storage location, test connection |
| 6. Mapping Items | Linking Plutaz items to Meztezz stock items — one by one or in bulk |
| 7. Running a Sync | What happens when you hit Sync Now |
| 8. Sync History & Audit Trail | Reading the log, drilling into transfers, the cloud dashboard view |
| 9. Tips for a Clean Setup | Practical advice before your first real sync |
Part 1 — The Two Halves of Liquor Management
Most restaurant software tries to squeeze excise compliance and bar operations into one screen. The result is usually a screen that does neither job well — bar staff trip over excise fields they don’t care about, and the person handling Transport Passes can’t find the retail numbers without scrolling past cocktail recipes.
Liquor management splits naturally into two halves:
| Half | What it covers | Who uses it |
|---|---|---|
| Excise & Retail | Receiving stock from the State Excise Department (Transport Pass & Invoice), storing sealed bottles, selling bottles over the counter to retail walk-in customers (Off Counter / Off Shop sales) | Store manager, retail counter staff |
| Bar & Restaurant | Opening sealed bottles, pouring drinks by the peg or cocktail, tracking open-bottle levels, billing dine-in guests, wastage, kitchen tickets, excise compliance reports | Bartender, waiter, cashier, restaurant manager |
Each half has its own rhythm, its own users, and its own compliance requirements. The only moment they overlap is the transfer — when sealed bottles move from the store to the bar. That transfer is where Bar Sync lives.
Part 2 — What Plutaz ePOS Handles
Plutaz ePOS is a PWA (Progressive Web App) built by the same team behind Meztezz. It runs in any modern browser — on a desktop at the retail counter, on a tablet in the storeroom, or on a phone if that’s what you have. No installation required.
Plutaz is the entry point for all liquor stock. Here’s what it owns:
- Receiving excise stock — When a Transport Pass and Invoice arrive from the State Excise Department, Plutaz records the receipt: brand, bottle size, quantity, and cost. This is the legal starting point for every bottle in your establishment.
- Off Counter / Off Shop retail sales — Walk-in customers buying sealed bottles to take home. Plutaz handles the billing for these sales. These bottles never touch the bar.
- Transfers to the Bar — When the bar needs stock, Plutaz records the transfer: which brands, how many bottles, what size. These transfer records are what Bar Sync picks up.
Think of Plutaz as the gatekeeper — every bottle enters through it, and it decides where each one goes: to the retail shelf, or to the bar.
Part 3 — What Meztezz Handles
Once bottles arrive at the bar, Meztezz takes over. This is the system your bartender, waiters, and cashier work with every day:
- Bar inventory — Sealed bottle counts and open bottle tracking (current ml remaining per bottle, who opened it, when).
- Drink recipes — Pegs, cocktails, mixers. Each recipe defines exactly how many ml of which liquor (and which mixer) go into a drink. When a drink is served, the exact ml is deducted from the open bottle.
- Orders, KOTs, and billing — Dine-in orders with alcohol follow special rules: alcohol is dine-in only, taxed under state VAT (not GST), and subject to a hard stock block — if the bar doesn’t have enough ml to pour the drink, the KOT is blocked until stock is replenished.
- Wastage and reconciliation — Spillage, breakage, complimentary pours, expired stock. All recorded, all requiring manager approval, all deducted from the right bottle.
- Excise compliance reports — The Excise Daily Stock Register that tracks opening inventory, receipts, sales, wastage, and closing inventory in Bulk Litres (BL) for state excise submission.
The gap is obvious: Meztezz tracks every ml that leaves a bottle, but it has no idea how many bottles arrived at the bar in the first place — unless someone types that in manually. Bar Sync fills that gap automatically.
For a deeper look at bar inventory, open bottles, drink recipes, and wastage, see Stock & Inventory in Practice.
Part 4 — How Bar Sync Works — The Mental Model
The flow is one-way and incremental:
- Plutaz records a transfer — store manager sends 10 bottles of Blenders Pride (750 ml) and 5 bottles of Absolut Vodka (1 L) to the bar. Plutaz saves this as a transfer with the brand, bottle size, quantity, and cost per bottle.
- Meztezz fetches the transfer — when you click Sync Now (or on a schedule), Meztezz calls the Plutaz API and asks: “What transfers have happened since the last one I saw?” This is cursor-based — Meztezz remembers the ID of the last transfer it processed, and only asks for newer ones.
- Items are mapped — each Plutaz item (e.g., “Blenders Pride 750ml”) is matched to a Meztezz stock item. You set this up once; after that, the mapping is remembered.
- Stock movements are created — for each item in the transfer, Meztezz creates a stock-in movement at the bar storage location. The bar inventory now shows those 10 bottles of Blenders Pride without anyone typing a number.
Why one-way? Plutaz is the legal source of truth for what entered the premises — it has the Transport Pass numbers. Meztezz is the operational source of truth for what happened at the bar — it has the pour records, the open-bottle trail, the wastage approvals. Neither system overwrites the other. Bar Sync only moves the transfer record from Plutaz into Meztezz; it never sends data back.
Why incremental? A busy bar might do two or three transfers a day. Fetching the full history every time would be slow and wasteful. The cursor means each sync only pulls what’s new — usually a handful of transfers at most.
Part 5 — Setting Up the Connection — More → Inventory → Bar → Bar Sync
Before your first sync, you need to tell Meztezz where Plutaz lives and how to authenticate. This takes about two minutes.
5.1 Open Bar Sync
On the terminal, go to More → Inventory → Bar → Bar Sync — open the More menu, choose Inventory, then the Bar submenu, then tap Bar Sync. This opens the Bar Sync screen, where you’ll see a collapsible Connection Configuration card at the top.
5.2 Configure the connection
Expand the Connection Configuration card and fill in three fields:
| Field | What to enter | Example |
|---|---|---|
| API URL | The Plutaz ePOS API endpoint for bar transfers — Plutaz gives you the exact URL (it points at the bar_transfers PHP endpoint). The URL must use HTTPS — plain http:// is only accepted for localhost/127.0.0.1; any other address must be https://. | https://bar.example.com/pwa/api/bar_transfers.php |
| API Key | The key provided by your Plutaz ePOS installation. This is encrypted before it’s stored on the terminal. | (paste from Plutaz settings) |
| Bar Storage Location | The Meztezz storage location where incoming bar stock should land. You should have already created a “Bar” location under More → Masters → Locations (see Stock & Inventory in Practice). | Bar or Main Bar |
5.3 Test the connection
Click Test Connection. This automatically saves your configuration and tests connectivity in one step. If the connection succeeds, you’ll see a green checkmark with a confirmation message.
💡 First-time connection with historical transfers. If this is a fresh setup and Plutaz already has transfer history (transfers that happened before you set up Bar Sync), the system will ask how you want to handle them. You get two choices:
- Skip all & start fresh (recommended) — best if this is a fresh install and you’ve already done an opening stock count in Meztezz. The cursor jumps past the existing transfers, so only future ones sync.
- Sync from a specific date — pick a cutoff date, and only transfers on or after that date will sync. Useful if you went live on Meztezz last month but Plutaz has two years of history.
Part 6 — Mapping Items
Plutaz and Meztezz each have their own item catalogue. Plutaz might call something “BLP 750” while Meztezz has it as “Blenders Pride 750ml”. Before a transfer can create stock movements, every Plutaz item needs to be linked to a Meztezz stock item.
6.1 The Pending Sync section
After a successful connection test (or first sync attempt), any Plutaz items that don’t have a mapping yet will appear in the Pending Sync section, under Unmapped Items. Each row shows the item name from Plutaz, its brand, and size in ml.
6.2 Manual mapping (one by one)
For each unmapped item, use the dropdown to pick the matching Meztezz stock item. This is the right approach when you already have most items set up in Meztezz and just need to link them.
6.3 Bulk creation (all at once)
If you’re starting fresh and none of the Plutaz items exist in Meztezz yet, bulk creation is faster:
Prerequisite: a unit with the symbol “bottles” must already exist under Settings → Units before you bulk-create. Bulk creation assigns this unit to each new stock item, and it will error out if no “bottles” unit is configured.
- Select the items you want to create — use the checkbox next to each item, or the “Select All” toggle at the top.
- Edit names if needed — click the name to rename it before creation. Plutaz might use abbreviations (“BLP 750”) that you’d rather spell out in Meztezz (“Blenders Pride 750ml”).
- Click Create Stock Items — this creates a Meztezz stock item for each selected item, sets its unit to “bottles”, assigns it to the bar storage location, and links the mapping automatically.
After mapping, items move from “Unmapped” to “Awaiting Sync” — they’ll be processed in the next sync.
6.4 Reviewing all mappings
Click View All Mappings to see every Plutaz-to-Meztezz item link. You can update a mapping here if you linked the wrong item, or if you’ve reorganised your Meztezz stock items.
Part 7 — Running a Sync
With the connection configured and items mapped, you’re ready to sync.
7.1 Sync Now
Click the Sync Now button in the Sync section. Meztezz calls the Plutaz API, fetches all transfers since the last sync, and processes them one by one:
- For each transfer, it looks up every item in the transfer against the mapping table.
- If all items are mapped, the transfer is processed: stock-in movements are created at the bar location for each item (brand, quantity, cost).
- If any item is unmapped, the entire transfer is skipped — it won’t be partially processed. The unmapped item appears in the Pending Sync section so you can map it, then retry.
7.2 Reading the result
After sync completes, you’ll see a summary:
- Transfers processed — how many Plutaz transfers were turned into Meztezz stock movements.
- Items processed — total number of item lines across all transfers.
- Errors — if any transfers failed (network issue, unmapped item, etc.), they’re listed with the reason.
If there were no new transfers since the last sync, you’ll see “No new transfers to sync” — this is normal and expected.
7.3 Rate limiting
To prevent accidental double-syncs, Bar Sync enforces a 60-second cooldown between syncs. If you click Sync Now within 60 seconds of the last sync, you’ll be asked to wait. This is a safety measure, not a restriction — in practice, you’ll rarely need to sync more than once or twice a day.
7.4 Retrying failed transfers
If a sync completed with errors (for example, a network timeout on one transfer), failed transfers are highlighted in the sync log. Click Retry Failed to reset the sync cursor to the earliest failed transfer — then click Sync Now again to re-process them.
Part 8 — Sync History & Audit Trail
8.1 Sync log on the terminal
The bottom of the Bar Sync screen shows the recent sync history — the last five sync operations, each showing:
- Transfer ID from Plutaz (e.g., Transfer #142)
- Status — green checkmark for completed, red X for failed
- Items processed / skipped — how many items were synced vs. skipped
- Timestamp — when the sync happened
Click any completed transfer to expand it and see the item-level detail: stock item name, the corresponding Plutaz item name, bottle size (ml), quantity, unit cost, and total value. This is your per-bottle audit trail — if the bar says “we only got 8 bottles of Absolut” but Plutaz says it sent 10, this table is where you check.
8.2 Cloud dashboard view
If your terminal is linked to the Meztezz cloud (see The Cloud Dashboard Tour), bar sync history is also visible on the Cloud Dashboard at app.meztezz.com. The owner can check the Liquor → Bar Sync tab under Reports to see transfer history across outlets without walking to the terminal. The cloud view is read-only — sync operations can only be triggered from the terminal.
Part 9 — Tips for a Clean Setup
A few things that will save you headaches down the road:
-
Create your bar storage location first. Before touching Bar Sync, make sure you have a “Bar” (or “Main Bar”) location set up in
More → Masters → Locations. All synced stock lands here. If you have multiple bars (ground-floor bar, rooftop bar), each needs its own location and its own Bar Sync configuration. -
Map all items before your first real sync. Do a test connection, let the unmapped items populate, and map or bulk-create all of them. Then sync. If you sync with unmapped items, those transfers are skipped and you’ll need to retry after mapping — not a disaster, but an extra step.
-
Keep naming consistent. If Plutaz calls it “BLP 750” and Meztezz calls it “Blenders Pride Whisky 750ml”, that’s fine — the mapping handles it. But if your team searches for stock items by name on the terminal, pick names they’ll recognise. The bulk-create step lets you rename before creating.
-
Set a daily sync rhythm. Bar Sync doesn’t run automatically — someone needs to click Sync Now. Most bars sync once in the morning (to pick up any transfers from the previous evening) and once before the evening shift starts. Build it into your opening checklist.
-
Check the sync log weekly. Glance at the last week’s sync history and look for failed transfers or unexpected skips. A failed transfer usually means a network hiccup or an unmapped item — both easy to fix, but only if you catch them.
-
Use the cloud dashboard for oversight. The owner doesn’t need to be at the terminal to check whether syncs are running. The Liquor → Bar Sync tab on the cloud dashboard shows the same history — flag it as part of your weekly review.
What Bar Sync Doesn’t Do
To set the right expectations:
- It doesn’t sync retail sales. Off Counter sales in Plutaz stay in Plutaz. Meztezz only sees what was transferred to the bar.
- It doesn’t send data back to Plutaz. Open-bottle levels, wastage, and pour records live in Meztezz. If you need to reconcile bar consumption against excise records, you’ll compare Meztezz’s Excise Daily Stock Register with Plutaz’s transfer history.
- It doesn’t run automatically. Sync is triggered manually from the terminal. Automated scheduling may come in a future update, but today it’s a deliberate action.
- It doesn’t create drink recipes. Bar Sync brings bottles into inventory. Setting up how those bottles become drinks (peg sizes, cocktail recipes, mixer ingredients) is a separate step in Meztezz’s menu management — see Stock & Inventory in Practice for the full walkthrough.
Wrapping Up
Bar Sync solves a simple but persistent problem: when excise stock and bar operations live in separate systems, the transfer between them is where numbers go wrong. By connecting Plutaz ePOS and Meztezz with a one-click sync, the bottles that Plutaz sends to the bar show up in Meztezz’s inventory automatically — with an audit trail on both sides.
Both systems are built by the same team, so the integration is tight: the API is purpose-built for this handoff, the mapping is flexible enough to handle naming differences, and the cursor-based sync means you’re never re-processing old data.
If any of this didn’t behave the way the guide describes — a connection that won’t test successfully, a mapping that doesn’t stick, a sync that keeps skipping the same transfer, or stock that shows up at the wrong location — drop us a line at bazimat@gmail.com or contact us. Tell us which Part you’re on and what you’re seeing; we’ll usually have you sorted in a single back-and-forth.