Chart of Accounts
The Chart of Accounts (CoA) is the organized list of every financial account in your business. It is the structural backbone of your accounting system — every journal entry, every ledger posting, and every financial report depends on the accounts defined here. A well-designed CoA makes reporting clean and auditing straightforward. A poorly designed one creates confusion that grows worse with every passing month.
This chapter explains how the Chart of Accounts works in Udyamo ERP Lite, how accounts are organized into types and hierarchies, and how to create and manage accounts for your manufacturing business.
What You Will Learn
- The purpose and structure of a Chart of Accounts
- The five account types and how they map to financial statements
- Account hierarchy using parent accounts
- Account codes and their role in organization
- Report groups and financial statement classification
- System-generated accounts and their protection
- How to set opening balances
- Step-by-step instructions for creating and managing accounts
Prerequisites
- Understanding of the five account types and double-entry bookkeeping (Chapter 31)
- Access to the Accounting module in Udyamo ERP Lite
What is a Chart of Accounts?
Think of the Chart of Accounts as the filing system for your financial data. Just as a factory organizes its warehouse into zones, racks, and bins, the CoA organizes financial transactions into categories that make sense for reporting and analysis.
Every business transaction in the ERP ultimately posts to one or more accounts in the CoA. When you sell finished goods, the system credits a revenue account. When you buy raw materials, it debits an asset or expense account. When you pay factory rent, it debits an expense account and credits the bank account. The CoA defines what these accounts are, how they are grouped, and where they appear on your financial statements.
Account Types
Every account in Udyamo ERP Lite belongs to one of five types, stored in the account_type field:
| Account Type | Financial Statement | Normal Balance | Purpose |
|---|---|---|---|
| Asset | Balance Sheet | Debit | Resources the business owns — cash, bank, receivables, inventory, machinery, land |
| Liability | Balance Sheet | Credit | Obligations the business owes — payables, loans, GST collected, salary payable |
| Equity | Balance Sheet | Credit | Owner's stake — capital, retained earnings, reserves |
| Income | Profit & Loss | Credit | Revenue earned — sales, job work income, interest received, scrap sales |
| Expense | Profit & Loss | Debit | Costs incurred — raw materials, wages, rent, electricity, depreciation |
Asset, liability, and equity accounts appear on the Balance Sheet. Income and expense accounts appear on the Profit & Loss statement. This classification is fundamental — it determines where every rupee shows up in your financial reports.
Account Hierarchy
Udyamo ERP Lite supports hierarchical accounts through the parent_id field. A parent account groups related child accounts, creating a tree structure that mirrors how you think about your finances.
For example, a manufacturing company might structure its expense accounts as follows:
Expenses (parent)
├── Manufacturing Expenses (parent)
│ ├── Raw Material Consumption
│ ├── Direct Labour
│ ├── Factory Rent
│ ├── Factory Electricity
│ └── Machine Maintenance
├── Administrative Expenses (parent)
│ ├── Office Rent
│ ├── Office Supplies
│ ├── Telephone & Internet
│ └── Professional Fees
└── Selling Expenses (parent)
├── Freight & Transportation
├── Sales Commission
└── Advertising
Parent accounts aggregate the balances of their children. The "Manufacturing Expenses" parent shows the total of all manufacturing-related costs, making it easy to see at a glance how much your factory operations cost during a period.
Tip: Design your hierarchy before you start creating accounts. Sketch it on paper or in a spreadsheet first. Restructuring the CoA after hundreds of transactions have been posted is difficult and error-prone.
Account Codes
Each account has a code field that provides a short alphanumeric identifier. Account codes serve two purposes: they establish a logical ordering, and they make data entry faster (you can search by code instead of typing the full account name).
A common coding convention for Indian manufacturing companies:
| Code Range | Account Type | Examples |
|---|---|---|
| 1000–1999 | Asset | 1010 Cash in Hand, 1020 HDFC Bank Current Account, 1100 Accounts Receivable |
| 2000–2999 | Liability | 2010 Accounts Payable, 2100 GST Payable, 2200 Salary Payable |
| 3000–3999 | Equity | 3010 Owner's Capital, 3020 Retained Earnings |
| 4000–4999 | Income | 4010 Sales Revenue — Finished Goods, 4020 Job Work Income, 4050 Scrap Sales |
| 5000–5999 | Expense | 5010 Raw Material Consumption, 5020 Direct Labour, 5100 Factory Rent |
Tip: Leave gaps between codes (1010, 1020, 1030 rather than 1001, 1002, 1003). This lets you insert new accounts later without disrupting the sequence.
Report Groups
The report_group field on each account controls where the account appears in financial reports. While the account type determines which statement (Balance Sheet or Profit & Loss) an account belongs to, the report group determines the specific section within that statement.
For example, assets might be classified into report groups such as:
- Current Assets — Cash, bank, receivables, inventory
- Fixed Assets — Land, building, machinery, vehicles
- Investments — Fixed deposits, mutual funds
Similarly, liabilities might be grouped as:
- Current Liabilities — Trade payables, GST payable, salary payable
- Long-term Liabilities — Term loans, debentures
These groupings align with the disclosure requirements of the Companies Act, 2013 (Schedule III) and make your financial statements audit-ready.
System Accounts
Some accounts in Udyamo ERP Lite are marked with the is_system flag set to true. These are created automatically when you set up the system and are used internally by the application for automatic postings:
- Accounts Receivable — debited when you create a sales invoice
- Accounts Payable — credited when you record a vendor bill
- GST Input Credit — debited when you record GST on purchases
- GST Output (Payable) — credited when you collect GST on sales
- Sales Revenue — credited for invoice revenue
- Cost of Goods Sold — debited when finished goods are sold
Warning: System accounts cannot be deleted and should not be renamed or reclassified. They are integral to the automatic posting logic. If a system account is deactivated or misconfigured, automatic journal entries from invoices, bills, and payments will fail.
Opening Balances
When you begin using Udyamo ERP Lite mid-year or transition from another system, you need to enter opening balances for all accounts as of your starting date (typically 1 April of the financial year). The opening_balance field on each account stores this value.
Opening balances ensure that your Balance Sheet is correct from day one. Without them, assets, liabilities, and equity will be understated, and your trial balance will not reconcile with your previous records.
Required: Opening balances must satisfy the accounting equation. Total debit opening balances (assets + expenses) must equal total credit opening balances (liabilities + equity + income). If they do not balance, review your data entry for errors or omissions.
Step-by-Step: View the Chart of Accounts
- Navigate to Accounting > Accounts from the main menu
- The CoA displays all accounts in a list, grouped by account type
- Use the search bar to find an account by name or code
- Click any account to view its details, including the current balance

Step-by-Step: Create a New Expense Account
Suppose your factory has started a new activity — heat treatment — and you want to track its costs separately.
- Navigate to Accounting > Accounts
- Click the New Account button
- Fill in the required fields:
| Field | Value |
|---|---|
| Name | Heat Treatment Expenses |
| Account Type | Expense |
| Code | 5060 |
| Parent | Manufacturing Expenses |
| Report Group | Manufacturing Overheads |
| Description | Costs related to heat treatment processes including furnace operation and outsourced HT services |
| Opening Balance | 0.00 |
| Active | Yes |
- Click Save
The new account is now available for use in journal entries, and any costs posted to it will appear under "Manufacturing Expenses" in reports.

Step-by-Step: Create a Sub-Account
Sub-accounts allow finer granularity. Continuing the example above, if you want to separate in-house heat treatment costs from outsourced heat treatment:
- Navigate to Accounting > Accounts and click New Account
- Set the Parent field to "Heat Treatment Expenses" (the account you just created)
- Name the account "In-House Heat Treatment" with code 5061
- Save and repeat for "Outsourced Heat Treatment" with code 5062
The parent account "Heat Treatment Expenses" will now aggregate the balances of both sub-accounts.
Example Chart of Accounts for a Manufacturing Company
The following is a representative CoA structure. Your actual accounts will vary based on your industry and scale.
| Code | Account Name | Type | Parent |
|---|---|---|---|
| 1010 | Cash in Hand | Asset | Current Assets |
| 1020 | HDFC Bank — Current Account | Asset | Current Assets |
| 1030 | ICICI Bank — Current Account | Asset | Current Assets |
| 1100 | Accounts Receivable | Asset | Current Assets |
| 1200 | Raw Materials Inventory | Asset | Current Assets |
| 1210 | Work-in-Progress Inventory | Asset | Current Assets |
| 1220 | Finished Goods Inventory | Asset | Current Assets |
| 1500 | Factory Building | Asset | Fixed Assets |
| 1510 | Plant & Machinery | Asset | Fixed Assets |
| 1520 | Moulds & Dies | Asset | Fixed Assets |
| 1530 | Office Equipment | Asset | Fixed Assets |
| 1540 | Vehicles | Asset | Fixed Assets |
| 2010 | Accounts Payable | Liability | Current Liabilities |
| 2100 | CGST Payable | Liability | Current Liabilities |
| 2110 | SGST Payable | Liability | Current Liabilities |
| 2120 | IGST Payable | Liability | Current Liabilities |
| 2130 | GST Input Credit (CGST) | Asset | Current Assets |
| 2140 | GST Input Credit (SGST) | Asset | Current Assets |
| 2150 | GST Input Credit (IGST) | Asset | Current Assets |
| 2200 | Salary Payable | Liability | Current Liabilities |
| 2300 | TDS Payable | Liability | Current Liabilities |
| 2500 | Term Loan — SBI | Liability | Long-term Liabilities |
| 3010 | Owner's Capital | Equity | — |
| 3020 | Retained Earnings | Equity | — |
| 4010 | Sales Revenue — Finished Goods | Income | Revenue |
| 4020 | Job Work Income | Income | Revenue |
| 4050 | Scrap Sales | Income | Other Income |
| 4060 | Interest Received | Income | Other Income |
| 5010 | Raw Material Consumption | Expense | Manufacturing Expenses |
| 5020 | Direct Labour | Expense | Manufacturing Expenses |
| 5030 | Factory Rent | Expense | Manufacturing Expenses |
| 5040 | Factory Electricity | Expense | Manufacturing Expenses |
| 5050 | Machine Maintenance | Expense | Manufacturing Expenses |
| 5100 | Office Rent | Expense | Administrative Expenses |
| 5110 | Telephone & Internet | Expense | Administrative Expenses |
| 5200 | Freight Outward | Expense | Selling Expenses |
| 5300 | Depreciation | Expense | Non-Cash Expenses |
| 5400 | Bank Charges | Expense | Financial Expenses |
Tips & Best Practices
Tip: Follow the principle of "as detailed as necessary, as simple as possible." Do not create 200 accounts when 50 will suffice. You can always add accounts later, but merging or deleting accounts with existing transactions is not straightforward.
Tip: Review your CoA with your accountant or auditor before entering opening balances. Their input on report groupings and classification will save rework during the audit.
Tip: Use the
activefield to deactivate accounts you no longer need instead of trying to delete them. Inactive accounts retain their historical data but do not appear in drop-down selections for new transactions.
Warning: Never create duplicate accounts for the same purpose. If two people independently create "Machine Repair Expenses" and "Machinery Maintenance," you will end up with costs split across both accounts, making reports inaccurate. Establish naming conventions and enforce them.
Quick Reference — Account Fields
| Field | Description | Required |
|---|---|---|
| name | Human-readable account name (e.g., "Raw Material Consumption") | Yes |
| account_type | One of: asset, liability, equity, income, expense | Yes |
| code | Short alphanumeric identifier for sorting and quick search | Yes |
| parent_id | Links to a parent account for hierarchical grouping | No |
| description | Detailed explanation of what this account is used for | No |
| opening_balance | Balance carried forward from the previous system or financial year | No |
| current_balance | System-calculated running balance (not manually editable) | Auto |
| is_system | True for system-generated accounts; prevents deletion | Auto |
| report_group | Classification for financial statement presentation | No |
| active | Whether the account appears in transaction forms | Yes |