Skip to Content

How to design Chart of Accounts in Odoo

Odoo Best Practices

If you are using Odoo for your accounting needs, you might be wondering how to code your chart of accounts in a way that is efficient, consistent, and easy to maintain. A chart of accounts (COA) is a list of all the accounts that you use to record your financial transactions, such as income, expenses, assets, liabilities, and equity. A well-designed COA can help you to organize your accounting data, generate accurate reports and comply with tax regulations.

In this blog post, we will share some best practices for coding your chart of accounts in Odoo, based on our experience and research. We will cover the following topics:

  • How to choose a numbering system for your accounts
  • How to group your accounts by type and category
  • How to use tags and taxes for your accounts
  • How to avoid common pitfalls and errors

Choosing a coding scheme for your accounts

A coding scheme is a system of assigning numbers or letters to your accounts, to make them easier to identify and classify. There are different types of coding schemes, such as numeric, alphanumeric, or hierarchical. The choice of coding scheme depends on your preferences, the size and complexity of your business, and the requirements of your local accounting standards.

In Odoo, you can use any coding scheme you want, as long as it is consistent and unique for each account. However, we recommend using a numeric coding scheme, as it is simple, flexible, and widely used. A numeric coding scheme consists of assigning a series of digits to each account, following a logical order.

Coding Chart of Accounts

One of the first decisions you need to make when coding your chart of accounts is how to assign numbers to your accounts. Odoo allows you to use any alphanumeric code for your accounts, but it is advisable to follow some conventions and standards to make your COA easy to read and understand.

A common practice is to use a hierarchical numbering system, where the first digits of the code indicate the type of account (such as balance sheet or profit and loss), and the subsequent digits indicate the sub categories and subaccounts. For example, you could use the following rules:

  • The first digit indicates the account type (1 for assets, 2 for liabilities, 3 for equity, 4 for income, and 5 for expenses)
  • The second digit indicates the account group (for example, 11 for current assets, 12 for non-current assets)
  • The third and fourth digits indicate the account sub-group (for example, 1110 for cash and bank accounts, 1120 for receivables)
  • The fifth and sixth digits indicate the account number (for example, 111001 for the main bank account, 111002 for petty cash)

Using this coding scheme, you can easily identify and classify your accounts by looking at their codes. For example, if you see an account with code 521001, you know that it is an expense account (5), related to the cost of revenue (52), and it is the first account in that sub-group (1001).

Below is an example of a coding structure:

  • 1xxx: Assets
    • 11xx: Current assets
      • 111x: Cash and bank
      • 112x: Accounts receivable
      • 113x: Inventory
    • 12xx: Non-current assets
      • 121x: Fixed assets
      • 122x: Intangible assets
  • 2xxx: Liabilities
    • 21xx: Current liabilities
      • 211x: Accounts payable
      • 212x: Taxes payable
    • 22xx: Non-current liabilities
      • 221x: Loans payable
      • 222x: Deferred revenue
  • 3xxx: Equity
    • 31xx: Capital
    • 32xx: Retained earnings
  • 4xxx: Income
    • 41xx: Sales revenue
    • 42xx: Other income
  • 5xxx: Expenses
    • 51xx: Cost of goods sold
    • 52xx: Operating expenses
      • 521x: Salaries and wages
      • 522x: Rent and utilities
    • 53xx: Depreciation and amortization
    • 54xx: Interest expense

The advantages of using a hierarchical numbering system are:

  • It makes it easy to identify the type and category of an account by looking at its code.
  • It allows you to create subaccounts by adding more digits to the code, without changing the existing codes.
  • It facilitates the sorting and grouping of accounts in reports and statements.

However, there are also some drawbacks to using a hierarchical numbering system, such as:

  • It can be confusing if you have too many levels or digits in your codes.
  • It can be difficult to insert new accounts or reclassify existing accounts if you run out of numbers in a category.
  • It can be inconsistent if you use different codes for similar accounts in different companies or countries.

To avoid these problems, you should follow some guidelines when choosing a numbering system for your chart of accounts:

  • Use a consistent number of digits for each level of your hierarchy. For example, if you use four digits for your main categories, use four digits for all your subcategories and subaccounts as well.
  • Leave some gaps between your numbers to allow for future expansion or changes. For example, if you use increments of 10 for your subcategories, you will have nine numbers available for each subcategory.
  • Use meaningful codes that reflect the nature and purpose of your accounts. For example, avoid using generic codes like "Miscellaneous" or "Other".
  • Align your codes with the accounting standards and practices of your industry and jurisdiction. For example, if you operate in multiple countries, you may need to adapt your codes to comply with local tax laws and reporting requirements.

Using account types and groups to organize your accounts

Account types and groups are two features in Odoo that help you organize your chart of accounts and generate accurate financial reports. Account types are predefined categories that indicate the nature and function of an account. For example, some of the account types in Odoo are:

  • Current assets: assets that are expected to be converted into cash or consumed within one year
  • Receivable: assets that represent amounts owed by customers or other parties
  • Bank and cash: assets that represent cash on hand or in bank accounts
  • Current liabilities: liabilities that are due within one year
  • Payable: liabilities that represent amounts owed to suppliers or other parties
  • Equity: the owner's share of the business
  • Income: revenues generated from selling goods or services
  • Expenses: costs incurred from running the business

Account types are important because they determine how an account is treated in the accounting system. For example, an account with the type "Receivable" will automatically generate a journal entry when an invoice is validated, and will appear in the aged receivable report. An account with the type "Income" will increase the profit and loss statement when credited, and will appear in the income statement report.

Account groups are custom categories that allow you to group similar accounts. For example, you can create an account group called "Sales" and assign all your income accounts related to sales to that group. Account groups are useful because they help you hierarchically structure your chart of accounts, and they allow you to create subtotals and drill-downs in your financial reports.

By following these best practices in Odoo 16, you can optimize your accounting system and gain more insights into your financial performance. If you need any assistance with designing your COA in Odoo 16, feel free to contact us at hello@scando.solutions. We are happy to help!



5 HR Challenges Solved Effortlessly with Odoo ERP