bank statement → OFX

Odoo Bank Statement Import Format: Convert PDF Bank Statements to OFX, QIF and CSV for Odoo Accounting

Turn a PDF or scanned bank statement into the OFX, QIF or CSV file Odoo Accounting reads, then import it into the bank journal and reconcile.

OFX and QIF, both native to Odoo
Up to 50 statements per batch
256-bit encryption

PDF, JPG, PNG, BMP, HEIC, TIFF

Upload your bank statement

Extract:
|
|
<OFX> for MS Money & accounting software, <CSV> for spreadsheets

How the Odoo bank statement import works

Odoo Accounting imports bank transactions from five file formats: CAMT.053, CSV, OFX, QIF and the Belgian CODA format. PDF is not among them, so a statement downloaded from online banking has to be converted first. You upload the file from the bank journal on the Accounting Dashboard using Import File, set the formatting options, map the columns to Odoo fields where the format requires it, then run Test before importing. OFX is usually the best target, because Odoo reads it natively and it carries a unique ID on every transaction that CSV and QIF do not.

Why your bank statement will not import into Odoo

Odoo is generous about formats compared to most ERPs, and still will not read the one file almost every finance team actually holds.

Odoo Does Not Read PDFs

The supported import formats are CAMT.053, CSV, OFX, QIF and CODA. A PDF statement, whether downloaded from online banking or scanned from paper, is not one of them, and no setting in Odoo Accounting changes that.

No Bank Feed For Many US Accounts

Automatic bank synchronization does not reach every institution, and community banks and credit unions are the most common gaps. When there is no feed, importing a file is the only route into the bank journal.

CSV Mapping Has To Be Redone

A CSV import runs through a wizard where you set formatting options and map each column to an Odoo field. That is fine once, but a spreadsheet whose column order changes between months means repeating the mapping and re-checking it every time.

CODA And CAMT Are Not US Formats

CODA is the Belgian statement format and CAMT.053 is the ISO 20022 format used widely in Europe. Neither is something a US bank typically hands a small or mid-sized business, which leaves OFX, QIF and CSV as the realistic options.

QIF Carries No Transaction ID

QIF imports into Odoo, but the format has no unique identifier per transaction. If a period is imported twice, nothing in the file tells Odoo it has seen those lines before, and the bank journal ends up with duplicates.

Download Windows Are Short

Most banks serve roughly the last 90 days of activity for download while keeping years of statements available as documents. Loading prior periods for a migration or a catch-up means working from statements rather than from the download screen.

Producing a file the Odoo import wizard accepts

The conversion closes one gap: you have a PDF, and Odoo wants OFX, QIF or a mappable CSV.

OFX, Native To Odoo

Open Financial Exchange is one of the five formats Odoo imports directly. It needs no column mapping, because the structure is already defined inside the file rather than inferred from a spreadsheet header.

Transaction IDs Included

OFX carries a unique identifier on every transaction. That is what gives Odoo something to recognize when statement periods overlap, which neither CSV rows nor QIF entries can offer.

QIF When You Need It

QIF is also on the supported list, which matters when migrating from older finance software. Export QIF here if your Odoo workflow or a legacy dataset expects it.

Scanned Statements Too

Image-only PDFs, scans and photographed pages are read the same way as text PDFs, which matters most for older periods that exist on paper and nowhere else.

A Year In One Batch

Up to 50 statements per upload, each up to 50MB, with an option to merge one account's monthly PDFs into a single continuous file before extraction.

Balances Checked

Each conversion is validated against the statement balances, so a misread amount surfaces before the file reaches the Odoo import wizard rather than during reconciliation.

Import a bank statement into Odoo in 4 steps

Convert first, then import into the bank journal the account belongs to.

1

Convert the statement

Upload the PDF or scanned statement here and export OFX, or QIF, or CSV if your workflow already has a mapping you trust.

Tip: OFX is the least fragile choice, because it does not depend on matching a column layout.

2

Open the bank journal

On the Accounting Dashboard, find the bank journal for the account and click Import File. The same import is reachable from the ellipsis icon on the journal card.

Tip: Import into the journal that matches the statement account, not a general one, or reconciliation will have nothing to match against.

3

Set the options and map the columns

Choose the formatting options the wizard asks for, and where the format requires it, map each column in the file to its related Odoo field.

Tip: An OFX file skips most of this, since its structure is already defined.

4

Test, then import

Run the Test the wizard offers before committing, confirm the transaction count and dates look right, then import and move on to reconciliation.

Tip: Test is there precisely so a bad mapping never reaches the journal. Use it every time.

Who imports statements into Odoo this way

Mostly teams running Odoo Accounting on accounts or periods a bank feed does not cover.

Teams Migrating Onto Odoo

A new Odoo implementation needs prior-period history so opening balances reconcile, and that history lives in statements rather than inside a 90 day download window.

Accounts At Community Banks

Smaller US institutions often serve a PDF statement and nothing else, with no supported synchronization, so converting the statement is the only way into the bank journal.

Odoo Community Deployments

Self-hosted and community deployments frequently run without an automated feed by choice, and a clean file import keeps the bank journal current without adding a connection to maintain.

Year End And Audit Support

Accountants asking for prior periods work from archived statements, and a converted file ties each line back to the source document.

What file formats does Odoo accept for bank statements?

Odoo Accounting imports bank transactions from five formats: CAMT.053, CSV, OFX, QIF and CODA. That is a wider list than most accounting systems offer, and notably it includes both of the formats a converted bank statement is most naturally exported as. PDF is not on the list, which is the one detail that catches people out, since a PDF is what online banking actually hands you.

Which of the five makes sense depends almost entirely on where you are. The table below is the short version for a US account.

FormatImports into OdooPractical for a US accountWhat to know
OFXYesBest choiceStructured, no column mapping, and carries a unique ID on every transaction.
QIFYesWorkableOlder and simpler than OFX. No unique transaction ID, so re-imports can duplicate.
CSVYesFallbackNeeds formatting options and column mapping in the wizard. Date ambiguity is the usual failure.
CAMT.053YesRare in the USThe ISO 20022 XML format. Common in Europe, uncommon from US banks below the corporate tier.
CODAYesNoThe Belgian statement format. Not something a US bank issues.
PDFNoConvert firstNot a supported import format in any Odoo edition. Convert to OFX, QIF or CSV.

Can Odoo import an OFX file?

Yes. Open Financial Exchange is one of the formats Odoo Accounting reads directly, alongside CAMT.053, CSV, QIF and CODA. Because OFX describes its own structure, the import does not depend on you correctly mapping a spreadsheet column to an Odoo field, which removes the step where most CSV imports go wrong.

It also removes a subtler risk. An OFX file assigns every transaction a unique identifier, so an overlapping statement period has something in it that can be recognized as already seen. A CSV row and a QIF entry carry no such identity, which is why re-importing a spreadsheet is the classic way to end up with a bank journal holding two copies of March. There is more on that structure on the OFX file format page.

How do I import a bank statement into Odoo?

Go to the Accounting Dashboard, find the bank journal for the account the statement belongs to, and click Import File. The same import is reachable from the ellipsis icon on the journal card, and from the transaction list through the gear icon and Import records. Upload the converted file, set the formatting options the wizard asks for, and where the format needs it, map each column in the file to its related Odoo field.

Then use Test before you import. The wizard offers it specifically so a wrong mapping or a misread date format can be caught while it is still a preview rather than a set of journal entries you have to unwind. Check that the transaction count matches the statement and that the dates fall in the period you expect, and only then run the import.

Why the CSV route is the fussiest of the three

CSV feels flexible and behaves like the opposite. Every import runs through formatting options and a column mapping step, and both have to be right for the file in front of you. When a bank changes its export layout, or a spreadsheet gets an extra column somewhere along the way, the mapping you saved last month no longer describes this month's file.

Dates are the specific hazard, because they fail quietly rather than loudly. A file where the day and month can be read either way will import without complaint and put transactions in the wrong period, and the only signal is that reconciliation stops tying out. OFX avoids the whole category of problem by stating its dates unambiguously inside the file. If a spreadsheet is genuinely the destination rather than a step on the way, the PDF bank statement to CSV converter covers that output directly.

Loading history a bank feed cannot reach

This is what drives most manual imports. Bank download screens typically serve about 90 days of activity while the statement archive runs for years, so any Odoo migration, any account that was never connected, and any auditor asking about a prior period lands outside what a feed can supply. The statements are the complete record, and they are always available.

For that kind of catch-up, convert the monthly PDFs as one batch rather than one at a time. Up to 50 files go into a single upload, and when they all belong to the same account they can be merged before extraction, so twelve monthly statements come back as one continuous file and one import into the bank journal instead of twelve. The bulk bank statement converter page covers how batching and merging behave.

Checking the import before you reconcile

Two checks catch nearly everything. Compare the transaction count and the closing balance of each converted statement against the printed document, because a matching closing balance is strong evidence that every line between the opening and closing figures came through correctly. Then run the wizard's Test step and read what it is about to create before committing it.

If a period does end up imported twice, deal with it before reconciling rather than after, and prefer OFX for anything you might reload. Odoo will happily accept the same QIF or CSV file twice, because nothing in those formats says the transactions are the same ones. The same problem shows up in every accounting system that accepts spreadsheets, and it is covered in more depth for a different one on the QuickBooks bank statement import page.

Odoo Bank Statement Import: Common Questions

Odoo Accounting imports CAMT.053, CSV, OFX, QIF and the Belgian CODA format. PDF is not a supported import format, so a statement downloaded from online banking has to be converted to one of those five before Odoo will read it. For a US account, OFX, QIF and CSV are the realistic choices.

Yes. OFX is one of the five bank statement formats Odoo Accounting reads directly. It is usually the best target for a converted statement, because it needs no column mapping and it carries a unique identifier on every transaction, which CSV rows and QIF entries do not.

No. PDF is not among the formats the Odoo bank statement import accepts, and no setting changes that. Converting the PDF to OFX, QIF or CSV first is the practical route, and scanned or photographed statements convert the same way as text PDFs.

On the Accounting Dashboard, open the bank journal for the relevant account and click Import File. Upload the converted file, set the formatting options, map the file columns to their related Odoo fields where the format requires it, then run Test and import the transactions.

The bank statement file import is part of Odoo Accounting rather than an add-on, and the supported format list is documented without an edition restriction. Automatic bank synchronization is a separate feature from importing a file, and many self-hosted deployments rely on file import by choice.

Almost always the formatting options or the column mapping. A date column that can be read two ways will import without an error and place transactions in the wrong period. Use the wizard's Test step first, and prefer OFX, which states its dates unambiguously inside the file.

OFX, in almost every case. Both import into Odoo, but OFX is the newer and more structured of the two and assigns each transaction a unique identifier. QIF has no such identifier, so re-importing an overlapping period produces duplicates that nothing in the file can prevent.

Odoo supports both formats, but neither is common on a US account. CAMT.053 is the ISO 20022 XML statement format used widely in Europe and mostly at the corporate tier elsewhere, and CODA is specific to Belgian banks. US businesses generally end up using OFX, QIF or CSV.

There is no limit imposed by the file import itself, which is what makes it useful for migrations and catch-up work. The practical limit is what your bank still provides, and download screens usually cover about 90 days while the statement archive goes back years.

Yes, by converting them as a batch first. Up to 50 statements go into a single upload here, and when they all belong to one account they can be merged before extraction, so a year of monthly PDFs becomes one continuous file and one import into the bank journal.

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 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 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