Odoo Bank Reconciliation and Accounting: A Complete Walkthrough

Master Odoo bank reconciliation with this step-by-step guide covering automatic matching, manual reconciliation, payment handling, and month-end close.

E
ECOSIRE Research and Development Team
|March 16, 20268 min read1.8k Words|

Odoo Bank Reconciliation and Accounting: A Complete Walkthrough

Bank reconciliation is the process that ensures your accounting records match your actual bank transactions. In Odoo, reconciliation has evolved from a tedious manual process to an AI-assisted workflow that matches most transactions automatically. This guide covers the entire reconciliation process, from bank feed setup through month-end close, including the advanced matching rules and exception handling that make Odoo's reconciliation engine one of the most capable in the ERP market.

Key Takeaways

  • Odoo 19 connects to over 14,000 financial institutions for automatic bank statement import via Open Banking
  • The AI matching engine suggests transaction matches with confidence scores based on amount, date, vendor name, and historical patterns
  • Reconciliation models automate recurring transactions like bank fees, interest, and subscription payments
  • The reconciliation widget provides a split-pane interface showing bank transactions on the left and potential matches on the right
  • Month-end close procedures include bank reconciliation, cut-off entries, depreciation, and period locking

Bank Feed Setup

Connecting Your Bank

Navigate to Accounting > Configuration > Bank Accounts to configure bank connections:

Automated feeds (Open Banking): Odoo supports direct connections to banks in the EU, UK, US, Canada, and Australia through aggregation partners. Click Connect next to your bank, authenticate through the bank's portal, and transactions flow automatically.

File import: For banks without API access, import statements manually at Accounting > Bank > Import. Supported formats include:

FormatDescriptionCommon In
OFXOpen Financial ExchangeUS, Canada
QIFQuicken Interchange FormatUS
CAMT.053ISO 20022 XMLEU
CSVComma-separated valuesUniversal
MT940SWIFT message formatGlobal banking

Manual entry: For banks where neither API nor file import is available, enter transactions manually at Accounting > Bank > Statements.

Synchronization Frequency

Automated bank feeds synchronize at configurable intervals:

  • Real-time: Transactions appear within minutes (supported by some banks)
  • Daily: Most common---transactions sync once per day
  • On-demand: Manual refresh through the bank dashboard

Configure sync frequency at Accounting > Configuration > Bank Synchronization.

The Reconciliation Interface

Accessing Reconciliation

Open the reconciliation widget at Accounting > Bank > Reconciliation. The interface displays:

Left pane: Unreconciled bank transactions sorted by date. Each line shows the transaction date, description (from the bank), amount, and any suggested matches.

Right pane: Potential matches from your accounting records. These include:

  • Open invoices and bills matching the amount
  • Outstanding payments not yet linked to bank transactions
  • Previously reconciled transactions for reference

Matching confidence: Each suggestion shows a percentage confidence score. A 95% confidence means the engine found strong matches on amount, date, and partner name. Scores below 70% indicate partial matches that require human review.

Automatic Matching Rules

Odoo uses several matching criteria to suggest reconciliation matches:

CriteriaWeightDescription
Exact amountHighBank transaction amount matches invoice/payment exactly
Partner nameMediumBank description contains a known partner name
ReferenceHighPayment reference matches invoice number
Date proximityLowTransaction date is close to the expected payment date
Historical patternMediumSimilar transactions were previously matched to this partner

Manual Reconciliation

When automatic matching fails, reconcile manually:

  1. Select the bank transaction in the left pane
  2. Search for the matching record in the right pane using the search bar
  3. If the amounts differ, create a write-off entry for the difference (e.g., bank fee, discount)
  4. Click Validate to confirm the reconciliation

For transactions with no corresponding accounting record (bank fees, interest, returned checks), create the journal entry directly from the reconciliation screen by selecting an account and entering the details.

Reconciliation Models

What Are Reconciliation Models?

Reconciliation models automate recurring transaction patterns. Instead of manually creating journal entries for bank fees every month, define a model that matches the pattern and applies the correct accounting treatment automatically.

Navigate to Accounting > Configuration > Reconciliation Models to create and manage models.

Model Types

Write-off model: Matches transactions by pattern (text in description, amount range) and creates a journal entry to a specified account. Use for bank fees, interest income, and recurring charges.

Invoice matching model: Matches bank transactions to open invoices using customizable criteria. Use to override or enhance the default matching logic for specific scenarios.

Manual model: Provides a button during reconciliation that applies a predefined set of accounts and amounts. Use for common manual adjustments.

Example Models

Model NameMatch ConditionAccountApplication
Bank Service FeeDescription contains "SERVICE FEE"Bank Charges ExpenseMonthly bank fees
Interest IncomeDescription contains "INTEREST"Interest IncomeMonthly interest
Stripe PayoutDescription contains "STRIPE"Stripe ReceivableeCommerce payouts
PayPal FeeDescription contains "PAYPAL FEE"Payment Processing ExpensePayPal transaction fees

Payment Reconciliation

Customer Payments

When customers pay invoices, the reconciliation flow depends on the payment method:

Bank transfer: The payment appears as a bank transaction. Match it to the open invoice during reconciliation. If the customer paid multiple invoices in a single transfer, match the bank line to multiple invoices.

Online payment (Stripe, PayPal): Odoo records the payment automatically when the payment provider confirms the transaction. The bank transaction (payout from the provider) is reconciled against the outstanding receivable from the provider.

Check: Record the check receipt at Accounting > Customers > Payments, which creates an outstanding receipt entry. When the check clears and appears in the bank feed, match the bank transaction to the outstanding receipt.

Vendor Payments

Vendor payment reconciliation follows a similar pattern:

  1. Create the vendor payment at Accounting > Vendors > Payments (or use the Pay button on the vendor bill)
  2. The payment creates an outstanding payment entry
  3. When the bank processes the payment and it appears in the feed, match the bank transaction to the outstanding payment

Partial Payments and Overpayments

Odoo handles partial payments and overpayments during reconciliation:

  • Partial payment: Match the bank transaction to the invoice. The remaining amount stays as an open balance on the invoice.
  • Overpayment: Match the full bank amount to the invoice. The excess creates a credit that can be applied to future invoices or refunded.

Advanced Reconciliation Scenarios

Multi-Currency Reconciliation

For transactions in foreign currencies:

  1. The bank transaction records in the bank's currency
  2. Odoo converts at the exchange rate on the transaction date
  3. If the rate differs from the invoice rate, a currency exchange gain/loss entry is created automatically
  4. Configure exchange gain/loss accounts at Accounting > Configuration > Settings

Batch Payments

When multiple vendor payments are combined in a single bank transfer:

  1. Create a batch payment at Accounting > Vendors > Batch Payments
  2. Add individual vendor bills to the batch
  3. The batch creates a single outstanding payment entry matching the total bank transfer
  4. Reconcile the bank transaction against the batch payment entry

Unidentified Transactions

For bank transactions that cannot be matched to any existing record:

  1. During reconciliation, click Create to generate a new journal entry
  2. Select the appropriate account (suspense account if uncertain)
  3. Add notes for follow-up investigation
  4. The suspense account balance appears on the balance sheet until resolved

Month-End Close Process

Reconciliation Completion

Before closing the month, ensure all bank transactions are reconciled:

  1. Review the Unreconciled Items report at Accounting > Reporting > Unreconciled
  2. Investigate and resolve any items older than the current period
  3. Verify bank balances match between Odoo and bank statements

Cut-Off Entries

Create accrual entries for revenue earned or expenses incurred but not yet invoiced:

  • Accrued revenue: Services delivered but not billed
  • Accrued expenses: Services received but not billed by the vendor
  • Deferred revenue: Payments received for future services
  • Prepaid expenses: Payments made for future services

Depreciation Entries

If using the Assets module, depreciation entries post automatically based on the schedule. Review and post pending entries at Accounting > Accounting > Depreciation Entries.

Period Locking

After completing all month-end procedures:

  1. Navigate to Accounting > Configuration > Settings > Lock Dates
  2. Set the Lock Date for All Users to the last day of the closed month
  3. This prevents any journal entries from being posted to the closed period

Troubleshooting

Common Reconciliation Issues

IssueCauseResolution
Transaction appears twiceDuplicate importDelete the duplicate bank statement line
Amount mismatchBank fees includedCreate a write-off for the fee difference
Partner not recognizedDifferent name in bank vs OdooAdd a bank account alias for the partner
Missing bank transactionsIncomplete importRe-import the full statement for the period
Stale unreconciled itemsOld transactions never matchedReview and write off or match to journal entries

ECOSIRE Accounting Services

Configuring Odoo's accounting module for your specific business requires expertise in both accounting principles and Odoo's technical architecture. ECOSIRE's Odoo implementation team configures chart of accounts, tax rules, bank connections, and reconciliation models. For ongoing operations, our support services assist with month-end close procedures and reconciliation troubleshooting. We also offer standalone accounting services for businesses that prefer outsourced bookkeeping.

How often should bank reconciliation be performed?

For most businesses, daily reconciliation is ideal. It catches discrepancies quickly and prevents month-end backlogs. With automated bank feeds and reconciliation models, daily reconciliation takes minutes rather than hours. At minimum, reconcile weekly to maintain accurate cash position reporting.

What happens to reconciled transactions if a bank statement is re-imported?

Odoo prevents duplicate imports by checking transaction references and dates. If a statement is re-imported, existing transactions are skipped. Already-reconciled transactions are not affected. If you need to undo a reconciliation, use the Unreconcile button on the journal entry.

Can Odoo reconciliation handle multiple bank accounts?

Yes. Each bank account operates independently with its own reconciliation queue. Navigate between accounts using the bank account selector in the reconciliation interface. Organizations commonly manage 5-15 bank accounts across operating accounts, payroll accounts, and currency-specific accounts.

E

Written by

ECOSIRE Research and Development Team

Building enterprise-grade digital products at ECOSIRE. Sharing insights on Odoo integrations, e-commerce automation, and AI-powered business solutions.

Chat on WhatsApp