Product Categories
Product categories help you organize your items in a structured way so that everything is easy to find, manage, and report on. When done correctly, they also ensure that important configurations—like taxes, inventory rules, costing methods, and tracking—are applied consistently across products.
By the end of this guide, you'll be able to:
- Organize products logically into categories and subcategories
- Maintain clean and consistent naming and coding
- Apply category-level settings that automatically flow to products
- Improve inventory accuracy and compliance
1. Introduction
Product categories are the backbone of any well-organized inventory system. They allow businesses to group similar products together, apply shared configurations, and generate meaningful reports. In Ultro ERP, product categories support multi-level hierarchies, meaning you can create parent-child relationships between categories to reflect your real-world product organization.
Whether you're managing garments, electronics, raw materials, or finished goods, a well-planned category structure will save time, reduce errors, and ensure consistency across your operations.
2. Concept: Multi-Level Categories
Think of product categories like folders inside folders. Instead of putting all products in one big list, we break them down into levels, starting broad and becoming more specific as we go deeper.
How Multi-Level Categories Work
A multi-level category structure allows you to create hierarchies where:
- Level 1 represents the broadest classification (e.g., "Electronics" or "Apparel")
- Level 2 narrows down the classification (e.g., "Computers" or "Men")
- Level 3 and beyond get increasingly specific (e.g., "Laptops" or "Shirts")
This layered approach makes it easy to locate products, apply bulk configurations, and generate reports at any level of the hierarchy.
Example 1: Garments
Apparel
├── Men
│ ├── Shirts
│ ├── T-Shirts
│ └── Trousers
├── Women
│ ├── Kurtis
│ ├── Tops
│ └── Jeans
└── Kids
├── Boys Wear
└── Girls Wear
Example Product Categorization:
If you have a product like a "Men's Formal Shirt", it would fall under:
Apparel → Men → Shirts
Example 2: Electronics
Electronics
├── Mobiles
│ ├── Smartphones
│ └── Feature Phones
├── Computers
│ ├── Laptops
│ ├── Desktops
│ └── Accessories
└── Home Appliances
├── Refrigerators
└── Washing Machines
Example Product Categorization:
A product like "Dell Inspiron Laptop" would be categorized as:
Electronics → Computers → Laptops
Simple Way to Remember
- Start broad (Electronics / Apparel)
- Then narrow down (Computers / Men)
- Then go specific (Laptops / Shirts)
This layered approach is what we call a multi-level category structure.
3. Key UI Fields Mapping
The following table maps the user interface fields to their corresponding model fields in the system:
| UI Field | Model Field | Description | Example |
|---|---|---|---|
| Complete Name | Name | Full hierarchical path of the category | Electronics\Computers\Laptops |
| Name | ShortName | Current category name (leaf level) | Laptops |
| Code | CategoryCode | Unique short code for identification | LP |
| Parent Category | ParentId | Reference to the parent category | Computers |
Understanding Complete Name vs Name:
- Complete Name shows the full path from root to the current category, separated by backslashes. This is automatically generated by the system based on the parent-child relationships.
- Name (ShortName) is simply the name of the current category without any parent information.
4. Step-by-Step Process
This section walks you through creating a complete category hierarchy from scratch.
Step 1: Create Root Category (Level 1)
The root category is the topmost level in your hierarchy. It has no parent.
- Navigate to: Inventory → Configuration → Product Categories
- Click Create
- Enter the following details:
- Name (ShortName): Electronics
- Code: ELEC
- Parent Category: Leave blank (this is a root category)
- Click Save
Result:
- Complete Name =
Electronics
Step 2: Create Second-Level Category
The second-level category is a child of the root category.
- Click Create
- Enter the following details:
- Name: Computers
- Code: COMP
- Parent Category: Electronics
- Click Save
Result:
- Complete Name =
Electronics\Computers
Step 3: Create Third-Level Category
The third-level category is a child of the second-level category.
- Click Create
- Enter the following details:
- Name: Laptops
- Code: LP
- Parent Category: Computers
- Click Save
Result:
- Complete Name =
Electronics\Computers\Laptops
Repeat for Other Branches
You can continue creating categories for other branches of your hierarchy. Here's an example for apparel:
| Level | Name | Parent |
|---|---|---|
| 1 | Apparel | — |
| 2 | Men | Apparel |
| 3 | Shirts | Men |
Final Path: Apparel\Men\Shirts
5. Category Hierarchy Logic
Understanding how the system manages category hierarchies is important for maintaining data integrity.
Key Concepts
- ParentId defines the hierarchy by linking a category to its parent
- ParentPath is automatically maintained by the system and stores the full lineage of parent IDs
- SubCategories holds references to all child nodes under a category
- Changes in parent affect all descendants — if you move a category to a different parent, all its children and their paths will be updated accordingly
Important Considerations
When you modify a parent category:
- All child categories will have their Complete Name updated
- Product assignments remain intact but will reflect the new hierarchy
- Reports and filters will show products under the new path
6. Category-Level Configurations
One of the most powerful features of product categories is the ability to set configurations at the category level. These settings automatically apply to all products within that category unless explicitly overridden at the product level.
6.1 Inventory and Tracking
These settings control how products in the category are tracked in inventory.
| Field | Description |
|---|---|
| InventoryTraceability | Defines the tracking type: None, Batch, or Serial |
| SerialNoTypeCount | Number of serial number fields available for tracking |
| BatchNoTypeCount | Number of batch number fields available for tracking |
| Serial Labels | Custom labels for serial tracking fields (e.g., IMEI, Serial No) |
| Batch Labels | Custom labels for batch tracking fields (e.g., Lot No, Batch ID) |
When to Use:
- Use Serial tracking for high-value items where each unit must be individually tracked (e.g., electronics, machinery)
- Use Batch tracking for items produced or received in batches (e.g., pharmaceuticals, food products)
- Use None for low-value consumables where individual tracking is not required
6.2 Expiry and Shelf Life
These settings are critical for products with limited shelf life.
| Field | Description |
|---|---|
| UseExpirationDate | Enables expiry date tracking for products in this category |
| ExpirationDays | Default shelf life in days from manufacturing/receipt date |
| ExpiryAlertDays | Number of days before expiry to trigger an alert |
| ProductRemovalDays | Number of days before expiry when the product should be removed from available stock |
Example Configuration: For a food products category:
- ExpirationDays: 180 (6 months shelf life)
- ExpiryAlertDays: 30 (alert 1 month before expiry)
- ProductRemovalDays: 7 (remove from sale 1 week before expiry)
6.3 Stock Behavior
These settings control how stock is managed and reserved.
| Field | Description |
|---|---|
| AllowNegativeStock | When enabled, allows stock to go below zero (useful for back-orders) |
| PackagingReserveMethod | Defines the logic for reserving packaging materials |
| RemovalStrategyId | Determines the order in which stock is consumed: FIFO or LIFO |
Understanding Removal Strategies:
- FIFO (First In, First Out): Oldest stock is dispatched first. Recommended for perishable goods and most standard inventory.
- LIFO (Last In, First Out): Latest stock is dispatched first. Used in specific scenarios like bulk commodities.
6.4 Costing
The costing method determines how inventory value is calculated.
| Field | Description |
|---|---|
| StockCostingMethod | The method used to calculate inventory cost: FIFO, Average, or Standard |
Costing Methods Explained:
- FIFO: Cost is based on the oldest purchase price in stock
- Average: Cost is calculated as a weighted average of all purchases
- Standard: Cost is a fixed predetermined value, with variances tracked separately
6.5 Tolerance Settings
Tolerance settings allow for acceptable variances in quantities during receiving and dispatch.
| Field | Description |
|---|---|
| PurchaseTolerance | Allowed percentage variance when receiving goods (e.g., 5% means you can receive 95-105 units for an order of 100) |
| SaleTolerance | Allowed percentage variance when dispatching goods |
Use Case: For bulk commodities like grains or chemicals where exact quantities are difficult to measure, a tolerance of 2-5% is common.
6.6 Accounting Integration
These settings link the category to your chart of accounts for automatic accounting entries.
| Field | Description |
|---|---|
| SaleTax | Default sales tax rate or tax group applied to products in this category |
| PurchaseTax | Default purchase tax rate or tax group applied when purchasing products |
| IncomeAccount | The revenue account credited when products are sold |
| ExpenseAccount | The expense account debited when products are consumed or sold (COGS) |
Best Practice: Set accounting rules at the highest logical category level. For example, set the income account for "Finished Goods" at Level 1, and it will automatically apply to all products underneath.
6.7 Product Coding Automation
These settings enable automatic generation of product codes based on the category.
| Field | Description |
|---|---|
| ProductCodePrefix | Prefix added to auto-generated product codes |
| NumberSize | Length of the numeric portion of the code |
| Step | Increment step for the sequence (usually 1) |
| LastNumber | The last number used in the sequence (system-maintained) |
Example: With the following configuration:
- Prefix: ELEC
- NumberSize: 4
- Step: 1
Generated codes would be: ELEC0001, ELEC0002, ELEC0003, etc.
6.8 Serial and Batch Numbering
These settings control automatic generation of serial and batch numbers.
| Field | Description |
|---|---|
| LastSerBatchNumber | The last serial/batch number used (system-maintained) |
| SerBatchPrefix | Prefix for auto-generated serial/batch numbers |
| ManufSerBatchBasedOn | Determines whether numbering is based on Category or Product |
6.9 Quality Control
These settings determine which quality control checkpoints are applicable for products in the category.
| Field | Description |
|---|---|
| IqcApplicable | Incoming Quality Control — inspection when goods are received |
| OqcApplicable | Outgoing Quality Control — inspection before goods are dispatched |
| LqcApplicable | Line Quality Control — inspection during manufacturing process |
When to Enable:
- IQC: Enable for raw materials and components that need inspection upon receipt
- OQC: Enable for finished goods that must be inspected before shipping to customers
- LQC: Enable for manufactured products that require in-process quality checks
6.10 Additional Features
| Field | Description |
|---|---|
| HsnCode | HSN/SAC code for GST classification (applicable in India) |
| SpecificationSet | Links a set of specifications/attributes to all products in this category |
| AttachmentId | Reference to documents, images, or other attachments related to the category |
7. Inheritance Behavior
One of the key advantages of hierarchical categories is inheritance. Settings configured at a parent level automatically flow down to child categories and products.
What Gets Inherited
Products automatically inherit the following from their assigned category:
- Tax settings (Sales Tax, Purchase Tax)
- Inventory tracking rules (Serial/Batch tracking)
- Costing method
- Expiry rules and shelf life settings
- Quality control requirements
- Accounting integration settings
Inheritance Rules
- Child categories inherit from parent categories unless the setting is explicitly overridden at the child level
- Products inherit from their assigned category unless the setting is explicitly overridden at the product level
- Overrides are specific — if you override one setting, other settings continue to be inherited
Example
Consider this hierarchy:
Electronics (FIFO costing, Serial tracking)
└── Computers (inherits FIFO, inherits Serial)
└── Laptops (inherits FIFO, overrides to Batch tracking)
A product assigned to "Laptops" would have:
- FIFO costing (inherited from Electronics)
- Batch tracking (overridden at Laptops level)
8. Best Practices
Following these best practices will help you maintain a clean and efficient category structure.
Naming Convention
- Keep ShortName concise: Use clear, short names that are easy to understand (e.g., "Laptops" not "Laptop Computers and Notebooks")
- Use meaningful CategoryCode: Codes should be short but descriptive (e.g., "LP" for Laptops, "ELEC" for Electronics)
- Be consistent: Follow the same naming pattern across all categories
Structure Planning
- Avoid deep unnecessary nesting: More levels mean more complexity. Only create a new level when it adds value.
- Keep maximum 3-5 levels: Most businesses can organize their products effectively within 3-5 levels. Going deeper rarely adds benefit.
- Plan before creating: Sketch out your category structure on paper before implementing it in the system.
Configuration Placement
- Apply settings at the highest logical level: For example, if all electronics need serial tracking, configure it at the "Electronics" level rather than at each sub-category.
- Use inheritance wisely: Let child categories inherit settings from parents whenever possible to reduce maintenance overhead.
- Override only when necessary: Only override inherited settings when there's a genuine business need.
Avoid Frequent Changes
Changing category structure after products are assigned can have significant impacts:
- Product classification: Products may appear in unexpected places in reports
- Reporting: Historical reports may show inconsistencies
- Stock logic: Removal strategies and tracking may be affected
Recommendation: Plan your category structure carefully upfront and avoid major restructuring once products are assigned.
9. Common Mistakes
Avoid these common mistakes when setting up product categories:
| Mistake | Impact |
|---|---|
| Incorrect parent selection | Products appear in wrong hierarchy, affecting navigation and reports |
| Missing category codes | Reporting inconsistency, difficulty in identifying categories in exports |
| Over-configuring at lower levels | Redundancy and maintenance overhead; harder to make bulk changes |
| Not using expiry settings for perishable goods | Inventory loss due to untracked expiration, compliance issues |
| Creating too many levels | Unnecessary complexity, harder for users to navigate and assign products |
| Inconsistent naming | Confusion for users, poor search results |
| Not planning inheritance | Duplicate configuration efforts, inconsistent settings across products |
10. Summary Workflow
Follow this workflow to set up a complete category structure:
- Plan your hierarchy: Sketch out the levels and categories you need based on your business requirements
- Create root categories: Start with Level 1 categories (no parent)
- Create child categories: Add Level 2 categories with appropriate parent assignments
- Create sub-child categories: Continue adding levels as needed (recommended max 3-5 levels)
- Configure category-level settings: Apply tracking, costing, tax, and other configurations at the appropriate level
- Assign products to final-level categories: Products should generally be assigned to the most specific (leaf) category
11. Example: End-to-End Setup
This example walks through a complete setup scenario.
Step 1: Create the Category Hierarchy
Create Level 1:
- Name: Electronics
- Code: ELEC
- Parent: (none)
Create Level 2:
- Name: Computers
- Code: COMP
- Parent: Electronics
Create Level 3:
- Name: Laptops
- Code: LP
- Parent: Computers
Step 2: Configure Category Settings
At the "Electronics" level, configure:
- InventoryTraceability: Serial
- StockCostingMethod: FIFO
- IqcApplicable: Yes
- SaleTax: GST 18%
These settings will be inherited by "Computers" and "Laptops" automatically.
Step 3: Assign a Product
Create a new product:
- Product Name: Dell Inspiron
- Category: Electronics\Computers\Laptops
Result
The product "Dell Inspiron" automatically inherits:
- FIFO costing method
- Serial tracking
- Incoming QC requirement
- 18% GST on sales
No additional configuration is needed at the product level unless you want to override any of these settings.
12. How It Works with Groups and Classification
| Concept | Purpose | Example |
|---|---|---|
| Categories | Structural hierarchy | Electronics → Computers → Laptops |
| Groups | Cross-category bundling | "Summer Collection", "Fast Moving" |
| Classification | Filtering dimension | A Class, Outsourced |
Together, these three concepts let you organize products structurally (categories), bundle them across categories (groups), and filter them by business attributes (classification) for better product management.

