What Is Bank Reconciliation?
Bank reconciliation is the process of matching your bank statement transactions against the journal entries in Odoo. It ensures that your accounting records accurately reflect what actually happened in your bank accounts — catching missing invoices, duplicate payments, bank fees, and errors.
Setting Up Bank Accounts
Creating Bank Journals
- Accounting → Configuration → Journals
- Create a journal of type Bank
- Enter your bank account number (IBAN)
- Set the bank name and currency
- Configure the default accounts (suspense, outstanding receipts/payments)
Bank Synchronization
Odoo supports automatic bank feeds through aggregation services:
| Service | Coverage | Setup |
|---|---|---|
| Plaid | US, Canada | Link through Odoo settings |
| Yodlee | Global (16,000+ banks) | Link through Odoo settings |
| Salt Edge | Europe (PSD2 compliant) | Link through Odoo settings |
| Ponto | Europe | Separate Ponto account needed |
# Bank sync setup:
# 1. Accounting → Configuration → Online Synchronization
# 2. Select your bank feed provider
# 3. Authenticate with your bank credentials
# 4. Select accounts to synchronize
# 5. Odoo fetches transactions automatically (usually daily)
# Note: Some banks require manual statement import
# Supported formats: OFX, QIF, CAMT.053, CSV, MT940Importing Bank Statements
If bank sync is not available, import statements manually:
- Accounting → Bank → Import
- Select the file format (OFX, CSV, CAMT, etc.)
- Upload the statement file
- Odoo parses and creates bank statement lines
CSV Import Format
# Required CSV columns:
# Date — Transaction date (YYYY-MM-DD)
# Label — Transaction description
# Amount — Transaction amount (positive for deposits, negative for withdrawals)
# Optional columns:
# Reference — Bank reference number
# Partner — Customer/vendor nameReconciliation Process
Opening the Reconciliation View
- Accounting → Bank → Click on the bank journal
- Or use the Dashboard → Bank card → Reconcile button
- The reconciliation widget shows unmatched statement lines
Matching Transactions
For each bank statement line, Odoo suggests matching journal entries:
- Automatic matching — Odoo matches by amount, reference, and partner
- Manual matching — Search and select the correct journal entry
- Partial matching — Match partial amounts (e.g., partial payment on an invoice)
- Write-off — Create a write-off for small differences (bank fees, rounding)
# Matching logic:
# 1. Exact amount match + reference match → High confidence
# 2. Exact amount match + partner match → Medium confidence
# 3. Exact amount match only → Low confidence (manual review)
# 4. No match → Create new entry or wait for missing invoiceReconciliation Models
Reconciliation models automate common patterns. Go to Accounting → Configuration → Reconciliation Models.
Common Models
| Model | Rule | Action |
|---|---|---|
| Bank Fees | Label contains "FEE" or "CHARGE" | Create expense entry to Bank Fees account |
| Interest Income | Label contains "INTEREST" | Create entry to Interest Income account |
| Payroll Transfer | Label contains "PAYROLL" | Match to payroll journal entry |
| ATM Withdrawal | Label contains "ATM" or "WITHDRAWAL" | Transfer to Cash journal |
Model Types
- Write-off — Creates a new journal entry (for bank fees, interest)
- Invoice matching — Matches against existing invoices/bills
- Manual — Suggests an action but requires confirmation
Handling Special Cases
Partial Payments
When a customer pays less than the invoice amount:
- Match the payment to the invoice
- The remaining balance stays open on the invoice
- Or create a write-off for the difference (e.g., early payment discount)
Combined Payments
When a customer pays multiple invoices in a single bank transaction:
- Select all matching invoices in the reconciliation widget
- Odoo splits the bank line across the selected invoices
Unknown Transactions
For bank lines with no obvious match:
- Check if the invoice/bill is missing and create it
- Create a manual journal entry
- Mark as "To Investigate" and return later
Outstanding Payments and Receipts
Odoo uses outstanding accounts to handle the timing difference between recording a payment in Odoo and seeing it on the bank statement:
# Payment flow:
# 1. Register payment on invoice
# Debit: Outstanding Receipts
# Credit: Accounts Receivable
# 2. Bank reconciliation (when it appears on statement)
# Debit: Bank
# Credit: Outstanding Receipts
# This two-step process ensures accurate timingBank Reconciliation Report
After reconciliation, review the Bank Reconciliation Report showing:
- Odoo closing balance
- Unreceived deposits (in Odoo but not on statement)
- Uncashed payments (in Odoo but not cleared at bank)
- Expected bank balance (should match actual statement)
Best Practices
- Reconcile weekly — Do not let it pile up for month-end
- Set up reconciliation models — Automate recurring patterns
- Review suggestions carefully — Auto-matching is not always correct
- Investigate mismatches — Unmatched items may indicate errors
- Lock reconciled periods — Prevent accidental changes to reconciled entries
DeployMonkey + Reconciliation
DeployMonkey's AI agent configures bank journals, import formats, reconciliation models, and matching rules for efficient bank statement processing.