Reconciliation Models in Odoo 18 Accounting
By Braincuber Team
Published on January 19, 2026
Every business processes dozens—if not hundreds—of transactions daily. Payments come in, go out, and somewhere along the way, the numbers in your bank account need to match the numbers in your books. This matching process is called reconciliation, and it's critical for catching errors, preventing fraud, and ensuring financial accuracy.
Odoo 18's Accounting module makes reconciliation significantly faster through Reconciliation Models—predefined rules that automate how transactions are matched. This tutorial explains the three types of reconciliation models, how to configure them, and how to use them for both payment matching and bank statement reconciliation.
What is Reconciliation? Reconciliation is the process of matching your internal accounting records (invoices, payments, journal entries) with external records (bank statements). It ensures that every transaction is accounted for and that your books reflect reality.
Three Types of Reconciliation Models
Odoo 18 offers three reconciliation model types, each serving a different purpose:
Button to Generate Counterpart Entry
Creates a button in the bank reconciliation view. Click it to generate a counterpart journal entry based on the model's rules (account, amount, label).
Use Case: Bank fees, interest income, recurring transfers.
Rule to Suggest Counterpart Entry
Automatically suggests a counterpart entry when a bank transaction matches defined criteria (label, amount, partner).
Use Case: Recurring expenses, subscription payments, utility bills.
Rule to Match Invoices/Bills
Matches bank transactions to existing invoices, vendor bills, or payments based on amount, reference, or partner.
Use Case: Customer payments, vendor payouts, standard invoice matching.
Creating a Reconciliation Model
Navigate to Configuration
Go to Accounting → Configuration → Banks → Reconciliation Models.
Create New Model
Click New and configure:
- Name: Descriptive name (e.g., "Bank Fees", "Customer Payment Match")
- Type: Select one of the three model types
- Auto-Validate: If enabled, reconciliation happens automatically
Define Match Criteria
Set conditions that transactions must meet:
- Journal: Which bank journal this applies to
- Amount Type: Fixed, percentage, or regex match
- Label Contains: Text that must appear in the transaction
- Partner Mapping: Restrict to specific partners
Define Counterpart Entry (if applicable)
For "Button" and "Suggest" types, specify:
- Account: Which account to debit/credit
- Amount: Full amount, percentage, or fixed value
- Label: Description for the journal entry
- Analytic Distribution: If using analytic accounting
Example: Bank Fee Model
Create a model that automatically handles monthly bank fees:
Bank Service Fee
| Type | Button to Generate Counterpart Entry |
| Match Label | Contains "SERVICE CHARGE" or "BANK FEE" |
| Account | 6200 - Bank Charges (Expense) |
| Amount | 100% of transaction amount |
When you see a bank fee in reconciliation, click the button to instantly create the matching expense entry.
Payment Matching
Payment matching connects customer payments to open invoices:
- Go to Accounting → Reconcile
- The view shows all journals with unreconciled entries
- Expand to see payments and invoices
- Select matching items and click Reconcile
- Or use Auto-Reconcile to match all automatically
Result: When a payment is matched to an invoice, the invoice status changes from "Posted" to "Paid" (or "In Payment" to "Paid" if using bank reconciliation).
Bank Statement Reconciliation
This matches your internal records against imported bank statements:
Import Bank Statement
Upload your bank statement file (CSV, OFX, QIF) or connect your bank via API.
Open Bank Reconciliation
Go to your bank journal's dashboard and click Bank Reconciliation.
Match Transactions
For each bank line, Odoo suggests matches. Accept suggestions or manually select entries to reconcile.
Handle Unmatched Items
For items without matches, use reconciliation model buttons to create counterpart entries (bank fees, interest, etc.).
Invoice Status Flow: When you reconcile a bank statement with an invoice payment, the invoice status changes from "In Payment" to "Paid". This confirms the money has actually arrived in your bank account.
Auto-Validate Option
For high-confidence matches, enable Auto-Validate on your reconciliation model:
- When a transaction matches the model's criteria, it reconciles automatically
- No manual intervention required
- Best for recurring, predictable transactions (subscriptions, salaries, rent)
- Use with caution—ensure criteria are specific enough to avoid false matches
Best Practices
Reconciliation Guidelines:
- Reconcile regularly: Weekly at minimum, daily for high-volume businesses.
- Create models for recurring items: Bank fees, subscriptions, payroll—anything predictable.
- Use specific matching criteria: The more specific, the fewer false matches.
- Review auto-validated entries: Periodically audit automatically reconciled items.
- Keep unreconciled items low: Investigate old unreconciled entries—they may indicate errors.
Conclusion
Reconciliation models in Odoo 18 Accounting transform a tedious manual process into an efficient, largely automated workflow. By creating models for recurring transactions, you reduce errors and save significant time. The three model types—button-based, suggestion-based, and invoice-matching—cover virtually every reconciliation scenario. Combined with bank statement imports and auto-validate options, Odoo makes it realistic to maintain fully reconciled books with minimal effort.
Key Takeaway: Go to Configuration → Reconciliation Models → Create models for recurring transactions. Use "Match Invoices/Bills" for customer/vendor payments, "Suggest Counterpart" for known expenses, and "Button" for one-click entries. Enable Auto-Validate for high-confidence matches.
