Reconcile open receivables and payables before cutover
Check remaining amounts, counterparties, due dates and control totals before migrating open items to Odoo. Includes a worked reconciliation example.
Move open receivables and payables only after the finance owner can reconcile the remaining amount on each item, the total by customer or vendor and the relevant control balance at the same cutoff. A matching grand total is necessary, but it can conceal the wrong document, due date or counterparty.
This is a cutover acceptance worksheet. The finance owner must choose the accounting treatment and migration method. Importing every original invoice and also loading an opening balance can duplicate amounts if the design does not account for both.
Freeze a definition before you freeze a file
Write down the company, cutoff timestamp, currency basis and source reports. Decide which items are open at that moment and who handles receipts, payments, credits or corrections that arrive after the extract.
The phrase “open invoice” needs care. An invoice may have a partial payment, an unapplied credit or a dispute. An unpaid vendor bill may share a supplier reference with another partial bill. Odoo 19.0 expressly notes that multiple bills can share a Bill Reference when a supplier issues partial bills or requests a deposit. The reference alone is therefore a poor migration identifier. Odoo 19.0 vendor bills.
Give each source item a stable identifier and preserve its relationship to the original document. Odoo's import documentation explains the use of External IDs for identifying records and updating previously imported data. Test the selected identifiers on the actual import model rather than assuming a visible invoice number performs the same function. Odoo 19.0 import documentation.
Reconcile from the detail upward
Use a separate sheet for receivables and payables. Keep different currencies separate until the finance owner defines the reporting basis.
| Check | Legacy evidence | Odoo rehearsal evidence | Release requirement |
|---|---|---|---|
| Item identity | Source ID and original document | Target record and preserved reference | One intended target per source item |
| Open amount | Residual at cutoff | Residual after migration steps | Agrees on the chosen currency basis |
| Counterparty | Customer or vendor identity | Correct target contact | No accidental name-based merge |
| Due date | Original terms and adjustments | Target due date | Aging bucket has an explanation |
| Adjustments | Credits, partial payments, disputes | Their intended migrated treatment | Nothing silently omitted or counted twice |
| Control total | Approved source reconciliation | Matching target report | Finance owner explains every difference |
An invented receivables example shows why the detail matters. Invoice A originally totaled $1,200 and has $400 paid, leaving $800. Invoice B has $500 open. An unapplied customer credit is $100. On a deliberately simplified net basis, the position is $800 + $500 − $100 = $1,200.
A single $1,200 opening item might match that net total yet lose the two invoices, their different due dates and the credit. Whether summary or detailed migration is appropriate is the finance owner's decision. The test must verify the detail that collection and payment work will require afterward.
Use the rehearsal to expose changes at the boundary
Run the selected method in a disposable test database. Odoo warns that imports are permanent and cannot be undone; its Test action checks validity before import. A valid file is still not a reconciled ledger. Odoo 19.0 import documentation.
Test a fully open item, a partially paid item, a credit and two similarly named counterparties. Then repeat the agreed update process with the same source identifiers and check that it produces the intended update rather than duplicates.
Finally, simulate a payment received after the source extract. Name which system records it, how the migration delta captures it and how the team proves it was applied once. Repeat that check for a late supplier bill or correction.
Save the source reports, target reports, mapping version and difference log together. Release requires an accountable finance owner to explain the remaining differences, not a migration operator to report that all rows imported. The broader data migration rehearsal covers dependencies; this worksheet makes the open-item reconciliation explicit.