Odoo 19 bank reconciliation: settle the bank line without hiding unpaid invoices
Work through partial receipts and a separate fee, distinguish suggestions from review and define a reproducible reconciliation finish line.

Applicability
Odoo 19 Accounting bank matching with bank journal, imported/synchronized transactions and reconciliation rights. Banking connections and edition/subscription entitlement must be confirmed separately; this guide does not promise Hong Kong bank connectivity.
Research method
Research of official Odoo 19 documentation, including its published source where pages were unavailable; examples are fictitious editorial calculations. No new Odoo product testing, customer case study or hardware trial was performed.
Start with the actual statement amount, payer and reference. Odoo can match records automatically; a plausible suggestion is not your evidence that the payer, invoice and accounting treatment are correct. Odoo 19 matching rules.
Contents
- Reconcile one statement line
- Worked example: one partial receipt, one fee
- Finish criteria and exceptions
- Continue the work
Reconcile one statement line
- In Accounting Dashboard, open the bank journal’s unreconciled transactions.
- Compare the statement date, currency, reference and partner with the supporting documents.
- Use Reconcile to choose existing invoice/payment items; if a payment is already recorded, inspect it before creating another receipt.
- Explain any difference with another counterpart, a supported fee entry or an amount that remains open.
- Review the resulting entry and outstanding invoice amount before treating the case as finished.
Worked example: one partial receipt, one fee
Fictitious HKD example: invoice INV-A is 6,000 and INV-B is 4,000, both for the same customer. One bank credit is 9,000; the remittance advice says 6,000 settles A and 3,000 settles B.
| Document | Before | Applied | Still due |
|---|---|---|---|
| INV-A | 6,000 | 6,000 | 0 |
| INV-B | 4,000 | 3,000 | 1,000 |
| Total | 10,000 | 9,000 | 1,000 |
The bank line can be fully reconciled while B legitimately remains partly unpaid. Do not select “fully paid” simply to remove the HKD 1,000 reminder. The posting balances: debit bank 9,000, credit receivables 9,000.
Assume the statement also shows a separate HKD 50 bank fee, supported by the bank advice. Code that separate debit to the agreed bank-charge account: debit expense 50, credit bank 50. Across both transactions the net bank increase is 9,000 − 50 = 8,950; invoices have still received 9,000. Do not reduce B’s debt by another 50.
Finish criteria and exceptions
The bank balance should agree with the same dated statement, each imported line should have the correct counterpart, and the remaining HKD 1,000 should appear in receivables. A transaction’s matched status alone does not prove this entire check.
If currencies differ, stop using this single-currency example: inspect invoice currency, payment currency, exchange rate/date and generated exchange entries. A foreign-exchange difference is not automatically a bank fee. Payment banners also depend on outstanding-account configuration; payment and bank-settlement states are separate stages.
Continue the work
If the invoice is missing or wrong, resolve sales-order invoicing first. For a mapping or historic reconciliation issue, contact APAA with anonymized references and the unexplained difference.
The cover is a generic illustration, not an Odoo 19 operation screenshot.
Sources
- Odoo 19 — Bank reconciliation
Matching suggestions, multiple counterparts, partial payments, fee write-offs and balanced entries.
Source checked
- Odoo 19 — Payments
Payment status depends on outstanding-account and reconciliation configuration.
Source checked