Blog/Software Integrations/How to Import Bank Statements into Odoo
๐Ÿ”—

How to Import Bank Statements into Odoo

9 min readMarch 6, 2025

Quick Answer: To import bank statements into Odoo, convert your PDF bank statement to CSV using QuickBankConvert, then navigate to Accounting > Banking > Bank Statements and use Odoo's Import feature. Odoo accepts CSV with Date, Label/Description, Amount Debit, and Amount Credit columns โ€” QuickBankConvert formats the output to match.


Odoo has grown from a niche ERP into one of the most widely deployed business management platforms globally, with over 12 million users. Its accounting module is particularly strong, offering double-entry bookkeeping, automated reconciliation, and flexible bank statement management. But getting bank data into Odoo requires the right format โ€” and most banks deliver statements as PDFs.

This guide walks through the complete process for Odoo users who need to import bank statements, from understanding what Odoo accepts to the step-by-step import and reconciliation workflow.


Odoo Accounting and Bank Statement Management

Odoo Accounting handles bank statements through bank statement lines โ€” individual transaction records that are matched against journal entries (vendor bills paid, customer invoices received, bank fees) during reconciliation. The process:

  1. Import bank statement lines (from bank feed or manual CSV upload)
  2. Match each statement line against existing Odoo records
  3. Create new journal entries for unmatched items
  4. Validate the statement to close the reconciliation period

This workflow is standard across double-entry accounting systems. Odoo's implementation is clean and well-designed โ€” the main challenge is getting properly formatted data in.

Odoo versions: This guide covers Odoo 16 and 17. Import UI details may differ slightly in Odoo 14 or 15, but the CSV format requirements are the same across recent versions.

Callout: Odoo Community edition does not include automated bank feeds โ€” CSV import is the primary way to get bank data into the system. Odoo Enterprise users in supported regions can use Bank Synchronization for automatic feeds, but manual CSV import remains the most reliable method for historical data and unsupported banks.


CSV Format Requirements for Odoo Bank Import

Odoo's bank statement import accepts CSV with the following column structure:

Column NameFormatRequired?Notes
DateDD/MM/YYYY or YYYY-MM-DDYesFormat depends on Odoo language settings
Label / DescriptionTextYesTransaction description/memo
Amount DebitPositive decimalConditionalUse if splitting debit/credit
Amount CreditPositive decimalConditionalUse if splitting debit/credit
AmountSigned decimalConditionalUse instead of separate debit/credit columns
ReferenceTextOptionalCheck number or bank reference
Partner NameTextOptionalOdoo will try to match to existing partners

Odoo's date format quirk: Odoo reads dates based on your instance's language/locale settings. French Odoo instances expect DD/MM/YYYY; English instances may expect MM/DD/YYYY. If you're not sure, use YYYY-MM-DD โ€” this ISO format is recognized universally.

Debit vs credit columns: Odoo accepts either a single signed Amount column (negative for debits) or separate Amount Debit and Amount Credit columns with positive values. The separate column approach avoids sign confusion and is recommended.

QuickBankConvert outputs Odoo-compatible CSV with the correct column structure, YYYY-MM-DD dates, and properly split debit/credit amounts.


Converting Bank PDFs to Odoo-Compatible CSV

PDF bank statements cannot be imported directly into Odoo. You need to convert them first.

Banks deliver statements as PDFs for regulatory and display reasons โ€” PDFs are excellent for presenting formatted financial information but are not data files. Odoo's import tool expects structured tabular data with defined columns. A PDF is rendering instructions, not a table.

Common conversion mistakes:

  • Using a generic PDF-to-text tool that produces flat text with no column structure
  • Copy-pasting from PDF into Excel, which produces garbled columns
  • Using a general CSV converter that doesn't understand bank statement layouts (running balances, multi-line descriptions, headers/footers)

[QuickBankConvert](/) is purpose-built for bank statements. It understands:

  • Transaction rows vs. header/footer content
  • Running balance columns (which are NOT transaction amounts)
  • Multi-line descriptions that belong to a single transaction
  • Page break artifacts and bank-specific formatting

The conversion workflow:

  1. Navigate to QuickBankConvert
  2. Upload your bank PDF
  3. Select Odoo CSV output format (or Generic CSV with Debit/Credit columns)
  4. Download the converted file
  5. Spot-check 5โ€“10 rows against your original statement to verify accuracy

Step-by-Step Bank Statement Import in Odoo

Step 1 โ€” Configure Your Bank Account Journal

Before importing, ensure your bank account is set up in Odoo:

  1. Go to Accounting > Configuration > Journals
  2. If your bank journal doesn't exist, create it (Type: Bank, Currency: your account currency)
  3. Set the bank account number and IBAN if applicable

The journal is the Odoo representation of your bank account โ€” all imported transactions are tied to this journal.

Step 2 โ€” Prepare Your CSV File

Using your QuickBankConvert output (or manually formatted CSV), verify:

  • Date format matches your Odoo locale
  • Amounts in Debit/Credit columns are positive values (no negative numbers)
  • No blank rows or extraneous header/footer text
  • Character encoding is UTF-8 (Odoo is sensitive to encoding, especially for non-ASCII characters in descriptions)

Step 3 โ€” Import the Statement

  1. Go to Accounting > Banking > Bank Statements (Odoo 16+) or Accounting > Dashboard and click your bank account
  2. Click Import or Upload Statement
  3. Select your CSV file
  4. Odoo displays a column mapping interface โ€” map your columns to Odoo's expected fields
  5. Preview the import and verify the transaction count
  6. Click Import

Odoo creates a bank statement record and populates it with your imported transactions. The statement appears in your bank account's statement list as "Draft."

Step 4 โ€” Reconcile

Click Reconcile on your newly imported statement:

  • Odoo displays each statement line alongside suggested matches from your accounting records
  • Accept suggested matches for lines that correctly match existing invoices, bills, or payments
  • For lines with no suggestion, manually search for a match or create a new journal entry directly from the reconciliation screen
  • Common items requiring new entries: bank fees, interest income, standing orders not yet recorded in Odoo

When all lines are reconciled, click Validate Statement to close the period. Odoo updates your bank account's book balance and marks the statement as validated.


Reconciliation Workflow in Odoo After Import

Odoo's reconciliation engine is one of its strongest features. Key capabilities:

Reconciliation models: Pre-configured models (under Accounting > Configuration > Reconciliation Models) tell Odoo how to handle recurring statement lines automatically:

  • Bank fees โ†’ create a journal entry to bank charges expense account
  • Interest income โ†’ create a journal entry to interest income account
  • Transfer from savings โ†’ match against a specific account

Well-configured reconciliation models can auto-resolve 60โ€“80% of routine statement lines, leaving only unusual items for manual review.

Batch reconciliation: Odoo allows you to reconcile similar transactions in bulk. If multiple statement lines are the same type (e.g., monthly subscriptions all going to the same expense account), batch reconciliation handles them in one action.

Partial reconciliation: If a bank deposit matches multiple invoices (e.g., a customer paid several invoices in one ACH payment), Odoo supports splitting the statement line across multiple records.


Odoo Community vs Enterprise Bank Import Differences

FeatureOdoo CommunityOdoo Enterprise
Manual CSV importYesYes
Automatic bank feedsNo (requires third-party module)Yes (Bank Synchronization)
Reconciliation modelsYesYes
OFX importVia community moduleVia built-in connector (some regions)
Multi-currencyYesYes
SEPA direct debit importVia moduleBuilt-in

For Community edition users, CSV import via QuickBankConvert is the standard bank data entry method. Enterprise users can combine automated feeds for ongoing transactions with CSV import for historical data gaps.


Troubleshooting Odoo Bank Statement Import Issues

"Invalid Date" or Import Fails Silently

Odoo couldn't parse the dates in your CSV.

Fix: Use YYYY-MM-DD format โ€” it's recognized across all Odoo locales. QuickBankConvert outputs YYYY-MM-DD by default. If your Odoo instance is configured for DD/MM/YYYY and you're using that format, verify there's no ambiguity (e.g., the 5th of the 12th vs the 12th of the 5th).

Character Encoding Errors (Garbled Descriptions)

Bank statements from non-English-speaking countries or banks with special characters in transaction descriptions may produce garbled text.

Fix: Ensure your CSV is UTF-8 encoded. QuickBankConvert exports UTF-8 by default. If you're manually formatting a CSV, save it as UTF-8 in Excel (Save As > CSV UTF-8) or in your text editor.

Amount Column Not Recognized

Odoo shows zero amounts or rejects the import.

Fix: Verify that your Amount or Amount Debit/Credit columns contain only numeric values โ€” no currency symbols, no parentheses, no thousands-separator commas. QuickBankConvert outputs clean numeric values.

Duplicate Statement Lines After Import

You imported a period that already has transactions from a previous import or bank feed.

Fix: Before importing, check your bank statement list in Odoo for the date range you're about to import. Delete duplicate statements or trim your CSV to exclude overlapping dates.

Callout: Odoo provides a preview before finalizing the import โ€” always review the transaction count and spot-check 2โ€“3 rows before clicking Import. It's much easier to fix a formatting issue before the data is in the system than after.

For bank-specific PDF conversion, see QuickBankConvert. For related accounting software guides, see How to Import Bank Statements into Manager.io and How to Import Bank Statements into MYOB.

Frequently Asked Questions

What file formats does Odoo accept for bank statement import?
Odoo accepts CSV and OFX (Open Financial Exchange) for bank statement imports. CSV is the most universally supported format. OFX is supported in some Odoo versions via a connector module. QuickBankConvert outputs CSV formatted to Odoo's requirements.
Does Odoo support automatic bank feeds?
Odoo Enterprise includes the Bank Synchronization feature (powered by Plaid or Ponto depending on region) for automatic bank feeds. Odoo Community edition does not include automatic bank feeds by default โ€” manual CSV import is the standard approach for Community users.
What is the difference between a bank statement import and a payment import in Odoo?
A bank statement import creates a bank statement record in Odoo's accounting module that you then reconcile against existing journal entries (invoices, bills, payments). A payment import directly creates payment records. For standard bank reconciliation workflow, use bank statement import.
Can I import bank statements for multiple accounts in Odoo at once?
No. Each bank statement import is tied to a specific bank account journal in Odoo. Import statements for each account separately, selecting the correct journal during the import process.
How do I handle transactions in foreign currencies when importing into Odoo?
When importing transactions in a foreign currency, your Odoo bank account journal must be configured for that currency. The imported amounts should be in the account's currency. Odoo converts to your company's base currency using the exchange rate configured for the transaction date.

Ready to convert your bank statement?

Free. Private. Instant. Your files never leave your browser.

Convert Your Statement