Convert bank statements to OFX files
Upload a bank or credit card statement — a PDF, a scan, a phone photo, or the CSV or Excel file your bank exports — and download an OFX file with a clean payee and a unique ID on every transaction, checked against the statement's own balances before it goes anywhere near your books.
Drop your statement here
PDF, scans and phone photos, or CSV, Excel, OFX, QIF, CAMT and MT940 exports
See the result before you payAny bank, any language
Updated October 28, 2026
Step by step
- 1
Upload the statement
Drop a PDF, scan or photo, or a CSV or Excel export from online banking. You can upload several statements at once, and password-protected PDFs work too.
- 2
Check the result
Every transaction is extracted and checked: opening balance + money in − money out must equal the closing balance. Fix anything you like in the review — the check runs again on save.
- 3
Export to OFX and import it
Choose Export → OFX and open the file in your app's import screen. In most apps that is File → Import or a bank account's statement import.
What is an OFX file?
OFX (Open Financial Exchange) is a standard file format for bank and credit card transactions. Instead of columns that you have to map by hand, an OFX file labels everything: which account it belongs to, the date of each transaction, the amount, the payee, and the closing balance. That is why finance apps can import it without asking you which column is which.
OFX also removes two problems that plague CSV imports. Dates are written as YYYYMMDD, so 03/04 can never be mistaken for 4 March or 3 April, and amounts always use a decimal point with a minus sign for money out. For the background — how OFX relates to QFX and QBO, and where banks offer it — see what an OFX file is.
What's inside the OFX file you download
You get an OFX 1.0.2 file (the SGML version), which is the version most personal finance and accounting apps read. Each statement becomes one statement section in the file:
| OFX element | What's in it |
|---|---|
| Account | A checking or savings account section, or a credit card section for card statements, so the app opens it as the right account type |
| DTPOSTED | The transaction date as YYYYMMDD |
| TRNAMT | The amount: negative for money out, positive for money in |
| TRNTYPE | DEBIT or CREDIT |
| FITID | A unique ID for each transaction, used by apps to recognise transactions they already have |
| NAME | The clean payee name, e.g. Shell instead of POS 4471 SHELL OIL 57442 (OFX allows up to 32 characters here) |
| MEMO | The full description exactly as printed on the statement |
| LEDGERBAL | The statement's closing balance and its date |
Plain OFX has no Intuit bank ID, so QuickBooks Desktop won't import it. For QuickBooks Desktop, export the .qbo Web Connect file instead — see bank statements to QuickBooks.
Which apps import OFX?
OFX is supported by a long list of desktop and online apps. A few common ones, and the right file for the ones that need something else:
| App | OFX? | Notes |
|---|---|---|
| GnuCash | Yes | File → Import → Import OFX/QFX. The first time, it asks which GnuCash account the file belongs to and remembers it |
| Xero | Yes | Use the bank account's statement import. Xero also takes its own CSV layout — see bank statements to Xero |
| Wave, Sage | Yes | Upload the OFX file in the bank account's statement upload |
| MoneyMoney, HomeBank | Yes | Both import OFX alongside CSV and QIF |
| QuickBooks Desktop | Use .qbo | Needs a Web Connect (.qbo) file, which is a separate export |
| Quicken | Use QIF | Quicken's file import is built around .QFX files from participating banks, so a plain OFX file often isn't accepted. Use QIF for Quicken |
PDF to OFX: why the balance check matters
Once a transaction is imported, it sits in your register and gets reconciled against. If a converter skipped a line at a page break or read a debit as a credit, you usually find out weeks later when the account won't reconcile — and then you have to hunt for the cause.
Every statement is checked before you export it. The opening balance plus money in, minus money out, must equal the closing balance, and the running balance is checked on every row. Signs that were misread are corrected from the running balance, duplicate rows at page breaks are removed, and any row that still doesn't add up is flagged with its page number. A statement that doesn't balance uses no pages (up to 30 pages a month).
Scans and phone photos go through the same check. See scanned bank statements to Excel for tips on photos.
CSV to OFX and Excel to OFX
Many banks only offer CSV downloads, while your app imports OFX more reliably. Upload the bank's CSV or Excel file and export OFX: columns are recognised automatically, including separate debit and credit columns, decimal commas and day-first or month-first dates, so there is no template to set up.
CSV, Excel, OFX, QIF, CAMT.053 and MT940 files use no pages, because there is nothing to read from images. You still need an active plan or a page pack to export them. If you want to go the other way — open an OFX file in a spreadsheet — upload it and export Excel or CSV.
How duplicates are avoided when you import twice
Each transaction in the file carries its own FITID. Apps that support OFX use it to spot transactions they have already imported: GnuCash, for example, compares transaction IDs, dates and amounts against what is already in the account and skips exact matches. If you export the same statement again, the IDs stay the same, so a second import doesn't double up.
The one case IDs can't solve is overlap with a bank feed. Transactions that arrived through a live connection carry the bank's IDs, not ours, so the app sees them as different. Before importing, check the date of the last transaction the feed brought in, and use the export's date range to include only the period the feed doesn't cover.
Several statements in one OFX file
- Select several statements and export them together; each account gets its own statement section in one file.
- Limit the export to a date range, for example the months before your bank feed started.
- A PDF that contains several accounts or currencies is split into one statement per account before export.
- Accounts are identified by the last four digits of the account number, so the first time you import, your app may ask which account the file belongs to.
Questions
What is an OFX file and which apps import it?
OFX is a standard file for bank transactions with the account, dates, amounts and payees labelled, so apps import it without column mapping. GnuCash, Xero, Wave, Sage, MoneyMoney and HomeBank are among the many apps that accept it.
Can I convert a CSV or Excel file to OFX?
Yes. Upload the CSV or Excel file from your bank and export OFX. Structured files like these use no pages, though you need a plan or page pack to export.
Which OFX version do I get?
OFX 1.0.2, the SGML version, which has the widest support. Bank accounts and credit cards get the matching statement type.
Will importing the same OFX file twice create duplicates?
Not in apps that check transaction IDs: each transaction has a unique FITID that stays the same if you export the statement again. Overlap with a bank feed is different — limit the export to dates the feed doesn't cover.
Does the OFX file work in QuickBooks Desktop or Quicken?
Not reliably. QuickBooks Desktop needs a .qbo Web Connect file, which you can export instead (QuickBooks). For Quicken, export QIF.
Is there a free PDF to OFX converter?
Your first statement is free (up to 10 pages, one month). After that you pay, but you always see the transaction count, the balance check result and the first rows before you pay. Pages cost from $12 for 100; see pricing.
Keep reading
- What is an OFX file, and how is it different from QFX, QBO and QIF?What an OFX file is, what's inside it, how it differs from QFX, QBO and QIF, how to open one in Excel, and how to make an OFX file from a PDF statement.
- Convert bank statements to QIF for Quicken and other money appsConvert a bank statement PDF, scan or CSV to a QIF file for Quicken, GnuCash or HomeBank, with clean payees, categories and a balance check before import.
- Convert bank statements for QuickBooks Online and QuickBooks DesktopConvert PDF bank statements to a QuickBooks Online CSV or a .qbo Web Connect file for QuickBooks Desktop — categorized and balance-checked first.
- Convert a bank statement to CSVConvert a bank statement PDF, scan or photo to CSV: one clean row per transaction, categorized and balance-checked. Comma or semicolon, any date format.
- Convert a PDF bank statement and import it into XeroImport any PDF bank or credit card statement into Xero: convert it to a Xero statement CSV, check it balances, then import it in a few clicks.
Your next statement takes seconds.
See what we find on your statement before you pay.