GST, VAT & Tax in Plain English: How Meztezz Handles It
Tax is the part of running a restaurant most owners would rather not think about — until a bill prints the wrong number, an aggregator’s reconciliation doesn’t match, or a GST officer asks why your CGST and SGST don’t tally to the paisa. The good news: most of that pain comes from a handful of settings that you only need to get right once, on day one. The rest is just Meztezz doing the math correctly behind the scenes.
This post explains every tax-related screen, label and toggle inside Meztezz in plain English: what each one is, why a restaurant owner cares, where to find it, and how to set it. If you’re still in the setup phase, read it alongside Setting Up Meztezz After Install — the two posts overlap on purpose, because the Masters setup is the first place these decisions get made.
💡 Who this is for. A working owner who has never set up a POS before and wants to understand the why behind each tax field — not a tax consultant. Tax law is mentioned only where it changes what the app does. When in doubt about your own GST treatment, your CA’s word beats this blog’s.
The Tax Map at a Glance
There are roughly five clusters of tax-related settings in Meztezz. They sit in three different places, and they all feed into one thing: the tax line that prints on a bill.
| Cluster | What you’re setting | Where in the app |
|---|---|---|
| 1. Regime | The tax system — India GST, Simple VAT, or US Sales Tax | Settings → Billing & Tax |
| 2. Pricing model | Tax-inclusive vs. tax-exclusive menu prices | Settings → Billing & Tax |
| 3. Restaurant identity | GSTIN, FSSAI, state code, SAC code | Settings → Profile |
| 4. Per-item tax | Tax rate per menu item, HSN code, alcohol flag | More → Menu Management → Menu Items |
| 5. Channel rules | Aggregator orders, channel pricing | Settings → Aggregators |
If you read top-to-bottom and configure as you go, you’ll be done in under an hour and your bills will be tax-correct from the first order.
1. Pick Your Tax System — Settings → Billing & Tax
This is the single most important tax setting in Meztezz. Everything else — the columns on the bill, the maths behind the totals, the report layout — branches off it.
Open Settings → Billing & Tax. The first dropdown is Tax System with three options:
- India GST (default)
- Simple VAT
- US Sales Tax
Pick one. Then save. Switching it later means historical bills stay on the old system (which is correct) but new bills jump to the new one — so don’t flip it casually mid-trade.
1.1 India GST — the default
If your restaurant is in India, this is almost certainly the right choice.
What it does: Splits the tax on a bill into CGST and SGST — two halves of the same GST rate, one for the central government, one for your state. A 5% GST tax of Rs. 50 prints as CGST Rs. 25 + SGST Rs. 25. A separate VAT line appears for alcohol items, since liquor is taxed by the state, not under GST. (More on alcohol in §5.)
Why the two halves? Indian GST law requires the split on every tax invoice. Meztezz uses what’s called the residual rounding method — it rounds CGST first, then sets SGST to whatever’s left of the total — so the two halves always sum exactly to the GST line, even when 50/50 would otherwise produce a 1-paisa drift. Your bills will never show CGST + SGST = total - 0.01.
Bills look like this:
Subtotal Rs. 500.00
Service Charge Rs. 25.00
Packaging Rs. 10.00
CGST Rs. 13.38
SGST Rs. 13.37
VAT (Liquor) Rs. 30.00
Round Off Rs. 0.25
Total Rs. 592.00
1.2 Simple VAT — single-rate countries
What it does: Bills carry one VAT line at a single rate — no two-halves split, no state-level alcohol VAT. Suitable for jurisdictions with a single VAT (UAE, Singapore, much of Europe at the merchant level).
The one field to set: the VAT Rate (%). Whatever you put here is the rate on every menu item that doesn’t have its own override.
1.3 US Sales Tax — multi-jurisdiction
What it does: US sales tax isn’t one number — it’s a stack. Meztezz lets you set State, City, County and an optional Alcohol Additional Tax, all separately. They print as distinct lines on the bill and add up to the total tax.
Other things this regime turns on:
- Sales tax is always tax-exclusive — there’s no “tax-inclusive pricing” toggle (US menus quote pre-tax prices and the customer expects the tax line at the bottom). The pricing-model toggle below disappears for this regime.
- The EIN / Tax ID and Tax Region fields appear once US Sales Tax is selected — in both
Settings → Billing & TaxandSettings → Profile. Fill them in if you want them on the printed bill.
The rest of the post mostly talks about India GST, because that’s what most readers are configuring. The same principles apply to the other two regimes — just simpler.
2. Tax-Inclusive vs. Tax-Exclusive Pricing
The second toggle in Settings → Billing & Tax is Tax-Inclusive Pricing. It’s a single switch and it changes how the menu price you typed in is interpreted.
| Setting | What Rs. 200 on the menu means | When to use it |
|---|---|---|
| Off (tax-exclusive) | Rs. 200 is the base. Tax is added at the bill — final line is Rs. 200 + GST. | Most restaurants, especially fine-dine, B2B-heavy outlets, or anywhere customers expect to see the tax broken out. |
| On (tax-inclusive) | Rs. 200 is the final. The bill backs out the GST hidden inside — printed components still sum to Rs. 200. | QSR / cafes / casual diners where the customer should pay exactly the printed menu price. |
Why this matters more than it looks. It’s the single setting most likely to bite you if you skip it. A restaurant that flips this halfway through trading produces inconsistent bills — yesterday’s Rs. 200 was pre-tax, today’s Rs. 200 includes tax, and the same dish suddenly costs the customer a different amount. Pick a side on day one and stay there. The Masters guide says this too; it’s not a rule we made up for this post.
💡 Why this option doesn’t exist for US Sales Tax. American customers expect to see the tax added at checkout — a menu price that includes sales tax would actually confuse the bill. So the Tax-Inclusive switch is hidden when US Sales Tax is selected. India GST and Simple VAT both support both modes.
3. Restaurant Identity for Tax — Settings → Profile
A tax line is only legal if the bill also carries the merchant’s tax-registration details. These live one screen across from the tax settings, under Settings → Profile. Fill them in even if you think nobody reads them — they’re the bit that makes the bill a tax invoice rather than a piece of paper.
| Field | What it is | Why it’s on the bill |
|---|---|---|
| GST Number (GSTIN) | Your 15-character GSTIN, e.g. 27ABCDE1234F1Z5 | Prints the GSTIN: … line in the bill header. Leaving it blank just omits that one line — CGST/SGST are still computed and printed. Required for any B2B customer claiming input credit. |
| FSSAI License Number | Your 14-digit food safety licence | Legally required on every food bill in India. Prints in the bill footer. |
| State Code (Place of Supply) | The two-digit numeric code for your state (e.g. 27 for Maharashtra) | Used on the tax invoice header. Set this once. |
| SAC Code | Service Accounting Code (e.g. 9963 for restaurant services) | Prints on the tax invoice. Most restaurants use the same code site-wide. |
For Simple VAT and US Sales Tax, the regime-specific fields (VAT registration number, EIN / Tax ID, Tax Region) appear once you’ve picked the regime in §1 — these live in both Settings → Billing & Tax and here under Settings → Profile.
💡 No GSTIN? Leave it blank. Restaurants below the GST registration threshold or under the composition scheme often don’t issue tax invoices. Leaving the GSTIN blank in Meztezz simply omits the
GSTIN: …line from the bill header — it does not turn the tax line off. CGST and SGST are still computed and printed whenever the per-item tax rates produce a tax amount. If you don’t want any tax to print, the lever is the tax rate: set the rate to0%and no CGST/SGST appears, leaving a clean total.
4. Per-Item Tax: Rate, HSN, and the Alcohol Flag
Most of your menu uses the same GST rate (5% for non-AC restaurants, 5% with no input credit for AC restaurants and most modern formats, 18% for premium / star-rated, etc. — your CA will tell you which slab you’re in). For those items you don’t need to touch anything; the default rate flows through.
For items that are different, open the menu item dialog at More → Menu Management → Menu Items. Three tax-relevant fields live there:
4.1 Tax Rate (per item)
A percentage. Override only when this dish has a different GST slab from the rest of your menu — e.g. a 28% luxury slab for a specialty item, or a 0% slab for an exempted dish. Leave it untouched for everything else.
4.2 HSN Code (per item)
The HSN (Harmonized System of Nomenclature) code classifies what you’re selling for GST. For restaurant services, most outlets put the same HSN against every item (996331 for restaurant services is the common one), but some owners prefer to record the dish-level HSN for accurate compliance audits. Meztezz prints the HSN on each line of the tax invoice if you fill it in; if you leave it blank, nothing prints — both are acceptable to most CAs depending on how strictly your jurisdiction enforces it.
💡 HSN vs. SAC, in one line. SAC = your service code, set once at the restaurant level (§3). HSN = product/dish code, set per menu item. A standalone restaurant typically only needs the SAC. Outlets that sell packaged goods (a bakery selling boxed cakes for takeaway, say) usually use HSN as well.
4.3 The Alcohol Category Toggle
What makes Meztezz treat an item as alcohol isn’t the menu item itself or its kitchen station — it’s the Alcohol Category flag on the item’s category. Turn on Alcohol Category for your liquor category (More → Menu Management → Categories) and every item inside it — and inside any sub-category beneath it, because Meztezz walks the full category tree upward — gets the liquor treatment: state VAT instead of GST, and the dine-in-only restriction described next.
So the rule is: group your liquor under a category (or sub-categories) that has Alcohol Category switched on. The station an item routes to does not decide alcohol classification.
The bar station is still worth setting up separately — but as a KOT-routing best practice, not a tax one. Keeping the bar as its own station (see the Kitchen Stations section of Setting Up Meztezz After Install) sends drink tickets to the right printer and keeps the drink-recipe guard working. It does not flip on liquor VAT — only the Alcohol Category toggle does that.
5. Alcohol VAT — The Dual-Tax Case
This one trips up the most owners because alcohol in India is not part of GST at all. It’s taxed separately under your state’s VAT regime, at a rate the state government sets. So an order with one beer and one paneer tikka has two different tax pipelines running at once.
5.1 The State VAT Rate
Under Settings → Billing & Tax, with India GST selected, there’s a field called State VAT Rate (%) — only visible when the regime is India GST. Whatever you put here is the rate Meztezz applies to alcohol items.
Where to find your state’s rate: it’s published by your state excise / commercial-tax department. It varies meaningfully — Maharashtra, Karnataka, Tamil Nadu, Delhi, Goa each have their own — so this is a per-restaurant value, not something we ship a default for.
5.2 What “alcohol item” means inside Meztezz
An item is alcohol if its category has the Alcohol Category flag turned on — and Meztezz checks the whole category chain, so an item inside a sub-category of an alcohol category still counts. That single toggle is the definition, and it drives:
- A separate VAT (Liquor) line on the bill, distinct from CGST and SGST
- Automatic hiding of alcohol items from Takeaway and Delivery ordering (legal requirement in India — bar items can only be served on-premise)
- An aggregator rule: VAT on alcohol is not zeroed for aggregator orders, even though GST is on aggregator delivery/takeaway orders (see §6)
5.3 How a mixed bill prints
Subtotal Rs. 650.00 (Rs. 450 food + Rs. 200 liquor)
Discount Rs. -50.00
Service Charge Rs. 30.00
Packaging Rs. 0.00
CGST Rs. 10.00 (5% on food subtotal post-discount + charges)
SGST Rs. 10.00
VAT (Liquor) Rs. 30.00 (15% on Rs. 200 liquor)
Round Off Rs. 0.00
Total Rs. 680.00
Two things to notice:
- Discounts reduce the GST base, but charges don’t. Tax is calculated on
(food subtotal − discount) + service charge + packaging. This follows Section 15(3)(a) of the CGST Act. The discount line you applied at the bill reduces the tax Meztezz collects — that’s intentional, not a bug. - Service charge and packaging are charged once per bill, not split between food and liquor. The GST on those charges uses a weighted average rate based on your food items.
5.4 The “liquor-only order” edge case
What about a table that ordered nothing but two beers? There’s no food to draw a GST rate from for the service/packaging charges. The setting Default GST Rate on Packaging & Service Charge (Liquor-Only Orders) — also under Settings → Billing & Tax — handles exactly this. Most owners can leave it on the default; only touch it if your accountant explicitly recommends a different rate for liquor-only ancillary charges.
6. Aggregator Orders — Section 9(5) and Why GST Goes to Zero
If you take orders via Swiggy, Zomato or another e-commerce aggregator, the aggregator pays the GST to the government, not you. This is mandated by Section 9(5) of the CGST Act for restaurant services delivered via aggregators. The aggregator collects from the customer, remits the GST, and pays you the food value plus its commission terms.
What Meztezz does: when an order comes in tagged as an aggregator delivery or takeaway order, the CGST and SGST lines are zeroed on that bill — Section 9(5) makes the aggregator the deemed supplier for those channels. A dine-in order placed via an aggregator still carries GST the normal way, because Section 9(5) doesn’t apply to dine-in. Your reports separate aggregator revenue from direct revenue so reconciliation with the aggregator’s monthly statement is straightforward.
What stays unchanged:
- Liquor VAT is still charged. Section 9(5) covers GST, not state-level alcohol VAT — and aggregators don’t carry liquor anyway in most states, so this is theoretical for most outlets but the rule still applies if it ever comes up.
- Service charge and packaging still appear on the bill (you decide whether to charge them on aggregator orders via
Settings → Order Typestoggles). - Menu prices can differ on aggregators. Configure these under
Settings → Aggregators → Channel Pricing— most outlets price aggregator menus 20–25% higher to absorb the platform commission.
💡 Why your aggregator GST report shows zero. This isn’t a bug — it’s compliance working correctly. If a tax officer asks why aggregator orders show no GST in your own books, the answer is “the aggregator is the deemed supplier under Sec 9(5) and remits the GST.” Meztezz’s aggregator report exists exactly to back that statement up.
7. Historical Safety — The Billing Snapshot
A subtle but important property of how Meztezz stores tax information: every saved order keeps a frozen copy of the tax settings that were live at the moment it was rung up. That includes the regime, the tax-inclusive flag, every GST rate that touched the bill, and the service-charge configuration.
Why this matters: if you change your GST rate on the 15th, every bill from the 14th still reports under the old rate when you pull a backdated report. If you switch from tax-exclusive to tax-inclusive (we warned you not to — but suppose you do), historical bills keep displaying the way they always did; only new bills change. You can re-print a year-old bill and it will be byte-identical to the one you printed that day.
The reverse also applies: you cannot retroactively “fix” tax on a saved bill by changing the settings. If a bill went out with the wrong GST rate, the fix is a credit note plus a fresh invoice, not editing the past. (See Refunds, Cancellations & Edits After Save for the mechanics.)
This is also why the End-of-Day post tells you to print the day’s Z-report before you change any tax setting overnight — once the new rate is live, your closing report is computed on it.
8. Where Tax Shows Up Elsewhere
A few other places in Meztezz where the tax settings above quietly drive behaviour. None of them are settings you configure — they’re features that use the settings above.
Settings → Billing & Tax → Require GSTIN Before Payment— toggle to block payment until a customer GSTIN is captured. Useful if you do B2B-heavy lunches and don’t want cashiers to forget the GSTIN entry.- The bill display order is fixed in India: Subtotal → Discount → Service Charge → Packaging → CGST → SGST → VAT (Liquor) → Loyalty Redemption → Round Off → Total. You can’t reshuffle it — the order is part of what makes a tax invoice valid.
- Round Off rounds the grand total to the nearest rupee in India (the convention). The round-off amount itself shows as a small
+or-line on the bill. Non-India regimes don’t round off — the total is exact to two decimals. More → Reports → Tax / GSTreport uses every snapshot value to give you period-wise GST collected, split by rate, by outlet, by channel. The numbers it shows match what you’d file in your GSTR-1 / GSTR-3B, so it’s the report your CA will ask for.- The cloud dashboard at
app.meztezz.comrolls up the same tax data across all your outlets — useful if you run a chain and want one consolidated view (see The Cloud Dashboard Tour).
9. What Meztezz Doesn’t Do Yet
Honest list of things that aren’t in the product today. If your accountant asks for any of these, you’ll need to handle them outside Meztezz.
- IGST / interstate supply. Restaurant services are intra-state by their nature (the supply happens where the meal is consumed), so the India GST flow is CGST + SGST only. If you have a takeaway business that ships across state lines, you’ll need a separate setup — talk to us.
- e-Invoicing / IRN generation. Meztezz prints GST-compliant invoices but does not yet integrate with the Government’s e-Invoice portal to generate IRNs for B2B invoices above the threshold. If you cross the e-invoice threshold, this is currently a manual step.
- Composition Scheme. Meztezz assumes the regular GST scheme. Composition scheme outlets (where you pay a flat 5% on turnover and don’t charge GST to customers) can run Meztezz with the GSTIN field blank, but there’s no dedicated “composition mode” toggle.
- Reverse Charge Mechanism. Not modelled.
- Editing the bill display order. As mentioned in §8 — the order is fixed for India by design.
- Per-outlet tax regime in a chain. All outlets in an organisation share one tax regime today. If you ever need (say) one outlet on India GST and another on Simple VAT, the cloud dashboard does store regime per outlet, but the terminal-side flow assumes one.
If any of these are blockers for you, email us at the address below — knowing which ones owners actually run into is how we decide what to build next.
10. A Five-Minute Tax Sanity Check
Before you start trading, run this sequence — it catches 95% of tax misconfigurations.
- Open
Settings → Profile. Confirm GSTIN, FSSAI, State Code and SAC Code are filled in. If you’re not GST-registered, GSTIN should be deliberately blank. - Open
Settings → Billing & Tax. Confirm:- Tax System matches your registration (India GST for most readers).
- Tax-Inclusive Pricing is set to whichever side you’ve decided on — and you’ll stick with it.
- State VAT Rate (%) is set if you serve alcohol.
- Service Charge and Packaging values match what you actually intend to charge.
- Open one menu item with a non-default GST rate (if any). Confirm the override is correct and the HSN field is filled in if your CA wants HSN on bills.
- Open a bar item. Confirm its category has Alcohol Category turned on (that’s what drives liquor VAT). Routing it to your bar station is good practice for KOTs, but it’s the category flag — not the station — that makes it alcohol.
- Ring up a tiny dummy bill with one food item and one bar item —
Rs. 100food,Rs. 100liquor. HitPay, print it, and check:- CGST and SGST are both present and equal (or differ by exactly 1 paisa due to residual rounding, which is correct).
- A separate VAT (Liquor) line is present for the bar item.
- The GSTIN, FSSAI and SAC print in the bill header / footer.
- Round Off behaves sensibly — usually a few paise.
- Void the dummy bill (Refunds & Cancellations) so it doesn’t pollute your day-one reports.
If anything is off, the fix is almost always under Settings → Billing & Tax or Settings → Profile. The Masters post and Settling Bills, Payments & Splits cover the surrounding flows.
Stuck? We’re Here to Help
Tax errors are uniquely stressful because they show up in someone else’s report. If a bill is printing the wrong rate, an aggregator’s reconciliation isn’t matching, GSTIN isn’t showing up where it should, or the VAT line is missing for liquor — drop us a line at bazimat@gmail.com or contact us. Tell us your regime, the specific bill or report, and what you expected vs. what you got. We’ll usually have you sorted in a single back-and-forth.
A tax invoice is a small piece of paper, but it carries a lot of legal weight. Half an hour of getting these settings right is the cheapest insurance your restaurant will ever buy.