Odoo reconciliation matches your bank statement lines against invoices, bills, and payments recorded in Odoo Accounting confirming that what your bank reports actually aligns with your books. When it works smoothly, you close faster and catch discrepancies before they compound into cash visibility gaps.
This guide walks through how Odoo's reconciliation process works, how to configure models for automation, where native tools fall short at scale, and what high-volume businesses can do to extend their capabilities.
What Is Odoo Reconciliation
Odoo reconciliation matches bank statement lines with journal entries viz. invoices, vendor bills, and payments directly within Odoo Accounting. Think of it as the process of confirming that what your bank says happened actually lines up with what your books reflect.
Three elements come together during reconciliation:
- Bank statement lines: Transactions imported from your bank, either through file upload or direct synchronization
- Journal entries: Invoices, bills, and manual payments already recorded in Odoo
- Open items: Outstanding receivables or payables waiting to be settled
When all three align, Odoo marks the transaction as reconciled. When they don't, you're left with exceptions that require investigation and those exceptions, left unresolved, create cash visibility gaps and audit headaches.
How Reconciliation Works in Odoo
Odoo's reconciliation widget suggests matches based on amount, partner name, payment reference, and date. You'll see suggestions appear automatically when you open a bank statement for reconciliation, though accuracy depends heavily on how consistently your data is structured.
A few terms worth knowing before diving in:
- Statement line: A single transaction from your bank feed
- Counterpart: The journal entry that offsets the statement line
- Residual amount: The difference remaining when a partial match occurs
The widget displays open items on one side and statement lines on the other. Your job is to connect them or explain why they don't connect.
Reconciliation Statuses
- Matched – Successfully linked to a journal entry.
- Unmatched – No matching journal entry found.
- Partial Match – Linked to a journal entry, but amount differences remain unresolved.
How to Reconcile a Bank Statement in Odoo
Step 1. Import the Bank Statement
Start from the Accounting Dashboard and select your bank journal. Odoo accepts file uploads in OFX, CSV, and CAMT formats, or you can enable bank synchronization for automatic imports. The method you choose depends on your bank's capabilities and whether you prefer manual control or automated feeds.
Step 2. Match Statement Lines to Existing Entries
Once imported, Odoo scans for potential matches. The system looks at partner names, transaction amounts, and reference numbers to suggest likely counterparts.
Clean, consistent data produces better suggestions. Messy references or duplicate partner records create noise that slows down the entire process.
Step 3. Validate Suggested Matches
Review each suggestion before accepting. Verify that amounts align, dates make sense, and the partner is correct. A quick validation here prevents downstream errors that surface during month-end close when you have far less time to investigate.
Step 4. Reconcile Remaining Items With Write-Offs
Some transactions won't match perfectly. Bank fees, rounding differences, and small discrepancies often require write-offs - journal entries that account for the gap.
Odoo lets you create write-offs directly within the reconciliation widget, assigning the difference to an appropriate expense or income account. For a $2.50 bank fee, for example, you'd write off the amount to a bank charges account rather than leaving the statement line unreconciled.
Step 5. Post and Audit the Reconciliation
After matching and write-offs, finalize the reconciliation. Odoo records the action and creates an audit trail accessible from the journal entry. This trail becomes essential during audits or when tracing historical discrepancies months later.
Reconciliation Models in Odoo
Reconciliation models are pre-configured rules that automate repetitive matching tasks. Instead of manually handling the same bank fee every month, you define a model once and let Odoo apply it going forward.
Find reconciliation models in Accounting Dashboard > Bank Journal > Reconciliation > Models.
Button Models
Button models appear as clickable actions during reconciliation. When you encounter a recurring transaction type like a monthly service charge, you click the button to apply the predefined accounting treatment. Useful for transactions that happen regularly but still benefit from human review before posting.
Suggestion Models
Suggestion models auto-suggest matches based on conditions you define. Payments from a specific partner with a particular reference pattern, for instance, can trigger automatic suggestions. The system does the heavy lifting; you confirm the match with a single click.
Write-Off Models
For small, predictable differences such as bank fees, currency rounding; write-off models create the necessary journal entries automatically. You define the threshold and the target account, and Odoo handles the rest without requiring manual intervention each time.
How to Auto Reconcile in Odoo
Auto-reconciliation takes suggestion models a step further. When enabled, Odoo matches and reconciles transactions without waiting for your approval, provided certain conditions are met.
The main triggers for automatic matching:
- Exact amount match: Transaction and entry amounts are identical
- Partner identified: Odoo recognizes the payer or payee from the statement line
- Reference match: Payment reference aligns with an invoice number
Enable auto-reconciliation by checking the auto-reconcile option in your model configuration. This works best for high-confidence, repetitive transactions. Complex or ambiguous items still require manual review, so auto-reconciliation complements rather than replaces human oversight.

