3.2 Taxes, chart of accounts & financial reporting

Key Takeaways

  • An account's type (e.g., Receivable, Bank and Cash, Income, Current Year Earnings) determines which financial report it appears on and whether it can be reconciled.
  • The chart of accounts, default taxes, and legal reports are installed automatically by the fiscal localization package chosen when the database is created.
  • Taxes assign their base and tax amounts to tax grids, and those grids build the tax report totals automatically for the selected period.
  • Fiscal positions map taxes and accounts by customer or vendor location, such as replacing domestic 21% VAT with a 0% export tax, and can be applied automatically by country or country group.
  • Lock dates — Journal Entries, Tax Return, and Hard Lock — close accounting periods by preventing edits to entries on or before the set date.
Last updated: July 2026

The chart of accounts and account types

The chart of accounts (CoA) is the backbone of Odoo accounting, and it is installed automatically by the fiscal localization package you select when the database is created. The package loads a country-appropriate list of accounts, default taxes, and legal reports, so you rarely build a CoA from scratch. You can review and edit it under Accounting ▸ Configuration ▸ Chart of Accounts.

Every account has a code, a name, and — most importantly for the exam — an account type. The type is not cosmetic: it decides which financial report the account lands on, whether the account can be reconciled, and any special role it plays. Odoo groups the types into assets, liabilities, equity, income, and expenses:

CategoryExample account types
AssetsReceivable, Bank and Cash, Current Assets, Prepayments, Fixed Assets
LiabilitiesPayable, Current Liabilities, Non-current Liabilities
EquityEquity, Current Year Earnings
IncomeIncome, Other Income
ExpensesExpenses, Cost of Revenue, Depreciation

For example, an account typed Receivable or Payable can be reconciled and feeds the aged partner reports, while Current Year Earnings is a special type Odoo uses to carry the running profit onto the Balance Sheet automatically.

Journals

Journals classify entries by nature: Sales, Purchase, Bank, Cash, and Miscellaneous. Each journal carries a short code, its own numbering sequence, and default debit/credit accounts, so posting an invoice or a payment fills the correct ledger accounts without manual selection. A journal can be restricted to a single currency, and journals can be grouped so reports and the audit trail stay organized. Because every posted entry belongs to exactly one journal, journals are also the unit Odoo uses when it applies lock dates and builds the tax and financial reports.

Configuring sales and purchase taxes

Taxes are defined under Accounting ▸ Configuration ▸ Taxes. The important fields are:

  • Tax TypeSales, Purchases, or None (none hides it from documents but keeps it usable inside a tax group).
  • Tax ComputationPercentage of Price, Percentage of Price Tax Included, Fixed, or Group of Taxes (a container that applies several taxes at once).
  • Amount — the rate, e.g., 21.
  • Definition / Distribution — the tab that spreads the base and the tax amounts onto tax grids, with separate distribution lines for invoices and for credit notes.

Tax grids are the numbered boxes of the tax return; every tax's distribution assigns its base and tax to the correct grid so the tax report totals build automatically. Options such as Included in Price and Affect Base of Subsequent Taxes control how the tax interacts with the untaxed amount and with other taxes on the same line.

Fiscal positions

A fiscal position maps taxes and accounts to a different set based on the customer or vendor — most often their location. The classic example is replacing a domestic 21% VAT with a 0% export tax for foreign customers, or swapping the income account used for a particular customer segment. You set a fiscal position manually on a partner's Sales & Purchase tab, or let Odoo apply it automatically using the partner's country or country group (and, where relevant, whether a VAT number is present). Fiscal positions keep a single product tax-neutral in its own definition while still charging the legally correct tax at invoicing time.

Tax reports and returns

The Tax Report (Accounting ▸ Reporting ▸ Tax Report) reads the tax grids to show what you owe or can reclaim for a chosen period, and you can switch it between an accrual (invoice date) and a cash (payment date) basis where the localization allows it. When you file, Odoo can generate a tax closing entry that moves the balances of the tax accounts to a single tax payable/receivable line, and it sets a tax return lock date so no one can add or edit transactions in a period you have already reported. Because the report is built entirely from tax grids, a tax that is configured with the wrong grid is the most common reason a return does not tie out — always confirm the distribution before closing.

Core financial reports

Odoo's dynamic reports (Accounting ▸ Reporting) let you drill down to the underlying entries and compare periods:

  • Profit & Loss — revenues minus expenses over a period; reveals net profit.
  • Balance Sheet — assets, liabilities, and equity at a single point in time.
  • General Ledger and Trial Balance — every account's detailed movements and its balances.
  • Aged Receivable / Aged Payable — outstanding customer and vendor amounts bucketed by how overdue they are.
  • Cash Flow Statement and Executive Summary — liquidity movements and a high-level KPI overview.

Lock dates and period closing

To protect closed periods, Odoo provides lock dates in the accounting settings: a Journal Entries lock date (global, blocking changes on or before the date for every user), a Tax Return lock date (blocking changes inside already-filed tax periods), and a Hard Lock date that, once set, cannot be moved back. Applying lock dates after you have reconciled the banks, closed the tax period, and reviewed the financial reports is how you formally close a period and preserve the integrity of the numbers auditors will rely on.

Test Your Knowledge

In Odoo, what does an account's TYPE primarily determine?

A
B
C
D
Test Your Knowledge

A customer located in another country must be invoiced with a 0% export VAT instead of the domestic 21% rate. Which Odoo feature maps this automatically based on the customer's country?

A
B
C
D
Test Your Knowledge

Which core Odoo financial report shows revenues minus expenses over a chosen period to reveal net profit?

A
B
C
D