Sadegh SalehiFinancial & Tax Advisor

Designing a Chart of Accounts That Actually Reports

By Sadegh Salehi ·Published 13 January 2026 ·4 min read
Designing a Chart of Accounts That Actually Reports

A chart of accounts is a decision you make once and live with for years. Designed well, profit by product or branch is two clicks away. Designed badly, every management report becomes a spreadsheet project. This covers the four-level structure, the tax-driven accounts, and how to rebuild without losing history.

The four levels

  • Group — the top classification, mapping directly to the financial statements: current assets, current liabilities, revenue, and so on.
  • General — the main headings within each group: cash, trade receivables, inventory.
  • Subsidiary — the level that identifies the nature of the item: rial bank account, foreign-currency account, petty cash.
  • Detail (floating) — the counterparties: customers, suppliers, employees, projects, cost centres.

The governing rule is simple: keep the upper levels few and fixed, and let the detail level float without limit. Every time you are tempted to create a subsidiary account for a new customer, you are damaging your own reporting structure.

In companies that come to me for a rebuild, the diagnosis is nearly always the same: the subsidiary level has grown until the trial balance runs to hundreds of lines and nobody can make a decision from it.

A workable group structure

Group Title Example general accounts
1 Current assets Cash, trade receivables, inventory, prepayments
2 Non-current assets Property and equipment, accumulated depreciation, intangibles
3 Current liabilities Trade payables, tax payable, payroll payable, advances received
4 Non-current liabilities Long-term borrowings, termination benefit provision
5 Equity Capital, legal reserve, retained earnings
6 Revenue Product sales, service revenue, returns and discounts
7 Cost of sales Cost of goods sold, materials, direct labour, overhead
8 Operating expenses Administrative, selling and distribution
9 Other and memorandum Other income and expense, guarantees

This is not the only valid split, but it aligns with conventional statement structure, which turns preparing a balance sheet into a summation rather than a reconstruction.

Accounts tax compliance demands

Separate these from the beginning or pay for it every quarter:

  1. Input VAT separate from output VAT, so the periodic return needs no manual rebuild.
  2. Withholding tax deducted, in its own account, split by payment type.
  3. Payroll tax and insurance payable, separate from other staff liabilities.
  4. Non-deductible expenses in dedicated accounts — penalties, gifts, excess entertainment — so the tax adjustment working paper builds itself.
  5. Owner drawings and partner current accounts, kept out of company expenses.
  6. Prepaid and on-account tax in independent accounts.

Complete every counterparty detail record with its economic code and national ID. That single habit cuts preparation of quarterly transaction reports from days to hours.

Cost centres and projects

Modern systems let one subsidiary account carry several floating dimensions, so freight can post against supplier, cost centre and project at once. Use it:

  • Cost centres for organisational units: production, sales, administration, warehouse.
  • Projects or contracts for contractors and made-to-order businesses; without it, contract-level profitability is guesswork. See contractor accounting.
  • Branches or stores for multi-location retail.

Manufacturers need cost accounts that separate direct materials, direct labour and overhead, or product costing becomes an estimate.

Numbering rules

  1. Fix code length at the outset and keep it for the whole life of the system.
  2. Leave gaps — number subsidiary accounts 10, 20, 30 so later additions do not break the logic.
  3. Apply one logic across all groups, so the same suffix means the same kind of thing everywhere.
  4. Avoid reusing a code with different meanings in different groups.
  5. Keep titles short, with no personal abbreviations and no individuals' names.
  6. Write a one-line definition for each subsidiary account; that short document prevents the next accountant from reinventing it.

Frequent design errors

Error Practical effect
A subsidiary account per customer Unusable trial balance, cluttered statements
No prepayment or advances-received accounts Early recognition of income and expense
Deductible and non-deductible costs merged Hours of extra work at filing time
No cost centres No unit-level profitability analysis
A busy "sundry" account Material items hidden from view
Restructuring mid-year Comparative figures no longer reconcile

Rebuilding without losing history

  1. Extract the current four-level trial balance and flag dormant accounts.
  2. Design the new structure on paper against the reports management actually needs.
  3. Build an old-to-new mapping table; every old account gets exactly one destination.
  4. Clean the detail level: merge duplicate counterparties, complete identity data.
  5. Migrate balances through a new opening entry and agree them to last year's statements.
  6. Test key reports on the new data before current-period posting begins.
  7. Publish the documented chart and require approval for any new account.

Migration mechanics between systems are in moving to new accounting software.

Key takeaways

  • Keep upper levels fixed and few; push counterparties into the floating detail level.
  • Separate the tax-driven accounts on day one; it pays back every quarter.
  • Cost centres and projects are the difference between real reporting and guessing.
  • Leave numbering gaps so future growth does not break the structure.
  • Rebuild only at the start of a financial year, and only with a mapping table.

Frequently asked questions

How many levels should a chart of accounts have?
The common structure in Iran has four: group, general, subsidiary and detail. The first three form a fixed reporting skeleton, while the detail level is usually floating and holds counterparties such as customers, suppliers, staff and projects.
Why not create a general account for each customer?
Because the general level must stay small and stable for financial statements to be produced from it. Customers belong at the floating detail level, where you can add unlimited counterparties without cluttering the reporting structure.
Should we use a ready-made coding structure?
Start from a conventional structure and localise it narrowly. A standard chart typically covers eighty percent of your needs; the remaining twenty percent reflects your activity, such as cost of production accounts or contract progress accounts.
Can the structure be changed mid-year?
It can, but it is expensive. Adding a new subsidiary account is harmless; restructuring levels or renumbering should wait for the start of a financial year and be done with a mapping table and balance migration.
chart of accountsaccount codingcost centreaccounting software

Have a question? Just ask

One short call is usually enough to know where you stand. If I miss you, I will call back.

Call directly WhatsApp