Odoo Bank Statement Converter: Import Bank Statements into Odoo as CSV, OFX, or QIF

Odoo Accounting takes camt.053, CSV, OFX, QIF, and CODA files, but never a PDF. Upload your PDF statement here and download a clean file the Odoo bank journal importer maps in one pass, with the date, label, and amount columns it expects. Start free, no credit card.

Free to try, no credit card
256-bit encryption
CSV, OFX, and QIF output

PDF, JPG, PNG, BMP, HEIC, TIFF, MT940

Upload your bank statement

Extract:
|
|

Odoo bank statement import, in short

Odoo Accounting imports bank transactions from camt.053, CSV, OFX, QIF, and the Belgian CODA format, and it will not read a PDF. To load a statement, convert the PDF into a CSV, then go to the Accounting dashboard, open the bank journal, and click Import File. Odoo asks you to set the formatting options, map your columns onto its fields, and run a Test before committing the import.

Why Importing a Bank Statement into Odoo Goes Wrong

Odoo's importer is flexible, which is exactly why it fails in so many different ways. Nearly all of the pain comes from the file you feed it.

Odoo Does Not Import PDFs

The supported formats are camt.053, CSV, OFX, QIF, and CODA. The statement your bank actually sends is a PDF, so something has to convert it first.

You Map the Columns Yourself

For a CSV, Odoo makes you set formatting options and map each file column onto an Odoo field. A file with merged or shifted columns turns that into guesswork.

Bank Feeds Are Not Native for Everyone

Odoo's online synchronization does not reach every US institution, and community connectors such as the OCA Plaid module exist precisely because coverage has gaps.

CODA and camt Need Extra Modules

In many deployments the format specific importers are separate modules. The OCA framework module only provides the plumbing, and OFX or camt support installs alongside it.

Statement Lines Must Balance

Odoo reconciles a statement against a starting and ending balance. Rows dropped by a bad copy and paste leave the statement out of balance and block validation.

Historical Data Has to Come from PDFs

Migrating onto Odoo means loading prior periods. Feeds do not backfill, so opening history comes off the statement PDFs or not at all.

How BankXLSX Prepares Your Statement for Odoo

Upload the PDF and the converter reads the transaction table rather than the page layout, then writes a file the Odoo importer maps cleanly.

Import Ready Columns

Each transaction becomes one row with date, label or description, and amount, the three fields the Odoo statement importer needs.

CSV, OFX, or QIF

Download in whichever format suits you. OFX and QIF carry their own structure, so Odoo needs less mapping from you.

Balances Preserved

Opening and closing balances come through with the transactions, so the imported statement validates instead of sitting out of balance.

One Date Format

Dates are normalized across the whole file, so the mapping does not break partway down a multi page statement.

Full Year in One Pass

Convert a stack of monthly PDFs into one continuous transaction list, which is how most Odoo migrations load opening history.

Private by Default

256-bit encryption in transit and you can delete your uploaded files whenever you want.

Import a Bank Statement into Odoo in 3 Steps

No software to install and no credit card to start.

1

Convert the PDF

Upload your PDF statement above and download the result as CSV, OFX, or QIF.

Tip: OFX means less mapping in Odoo.

2

Open the Bank Journal

From the Accounting dashboard, find the bank journal and click Import File, also reachable from the ellipsis menu on the journal card.

Tip: Import into the right journal.

3

Map, Test, Import

Set the formatting options, map your columns onto Odoo's fields, run the Test, then import. Lines arrive ready for reconciliation.

Tip: Always run the Test first.

Who Converts Bank Statements for Odoo

Odoo runs the back office for a growing number of US small and mid sized businesses, and the accounting module is usually the last piece to be switched on, which is when statement history has to be loaded.

Odoo Implementation Partners

Load a client's opening bank history during a go live, when no feed exists yet and everything comes from statement PDFs.

Bookkeepers and Accountants

Catch up months of unreconciled bank lines for a client whose Odoo bank feed was never connected.

Finance Managers

Bring in an account at a bank Odoo's online synchronization does not support, without keying rows by hand.

Controllers

Reconcile a period against the authoritative PDF statement rather than a feed that may have missed items.

Common Search Terms

odoo bank statement converter odoo bank statement import odoo bank statement import format odoo import bank statement odoo bank statement template

Transaction Types We Handle

Customer payments received
Supplier payments
ACH debits and credits
Card purchases
Bank fees
Transfers between journals
Interest credits
Loan repayments

Last updated July 2026

What formats does Odoo accept for bank statement import?

Odoo Accounting supports importing bank transactions from camt.053, CSV, OFX, QIF, and CODA, the Belgian coded statement of account. PDF is not supported. That list has been stable across Odoo 17 and Odoo 18, so if you are on a recent version the answer does not change.

FormatSupported by OdooNotes
CSVYesYou map the columns and run a Test before importing.
OFXYesOpen Financial Exchange. Structure is built in.
QIFYesThe older Quicken interchange format.
camt.053YesThe ISO 20022 XML statement, described by Odoo as the SEPA recommended cash management format.
CODAYesBelgian only. Not relevant to US banks.
PDFNoConvert it to CSV, OFX, or QIF first.

How do I import a bank statement in Odoo?

Open the Accounting dashboard, locate the bank journal, and click Import File. The same action sits behind the ellipsis menu on the journal card. Odoo uploads the file, then asks you to configure the formatting options and map each column of your file onto an Odoo field. Run the Test to preview how the lines will land, then complete the import. The transactions appear as statement lines waiting to be reconciled against invoices, bills, and payments.

Why a converted CSV beats a hand built one

Odoo will happily import a spreadsheet you typed yourself, and it will just as happily import one that is silently missing three rows. Because Odoo validates a statement against its opening and closing balance, a dropped line does not fail loudly at import, it fails later when the statement will not balance and you have to hunt for the difference. Converting straight from the PDF keeps every row and both balances, which is the whole point.

The other common trap is the amount column. A statement that prints debits and credits in two columns has to become something Odoo can read as one signed value. A converter that understands the statement layout gets this right; a copy and paste usually turns withdrawals into positive numbers and inflates your bank balance.

What about the OCA bank statement import modules?

Odoo's community maintains the OCA bank-statement-import collection, which extends the native options. The framework module, account_statement_import, provides only the plumbing, and format specific companions add the actual support: account_statement_import_camt for ISO 20022, account_statement_import_ofx for OFX, and account_statement_import_sheet_file for TXT, CSV, and XLSX. There is also a set of online connectors including a Plaid module for US bank feeds.

Two things are worth knowing before you go looking. There is no OCA module that imports a PDF bank statement, and the collection does not carry a QIF or MT940 importer either. So converting the PDF outside Odoo is not a workaround for a missing module, it is the supported path.

Does Odoo import camt.053?

Yes, natively. If your bank has moved to ISO 20022 statement reporting you can feed the XML straight into the bank journal. If you would rather inspect the entries as rows first, or the file spans several accounts, convert it with the camt.053 to Excel converter and import the resulting CSV. Note that Odoo describes camt.053 as the SEPA recommended format, which is a fair description of where it came from, though US banks now issue it too following the migration away from MT940.

Loading opening history during an Odoo go live

Most conversions to Odoo happen mid year, which means the bank journal starts empty while the business has months of activity behind it. Feeds do not backfill, so the opening history comes from statement PDFs. Convert each month, concatenate them, and import once per journal, then reconcile forward. The guide to reconciling multiple bank accounts covers doing this across several journals at once, and transaction categorization helps clean descriptions before they hit the ledger. If you support clients on other platforms, there are matching guides for the Zoho Books bank statement converter, the NetSuite bank statement converter, and the Xero bank statement converter. Starting from a PDF? Use the bank statement converter.

The documents around the bank feed

An Odoo ledger is only as good as the paperwork behind each line. Supplier bills still have to be read and coded, which teams handling any real volume do by automating accounts payable rather than typing them, and the expense receipts your staff hand in can be turned into structured rows with receipt data extraction.

Why People Pick BankXLSX for Odoo Imports

3 formats
CSV, OFX, or QIF for Odoo
Balances
preserved so statements validate
Under 1 min
to convert a typical statement

Security & Privacy

  • 256-bit encryption on every upload
  • Delete your files at any time
  • No reselling or sharing of your financial data
  • Runs in your browser, nothing to install

Odoo Bank Statement Import: Common Questions

From the Accounting dashboard, open the bank journal and click Import File, which is also available from the ellipsis menu on the journal card. Upload a camt.053, CSV, OFX, QIF, or CODA file, set the formatting options, map your columns onto Odoo's fields, run the Test, and then import.

No. Odoo Accounting supports camt.053, CSV, OFX, QIF, and CODA, and PDF is not among them. There is no OCA community module that imports PDF statements either. Convert the PDF into a CSV, OFX, or QIF file first, then import that through the bank journal.

camt.053 (which Odoo calls the SEPA recommended cash management format), CSV, OFX, QIF, and CODA for Belgian accounts. This list is the same in Odoo 17 and Odoo 18. CSV requires you to map columns yourself, while OFX and QIF carry more of the structure for you.

At minimum a date, a label or description, and an amount, with money out expressed as a negative value. Odoo asks you to map each column onto its own fields during import, so the header names do not have to match exactly, but the data has to be consistent down the whole file.

Odoo validates a statement against its opening and closing balance, so a missing or duplicated line shows up as a difference rather than an import error. This is almost always caused by rows lost in a manual copy and paste. Converting directly from the PDF keeps every transaction and both balances.

Yes, natively, and the OCA collection also ships account_statement_import_camt for extended handling. If your bank has migrated to ISO 20022 statement reporting you can import the XML directly into the bank journal without converting it first.

Odoo offers online synchronization, but coverage is not universal, which is why the community maintains connectors including an OCA Plaid module. Where a feed is unavailable or an account is closed, importing a converted statement file is the supported path.

Convert the statement PDFs for the periods you need into one CSV, then import it into the matching bank journal. Bank feeds do not backfill history from before the day you connect them, so a go live or a migration onto Odoo almost always starts with converted statement files.

Related Resources

Other Bank Statement Converters

ICICI Bank JPMorgan Chase Bank of America Citigroup Wells Fargo Goldman Sachs Morgan Stanley U.S. Bancorp PNC Financial Services Truist Financial Capital One TD Bank Charles Schwab Fidelity Vanguard E*TRADE TD Ameritrade Bank of New York Mellon State Street BMO USA Ally Financial Regions Financial Fifth Third Bank Huntington Bancshares KeyBank Citizens Financial Group First Citizens BancShares Synchrony Financial M&T Bank First Horizon Cathay Bank USAA Navy Federal Comerica Zions Bancorporation East West Bancorp First National of Nebraska Cullen Frost Bankers BOK Financial Fulton Financial Associated Banc-Corp Valley National Bancorp Wintrust Financial First Midwest Bancorp Commerce Bancshares UMB Financial Pinnacle Financial Partners Webster Financial Cadence Bank Old National Bancorp First Interstate BancSystem Umpqua Holdings First Hawaiian Bank Prosperity Bancshares SouthState Corporation First Merchants First Bank Holding Glacier Bancorp First Financial Bancorp Independent Bank Columbia Banking System Western Alliance Bancorporation Pacific Premier Bancorp Bank OZK United Community Banks Customers Bancorp Texas Capital Bancshares SVB Financial Group Signature Bank First Republic Bank New York Community Bancorp Sterling Bancorp First Bank Bank United First Commonwealth Financial Flagstar Bank Synovus Bank Santander Bank Commonwealth Bank (CommBank) ANZ Bank Westpac NAB ServisFirst Bancshares Renasant Corporation Simmons First National Trustmark Corporation First Busey Community Bank System First Mid Bancshares Ameris Bancorp Hancock Whitney First BanCorp Third Coast Bancshares Home Bancshares Byline Bancorp Simmons Bank United Bankshares Peoples United Financial American Express HSBC Bank USA