I now have comprehensive, verified research. Let me write the fully optimized, fact-checked blog post.
Originally published at ZOHO Restaurant POS/books — expanded, fact-checked, and optimized for publication.
If you run a restaurant in India and you're evaluating whether Zoho POS can replace your current billing system — while keeping Zoho Books for accounting and syncing your menu to Zomato — you’ve probably already hit a wall.
The wall has a name: variant-level BOM assignment.
You want a Margherita pizza in Small, Medium, and Large. Each size uses different quantities of dough, sauce, and cheese. You want each size to have its own recipe (Bill of Materials) so that when a Medium pizza sells on Zomato, the right amount of mozzarella is deducted from stock — and that cost flows cleanly into Zoho Books.
Sounds reasonable. Here’s the problem: Zoho Inventory's composite item system does not natively support assigning different BOMs to individual variants of the same parent product. This is a confirmed, documented limitation as of 2026 — and it has real consequences for how you architect your restaurant tech stack.
This guide breaks down exactly what’s possible, what isn’t, and the three strategic approaches that solve the problem — ranked by practicality, cost, and long-term scalability.
Before diving into solutions, let’s map the full picture of what a modern Indian restaurant tech stack needs to do:
| Component | Current State | Target State |
|---|---|---|
| Billing/POS | Petpooja | Evaluating Zoho POS |
| Accounting | Zoho Books | Zoho Books (retain) |
| Menu Management | Manual / Petpooja | Zoho POS + Zomato |
| Recipe / BOM | None configured | Composite Items needed |
| Variant-level BOMs | Not possible | Required per size |
| Zomato Menu Hierarchy | Not integrated | 5-level structure needed |
The core tension is this: Zoho POS and Zoho Inventory are excellent tools, but they weren’t built from the ground up as restaurant-first platforms. That creates specific gaps you need to engineer around — or decide whether a purpose-built restaurant POS like Petpooja already solves them better.
Zoho Inventory supports composite items — products assembled from multiple component items, each with defined quantities. This is the closest thing to a recipe/BOM system in the Zoho ecosystem.
However, based on official Zoho documentation and confirmed through current product research:
Zoho Inventory does not support assigning different composite item BOMs to individual variants (S/M/L) of the same parent product.
When you create a "Pizza Margherita" with Small, Medium, and Large variants, you cannot attach three separate recipes — one per size. The composite item structure belongs to the product, not the variant. This means:
This isn’t a configuration issue. It’s a product architecture limitation that requires a deliberate workaround.
⚠️ Additional limitations to be aware of: Zoho Inventory’s composite items also lack native batch-yield modeling (e.g., one sauce batch yielding 40 portions), recipe versioning, automatic wastage/spoilage accounting, and modifier-aware ingredient deduction. For restaurants doing periodic stock-takes rather than real-time tracking, these gaps may be acceptable. For high-volume operations, they’re significant.
Zomato's menu structure operates across multiple levels that don’t map one-to-one with how Zoho POS organizes items:
Level 1: Category → Pizza, Pasta, Burgers
Level 2: Veg/Non-Veg → Food Type attribute (NOT a category level)
Level 3: Specific Item → Margherita, Pepperoni, BBQ Chicken
Level 4: Size Variant → Small / Medium / Large
Level 5: Add-ons/Extras → Extra Cheese, Thin Crust, Jalapeños
Critical clarification: Zomato handles Veg/Non-Veg as a food type attribute set at the item level (green dot = Veg, red dot = Non-Veg) — not as a menu category. This is a common misconfiguration. Zomato natively supports two levels of category nesting (Category → Sub-category), with variants and add-ons handled separately.
Here’s something the original discussion glosses over: there is no confirmed, native, general-purpose Zomato integration built into Zoho POS comparable to what dedicated restaurant POS platforms offer.
Zoho POS does list integrations on its website, but a direct Zomato order-sync connector — covering automatic menu publishing, order ingestion, variant mapping, modifier handling, and real-time stock deduction — is not currently documented as a standard feature. If you’re planning your stack around this assumption, verify it directly with Zoho support before committing.
This matters enormously for your architecture decision.
Core concept: Treat each size variant as an independent product rather than a variant of one product. This gives each SKU its own composite item (BOM), enabling accurate ingredient deduction per size.
Instead of one "Pizza Margherita" with three variants sharing a BOM, you create three distinct composite items:
| SKU | Item Name | Selling Price |
|---|---|---|
| MRG-SM | Margherita Pizza – Small | ₹199 |
| MRG-MD | Margherita Pizza – Medium | ₹299 |
| MRG-LG | Margherita Pizza – Large | ₹399 |
Each has its own component list with accurate quantities.
Navigate to Zoho Inventory → Items → New Item and create each ingredient as a tracked inventory item:
| Item Name | Unit | Track Stock |
|---|---|---|
| Pizza Dough Base | grams | Yes |
| Tomato Sauce | ml | Yes |
| Mozzarella Cheese | grams | Yes |
| Basil Leaves | grams | Yes |
Set your cost per unit accurately — this feeds directly into COGS calculations in Zoho Books.
Navigate to Zoho Inventory → Items → New Item → Composite Item
Margherita Pizza – Small (MRG-SM) | ₹199
Margherita Pizza – Medium (MRG-MD) | ₹299
Margherita Pizza – Large (MRG-LG) | ₹399
Zoho Inventory will auto-calculate the cost of each composite item based on component costs — this rolls up cleanly to Zoho Books for COGS reporting.
Navigate to Zoho POS → Item Management → Item Groups
Create a display group called "Margherita Pizza" that surfaces all three SKUs together on the POS screen. Staff see one pizza, three size buttons — clean and intuitive.
In your Zomato Restaurant Partner Dashboard → Menu:
Category: Pizza
└── Sub-category: Veg Pizzas
└── Item: Margherita Pizza [Food Type: Veg ●]
├── Variant Group: "Choose Size"
│ ├── Small → MRG-SM (₹199)
│ ├── Medium → MRG-MD (₹299)
│ └── Large → MRG-LG (₹399)
└── Add-on Group: "Extra Toppings"
├── Extra Cheese (+₹40)
├── Jalapeños (+₹20)
└── Olives (+₹20)
Note: The Zomato-to-Zoho POS sync for this mapping will likely require middleware (see Approach C). Confirm the exact integration mechanism with your Zoho account manager before assuming automatic sync.
| What You Gain | What You Give Up |
|---|---|
| Full BOM accuracy per variant | SKU proliferation (10 pizzas × 3 sizes = 30 SKUs minimum) |
| Clean inventory deduction | Menu updates require editing multiple items |
| Reliable COGS in Zoho Books | Reporting requires filtering by naming convention |
| Zomato variant compatibility | Higher initial setup time |
Naming convention tip: Use a consistent format like [ITEM_CODE]-[SIZE] (e.g., MRG-SM, MRG-MD, MRG-LG). This makes bulk filtering and reporting in Zoho Books and Zoho Analytics significantly easier.
Core concept: Use a single base item with Zoho POS modifiers for size selection. Manage recipe cost variance through modifier cost mapping rather than separate BOMs.
You create one "Margherita Pizza" item at the base (Small) price of ₹199, then attach a required modifier group for size:
Modifier Group: "Pizza Size" (Single Select, Required)
| Modifier | Price Adjustment | Notes |
|---|---|---|
| Small | ₹0 (base) | Base BOM applies |
| Medium | +₹100 | No separate BOM |
| Large | +₹200 | No separate BOM |
Modifier Group: "Extra Toppings" (Multi-Select, Optional)
| Modifier | Price | Ingredient Impact |
|---|---|---|
| Extra Cheese | +₹40 | ~30g Mozzarella |
| Jalapeños | +₹20 | ~15g Jalapeños |
| Olives | +₹20 | ~10g Olives |
Zoho Inventory composite items do not automatically adjust BOM quantities based on modifier selections. When a customer orders a Large pizza, the system deducts Small-pizza ingredient quantities — because that’s what the single composite item specifies.
This approach works acceptably when:
It breaks down when:
This is the architecture that solves everything cleanly — but it requires more investment upfront.
CUSTOMER TOUCHPOINTS
Zomato App Dine-in POS
│ │
▼ ▼
MIDDLEWARE LAYER
(Petpooja / Make.com / n8n)
• Handles 5-level menu hierarchy
• Syncs variants with BOM mapping
• Routes orders to Zoho ecosystem
│
┌────┴────┐
▼ ▼
Zoho Zoho
Inventory Books
• Raw • Revenue
materials posting
• Stock • COGS
levels • P&L
Option 1: Petpooja — You’re Already Paying for This
This is the most important insight in this entire guide. If you’re currently using Petpooja, you may already have the solution:
| Capability | Petpooja Status |
|---|---|
| Recipe/BOM management | ✅ Confirmed (verify variant-level support with your account) |
| Zomato integration | ✅ Official partner integration |
| Swiggy integration | ✅ Confirmed |
| Zoho Books integration | ✅ Listed as supported integration |
| 5-level menu hierarchy | ✅ Designed for aggregator compatibility |
Petpooja users on G2 specifically note: "Inventory management is seamless and it gives integration with Zoho Books as well." The platform is purpose-built for exactly this use case.
Before migrating to Zoho POS, audit whether Petpooja already solves your BOM + Zomato + Zoho Books requirements. You may be solving a problem you don’t actually have.
Important caveats to verify with Petpooja directly:
Option 2: Make.com as Middleware
Make.com has an official Zoho Inventory connector and can serve as the integration layer between Petpooja (or a Zomato webhook) and your Zoho ecosystem. A typical workflow:
Make is a strong low-code choice for this, especially if your team doesn’t have deep development resources.
Option 3: n8n for Maximum Control
n8n is better suited when you need custom tax logic, self-hosted data residency, complex outlet-specific routing, or high-volume idempotency controls. It requires more technical ownership but gives you complete flexibility over the integration logic.
Option 4: Zoho Flow
Zoho Flow keeps everything inside the Zoho ecosystem and may be appropriate if Petpooja or your aggregator middleware exposes webhooks. Check the Zoho Flow app directory for available connectors before building custom HTTP integrations.
This is where most restaurant operators make mistakes. Here’s exactly how each level maps across systems: