Bank statement to OFX
An OFX file your ledger already reads.
Convert a PDF bank statement into a plain OFX document with no Intuit header and no partner ID: the file Xero, GnuCash, and Moneydance import directly.
50 free page credits · No card · Cancel anytime
- OFX 1.02 SGML
- FITIDs for de-duplication
- No Intuit header
Export transactions
1,284 rowsFormat
| Date | Description | Amount |
|---|---|---|
| 2025-10-24 | STRIPE PAYOUT 4af2c9 | +4,820.00 |
| 2025-10-23 | AWS EMEA SARL | −1,204.00 |
| 2025-10-22 | WHOLE FOODS MKT | −112.88 |
PDF statement you upload
24/10 STRIPE PAYOUT 4af2c9........4,820.00
23-10 AWS EMEA SARL us-east-1 1,204.00-
22 OCT WHOLE FOODS MKT #214 112.88
21/10 UBER *TRIP..............24.40
20-OCT-2025 GUSTO PAY 9931 18,440.00
[illegible: scan quality]
OFX file you download
<STMTTRN>
<TRNTYPE>CREDIT
<DTPOSTED>20251024
<TRNAMT>4820.00
<NAME>Stripe
<MEMO>STRIPE PAYOUT 4af2c9
</STMTTRN>
<STMTTRN>
<TRNTYPE>DEBIT
<DTPOSTED>20251023
<TRNAMT>-1204.00
<NAME>Amazon Web Services
<MEMO>AWS EMEA SARL us-east-1
</STMTTRN>
… 3 more transactions
OFX and QBO are the same format wearing different badges.
A .qbo file is an OFX document with an Intuit web-connect header stapled to the front, which is why QuickBooks accepts it and other software often does not. Point that same file at Xero or GnuCash and the header is noise; point a plain OFX file at Quicken and it is rejected for the opposite reason: Quicken checks for an institution identifier that only an Intuit partner can issue. So the question is never really "OFX or QBO", it is which of the two your software was built to open.
How it works
From PDF to OFX, screen by screen
- 01
Upload the PDF
Drag in the statement: scanned, multi-page, and password-protected PDFs all work, up to 50 MB each.

Drop the file in, forward the bank's email to your private import address, or post it to the API. - 02
Confirm the import
Review the queued file and set whether statements carrying warnings still count in your analytics. Nothing is read until you confirm.

The warning types that will still count toward analytics are named before anything is extracted. - 03
Let it parse and reconcile
Transactions are extracted, the bank is detected, and the opening and closing balances are checked against the rows, because an OFX file with a missing page reconciles wrong in whatever opens it.

The activity panel names the stage and the seconds elapsed as the statement moves through the queue. - 04
Fix anything before it hardens
A description you correct here is the description the OFX carries. Edit in place or across a shift-clicked range, and turn a repeated fix into a rule so the next month arrives right.

Three rows selected, one menu: category, tags, merchant, flag, or exclude from analytics. - 05
Export OFX
Pick OFX rather than QuickBooks and the file comes out as plain OFX 1.02: the same reviewed rows, without the Intuit header.

OFX and QuickBooks sit side by side in the format list. Same data, different header, different software.
What ends up inside the file
OFX 1.02 SGML, not XML
The 1.02 SGML profile most desktop finance software still expects: unclosed tags, the OFX header block, and a single <STMTTRN> per transaction.
No Intuit header
The web-connect header and INTU.BID that make a file a .qbo are left off. That is the whole difference, and it is why non-Intuit software opens this one.
FITIDs on every transaction
A stable identifier per row, so re-importing an overlapping month adds what is new instead of doubling what you already had.
TRNTYPE and signs that agree
Debits negative, credits positive, and a TRNTYPE that matches the sign, so the importing ledger does not have to guess direction from the description.
Full descriptions preserved
NAME carries the resolved merchant and MEMO carries the original narration, so nothing is thrown away to fit a short field.
Export only what you scoped
Filter to one account, one month, or one category and the OFX contains those rows, not the whole database every time.
Which file does your software want?
All three are the same format underneath. What differs is the header, and which programs check for it.
| Software | File it accepts |
|---|---|
| Xero | OFX. Xero imports OFX, QIF, and CSV, and recommends OFX where the bank offers it. |
| GnuCash | OFX, via File → Import → Import OFX/QFX transactions. |
| Moneydance | OFX. It also reads QFX, OFC, and QIF. |
| QuickBooks Online and Desktop | QBO: OFX plus the Intuit web-connect header. Use the QBO export instead. |
| Quicken | QFX only. Quicken verifies an institution identifier issued to Intuit partners, so a plain OFX file will not import. |
FAQ
Common questions
What is an OFX file?
Open Financial Exchange is the interchange format banks and finance software use for transaction data. An OFX file is a text document containing one <STMTTRN> block per transaction, each carrying a date, an amount, a type, and an identifier.
What is the difference between OFX and QBO?
A .qbo file is an OFX document with an Intuit web-connect header and a bank identifier added at the top. The transactions inside are identical. QuickBooks requires the header; most other software either ignores it or refuses the file because of it.
Can I import a plain OFX file into Quicken?
No. Quicken expects QFX, which is OFX plus an institution identifier issued to Quicken partner banks, and it verifies that identifier when the file is opened. If Quicken is the destination, the file has to come from a participating institution rather than from a converter.
Will re-importing the same month create duplicates?
Every transaction carries a FITID, the field OFX defines for exactly this. Software that honours it (Xero, GnuCash, and Moneydance among them) matches on that identifier and skips rows it already has.
Does it work with scanned statements?
Yes. Scanned PDFs go through OCR before parsing, and multi-page and password-protected files are supported up to 50 MB each.
Should I categorize before exporting?
Categories are not part of the OFX schema, so they do not travel in the file. What does travel is the description, the merchant name, and the sign, so it is worth correcting those here, where bulk editing is fast, before the file leaves.
Converting a statement from a specific bank?
Written up for the format each of these banks prints.
Keep exploring
Bank Statement → Excel
Download a clean XLSX of every parsed transaction.
Bank Statement → CSV
Export filtered rows as CSV for any downstream tool.
PDF → QBO
One-click QBO conversion for QuickBooks Desktop and Online.
Live example
A real Bank of America statement read into transactions you can trace back to the page.
Bank Statement → QuickBooks
Categorize first, then export an OFX/QBO QuickBooks imports.
Take the file, not the header.
Upload a statement, check the rows, and download plain OFX for whatever you actually keep your books in.