Back to all articlesAccounting

Odoo 19 Chart of Accounts: Update Existing Records Without Duplicates

Plan a controlled chart-of-accounts import with stable IDs, report checks and the Odoo 19 earnings boundary.

APAAPublished Content updatedLast verifiedApplies to Odoo 19
Odoo 19 Chart of Accounts: Update Existing Records Without Duplicates
Illustrative cover image, not an Odoo operation screenshot or client case.

Applicability

Odoo 19 Accounting chart-of-accounts configuration and export/import rights, in the intended company. Import execution needs a backup and approved change scope; account types and the Odoo 19 appropriation workflow require accounting review. No migration was executed.

Research method

Official Odoo 19 documentation research checked on 2026-10-21; examples are fictitious planning/control calculations, not APAA tests or client results.

Use an import-compatible export when the task is to change existing account names or approved attributes. Creating a fresh spreadsheet with matching account codes is not the same as identifying the original records. This guide gives a review plan, not a tested migration script or a promise that imports are reversible.

Contents

Decide what kind of change is intended

ChangeReview focus
Rename an accountSame record/identifier and same balance; historical reports may display the new name
Add an accountUnique intended record, correct type, company and currency
Retire an account with historyUse the documented Deprecated setting rather than delete it
Change an account typeReporting and year-end behavior, not just the visible label
Replace fiscal localizationOdoo says it cannot be changed after a journal entry has been posted

An account type influences financial reporting and fiscal-year/opening behavior. Currency restrictions and reconciliation settings also affect its use. Do not include these columns merely because they happen to appear in an export.

Prepare and review the update

  1. In Accounting → Configuration → Chart of Accounts, select the intended company and records. Export with I want to update data (import-compatible export) and retain the original file and the record's exported External ID.
  2. Prepare a change log listing identifier, old value, new value and approver. Keep account codes as text, preserving leading zeroes; change only the approved fields.
  3. Import to the same model and map the stable identifiers explicitly. For repeated updates, keep each record's External ID unchanged. Missing or altered identifiers can create new records or break matching; duplicate identifiers can cause conflicts.
  4. Use the import validation/preview and investigate every mapping error. Start with a bounded set of approved changes; do not treat successful validation as proof of accounting correctness.
  5. Compare record count, names, types, currency restrictions and affected reports after import. Odoo documents imports as permanent, with no general undo: a backup and a planned correction path must exist before execution.

Worked example: rename, do not recreate

Fictitious HKD example: exported record __export__.account_120_example has code 006100, name “Office expenses”, type Expense and a HK$12,000 debit balance. The approved change is only the name “Office and administration”. Keep the exported identifier and 006100 unchanged. The expected result is one account with the new name and the same HK$12,000 balance.

If two accounts appear afterward, stop further imports and compare identifiers and record counts. Do not delete the old account or transfer its balance merely to hide a duplicate. If the trial balance changed, identify whether a type, company, journal item or other field changed; a simple rename should not create a new financial transaction.

Odoo 19 earnings require a separate review

Odoo 19's year-end documentation describes a dynamic Result Brought Forward line in the following year's trial balance/general ledger. An explicit year-end appropriation entry using a Current Year Earnings type account replaces that line; appropriation accounts do not change net profit. The documentation explicitly distinguishes pre-19 behavior and advises upgrade users to review historical appropriations.

Do not rename this into a blanket rule that “touching one account breaks closing”, or assume all prior-year profit is automatically posted to retained earnings. A bulk tidy-up must leave approved account types and appropriation policy intact. If the purpose is year-end allocation, define that separate accounting task rather than performing it through a name import.

Read fiscal-position mapping before changing linked accounts, and asset configuration before altering asset account automation. Contact APAA to scope a controlled update.

Sources

  • Chart of accounts

    Account types, localization boundary, currency and deprecated accounts

    Source checked

  • Export and import data

    Import-compatible export, stable external IDs, validation and permanent imports

    Source checked

  • Year-end closing

    Odoo19 dynamic Result Brought Forward and manual appropriation using Current Year Earnings accounts

    Source checked

Considering Odoo for your business?

Talk to APAA about a tailored Odoo implementation for your Hong Kong SME.

Enquire about Odoo services
Odoo 19 Chart of Accounts: Update Existing Records Without Duplicates | APAA