Skip to content

Odoo Chart of Accounts Missing — 'No Chart of Accounts Defined' Fix

DeployMonkey Team · March 24, 2026 8 min read

Missing Chart of Accounts in Odoo

When setting up Odoo Accounting, you may encounter:

UserError: No chart of accounts defined for this company.

# Or the Accounting module shows no accounts:
Accounting > Configuration > Chart of Accounts → empty list

# Or when creating a journal entry:
ValidationError: No account found for this operation.
Please configure the default accounts on the journal.

Why the Chart of Accounts Is Missing

Odoo requires a fiscal localization package to create the chart of accounts. Without it, no accounts exist and the accounting module cannot function.

Fix 1: Install the Fiscal Localization Package

# Step 1: Go to Accounting > Configuration > Settings
# Step 2: Under "Fiscal Localization", select your country's package
# Examples:
#   - Generic Chart of Accounts (l10n_generic_coa)
#   - United States (l10n_us)
#   - India (l10n_in)
#   - United Kingdom (l10n_uk)
#   - Germany (l10n_de)

# Step 3: Click "Save"
# Odoo will install the localization module and create the chart

# Via command line:
./odoo-bin -c /etc/odoo.conf -d mydb -i l10n_generic_coa --stop-after-init

Fix 2: Chart Already Installed But Not Applied

Sometimes the localization module is installed but the chart was not applied to the company:

# Check if accounts exist
sudo -u postgres psql -d mydb -c "
  SELECT COUNT(*) FROM account_account WHERE company_id = YOUR_COMPANY_ID;
"

# If 0, the chart needs to be applied:
# Go to Accounting > Configuration > Settings
# Click on "Install More Packages" or change the localization
# Save to trigger chart creation

# Or via Odoo shell:
env['account.chart.template'].try_loading('generic_coa', company=env.company)

Fix 3: Multi-Company Chart Issues

Each company needs its own chart of accounts:

# Check which companies have charts
sudo -u postgres psql -d mydb -c "
  SELECT rc.name, COUNT(aa.id) as account_count
  FROM res_company rc
  LEFT JOIN account_account aa ON aa.company_id = rc.id
  GROUP BY rc.name;
"

# For companies with 0 accounts:
# 1. Switch to that company (top-right menu > switch company)
# 2. Go to Accounting > Configuration > Settings
# 3. Select and apply a fiscal localization

# Or via shell for a specific company:
company = env['res.company'].browse(COMPANY_ID)
env['account.chart.template'].with_company(company).try_loading('generic_coa', company=company)

Fix 4: Wrong Accounts on Journals

Even with a chart installed, journals may not have default accounts:

# Check journal account configuration
# Accounting > Configuration > Journals
# For each journal, verify:
# - Sales Journal: Default Income Account set
# - Purchase Journal: Default Expense Account set
# - Bank Journal: Bank Account set
# - Cash Journal: Cash Account set

# Via database:
sudo -u postgres psql -d mydb -c "
  SELECT aj.name, aj.type,
    aj.default_account_id,
    aa.code as account_code
  FROM account_journal aj
  LEFT JOIN account_account aa ON aj.default_account_id = aa.id
  WHERE aj.company_id = YOUR_COMPANY_ID;
"

Fix 5: Accounts Exist But Are Deprecated

# Some accounts may be marked as deprecated and hidden
sudo -u postgres psql -d mydb -c "
  SELECT code, name, deprecated FROM account_account
  WHERE company_id = YOUR_COMPANY_ID
  AND deprecated = true;
"

# Undeprecate accounts if needed:
sudo -u postgres psql -d mydb -c "
  UPDATE account_account SET deprecated = false
  WHERE code = '400000' AND company_id = YOUR_COMPANY_ID;
"

Fix 6: Chart Template Compatibility

# Odoo version-specific localization modules:
# Odoo 17+: chart templates are built into localization modules
# Odoo 16 and earlier: separate chart template wizard

# If upgrading from an older version:
# The chart should be preserved during upgrade
# But some account types may need updating

# Check account types after upgrade:
sudo -u postgres psql -d mydb -c "
  SELECT account_type, COUNT(*) FROM account_account
  WHERE company_id = YOUR_COMPANY_ID
  GROUP BY account_type;
"

Prevention

DeployMonkey configures the chart of accounts during instance setup based on your country and business type. The AI agent validates that all journals have proper default accounts and all account types are correctly mapped.