Odoo 19 Opening Balances: Prepare a Cutover Reconciliation Pack
Prepare opening balances, outstanding items and bank cutover checks with a worked HKD example before importing into Odoo 19.

Applicability
Odoo 19 Accounting with access to journal entries, reports and import templates. Inventory is needed where stock is migrated. Confirm installed apps, subscription and accounting access before using the documented workflow.
Research method
Official Odoo 19 documentation research with an invented reconciliation example; no new Odoo migration test.
Prepare one reconciliation pack before importing: the cutover trial balance, remaining customer and supplier items, stock valuation where relevant, and a starting balance for each bank journal. The worked example below helps you find missing amounts before a live cutover; it is not a tested migration template.
Contents
- Choose the cutover boundary
- Build a reconciliation pack
- Worked HKD example
- Map the pack to Odoo
- Release checks
Choose the cutover boundary
The Odoo 19 opening-entry guidance distinguishes year-end, tax-period-end and mid-period transitions. It warns that mid-period transfers add complexity. Choose one dated cutoff and document which system records transactions on either side.
For a Hong Kong business keeping HKD books, record the company currency and identify foreign-currency items separately. A HKD total alone cannot explain a USD invoice's remaining amount or exchange-rate difference. This guide does not prescribe tax treatment or a foreign-currency migration method.
Build a reconciliation pack
Use this editorial preparation checklist. It is a control worksheet, not an Odoo import format.
| File | Keep | Stop when |
|---|---|---|
| Trial balance | Account mapping, cutover date, debit/credit totals | Debits and credits differ |
| Customer items | Original reference, customer, currency, due date, remaining balance and credits | Net open items differ from the receivable control balance |
| Supplier items | Equivalent supplier balances and refunds | Net items differ from the payable control balance |
| Bank evidence | Each bank's cutoff balance and first transaction date in Odoo | Old and new feeds overlap or a journal is missing |
| Stock evidence, if applicable | Count, cost and location identifiers | Valuation differs from the trial balance |
Add an owner, evidence filename and difference column to every row. Keep the source export unchanged so someone else can reproduce your totals.
Worked HKD example
Invented example, arithmetic only: a customer invoice originally totals HK$12,000. The customer has paid HK$5,000 before cutoff, leaving HK$7,000. A separate outstanding credit note is HK$1,000.
| Check | Calculation | Expected amount |
|---|---|---|
| Remaining invoice | 12,000 − 5,000 | HK$7,000 |
| Net customer items | 7,000 − 1,000 | HK$6,000 |
| Trial-balance receivable | Agreed source control balance | HK$6,000 |
| Difference | 6,000 − 6,000 | HK$0 |
If you copy HK$12,000 into the remaining-balance column, net items become HK$11,000: a HK$5,000 difference. Investigate the already-paid amount before import. Do not change the control balance merely to force agreement.
A zero difference checks this total only. You still need the correct customer, original reference, currency and due date to use the aged receivable report meaningfully.
Map the pack to Odoo
The official workflow uses clearing accounts to prevent open invoices and the trial balance counting receivables/payables twice. It describes separate AR/AP clearing accounts, open-item import templates and an opening trial-balance template. For partially paid items it uses the remaining amount due. Download the templates from the destination database; this worksheet is not a substitute for their field mapping.
For bank journals, the documented method sets the first statement's starting balance and avoids importing transactions before the trial-balance cutoff. The previous blanket instruction to replace every positive bank balance with an outstanding-receipts account does not form part of this guide.
Release checks
- Agree the source trial balance and open-item totals before importing.
- Follow the documented templates and review draft entries before posting.
- Compare Odoo trial balance and aged receivable/payable totals against the same cutoff pack.
- Confirm each bank's starting balance and investigate clearing balances; the official final validation also describes removing cleared accounts from reports.
- Record differences and their explanation before treating the cutover as complete.
For an implementation discussion, send APAA the cutoff date, source system and reconciliation differences. Do not send customer financial records through a public enquiry form.
Sources
- Odoo 19: Get started — opening entries
Opening entries, clearing accounts, remaining invoice balances, opening bank statements and final validation.
Source checked