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.
Upload your bank statement
Drop file here or click to upload
PDF, JPG, PNG, BMP, HEIC, TIFF, MT940
Uploading...
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.
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.
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.
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.
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.
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.
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.
Migrating onto Odoo means loading prior periods. Feeds do not backfill, so opening history comes off the statement PDFs or not at all.
Upload the PDF and the converter reads the transaction table rather than the page layout, then writes a file the Odoo importer maps cleanly.
Each transaction becomes one row with date, label or description, and amount, the three fields the Odoo statement importer needs.
Download in whichever format suits you. OFX and QIF carry their own structure, so Odoo needs less mapping from you.
Opening and closing balances come through with the transactions, so the imported statement validates instead of sitting out of balance.
Dates are normalized across the whole file, so the mapping does not break partway down a multi page statement.
Convert a stack of monthly PDFs into one continuous transaction list, which is how most Odoo migrations load opening history.
256-bit encryption in transit and you can delete your uploaded files whenever you want.
No software to install and no credit card to start.
Upload your PDF statement above and download the result as CSV, OFX, or QIF.
Tip: OFX means less mapping in Odoo.
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.
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.
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.
Load a client's opening bank history during a go live, when no feed exists yet and everything comes from statement PDFs.
Catch up months of unreconciled bank lines for a client whose Odoo bank feed was never connected.
Bring in an account at a bank Odoo's online synchronization does not support, without keying rows by hand.
Reconcile a period against the authoritative PDF statement rather than a feed that may have missed items.
Last updated July 2026
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.
| Format | Supported by Odoo | Notes |
|---|---|---|
| CSV | Yes | You map the columns and run a Test before importing. |
| OFX | Yes | Open Financial Exchange. Structure is built in. |
| QIF | Yes | The older Quicken interchange format. |
| camt.053 | Yes | The ISO 20022 XML statement, described by Odoo as the SEPA recommended cash management format. |
| CODA | Yes | Belgian only. Not relevant to US banks. |
| No | Convert it to CSV, OFX, or QIF first. |
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.
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.
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.
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.
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.
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.
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.
Convert statements for Zoho Books.
Convert ISO 20022 camt.053 XML statements.
Get started converting bank statements to spreadsheets.
USD
per month
billed as
$288 yearly
Choose speed vs accuracy when extracting
| Base AI Faster | 2,500 pages |
| Pro AI Best accuracy | 500 pages |
Scale statement conversion across your team with automation.
USD
per month
billed as
$888 yearly
Choose speed vs accuracy when extracting
| Base AI Faster | 10,000 pages |
| Pro AI Best accuracy | 2,000 pages |
Enterprise-grade bank statement conversion and controls.
USD
per month
billed as
$ yearly
Choose speed vs accuracy when extracting
| Base AI Faster | pages |
| Pro AI Best accuracy | pages |