Bank statement to QuickBooks
Categorize first, then import.
Parse a PDF bank statement, clean up merchants and categories while the data is still easy to edit in bulk, then export an OFX/QBO file QuickBooks imports directly.
50 free page credits · No card · Cancel anytime
- OFX/QBO export
- Bulk categorization
- Duplicate-safe FITIDs
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]
QBO file QuickBooks imports
<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
Importing uncategorized rows just moves the work.
A statement dumped straight into QuickBooks arrives as a wall of uncategorized bank feed entries, and you categorize them one at a time in an interface built for reviewing a handful of transactions a day. Doing the cleanup before the import (where you can shift-click a hundred rows and recategorize them at once, or write a rule that fixes them permanently) is dramatically faster for the same result.
How it works
The pre-categorized import workflow
- 01
Upload the statement
Drag in the PDF: scanned, multi-page, and password-protected files all work, up to 50 MB each.

Upload it yourself, or forward the bank's statement email to a private address and let it land on its own. - 02
Let it parse and reconcile
Transactions are extracted and checked against the statement's opening and closing balances, so a dropped page surfaces here rather than in your books.

The queue reports the stage it is on. A statement this size clears in seconds; a year of them runs unattended. - 03
Categorize in bulk
Use search, filters, shift-click range selection, and rules to get categories right across hundreds of rows at once.

Three rows selected, one menu: category, tags, merchant, flag, or exclude from analytics. - 04
Export OFX/QBO
Download the reviewed transactions as an OFX 1.02 file, or as a .qbo carrying the Intuit web-connect header.

QuickBooks selected. The preview is the same data you just reviewed, in the order the file will carry it. - 05
Import into QuickBooks
Upload the file in QuickBooks Online, or use Import Web Connect Files in QuickBooks Desktop.
What makes the import go smoothly
Rules instead of repetition
Encode a categorization decision once (with inclusion phrases, exclusion keywords, and merchant scoping) and apply it retroactively to every statement you have already parsed.
Standards-compliant OFX
Exports are OFX 1.02 SGML with proper TRNTYPE handling, so debits and credits carry the sign QuickBooks expects.
Stable transaction IDs
Every transaction carries a FITID, which is the field QuickBooks uses to recognize a transaction it has already seen and avoid importing it twice.
Import one slice at a time
Export scoped to your active filters (a single month, a single account, or a single category) instead of re-importing everything.
Full descriptions preserved
The payee name field respects the OFX 32-character limit while the full cleaned narration is carried in the memo, so nothing is lost to truncation.
Validated before export
Balance reconciliation runs on the parse, so you find a missing page before it becomes a discrepancy inside QuickBooks.
How BankFlow fields map into QuickBooks
| OFX field | What BankFlow puts there |
|---|---|
| DTPOSTED | The parsed transaction date, normalized from whatever format the statement used. |
| TRNAMT | The signed amount: negative for debits, positive for credits. |
| TRNTYPE | DEBIT or CREDIT, derived from the sign of the amount. |
| NAME | The payee, capped at the OFX 1.02 limit of 32 characters. |
| MEMO | The full cleaned narration, which has no length limit in the format. |
| FITID | A stable per-transaction identifier that QuickBooks uses for duplicate detection. |
| CURDEF | One currency declared for the whole statement download. |
Account and routing identifiers are placeholders in the export. You select the target account inside QuickBooks during import.
FAQ
Common questions
How do I import a PDF bank statement into QuickBooks?
QuickBooks does not read statement PDFs. Convert the PDF first: parse it in BankFlow, categorize the transactions, export an OFX or QBO file, then import that file into QuickBooks Online or QuickBooks Desktop.
OFX or QBO, which should I pick?
The transaction body is identical. Choose .qbo for QuickBooks Desktop's Import Web Connect Files flow, which expects the Intuit web-connect header and the .qbo extension. Plain OFX works elsewhere.
Will importing twice create duplicates?
Each transaction carries a FITID, the field QuickBooks uses to recognize transactions it has already imported. That is what duplicate detection relies on, though you should still review the import preview.
Do I have to categorize before exporting?
No, but it is the point of the workflow. Bulk editing hundreds of rows in BankFlow's ledger is much faster than categorizing them one by one in the QuickBooks bank feed.
Can I import statements from multiple accounts?
Yes: export one account at a time using the account source filter, and import each file against its matching QuickBooks account. Each OFX download declares a single currency.
Does this work with QuickBooks Online and Desktop?
Yes. QuickBooks Online accepts the OFX/QBO upload directly; QuickBooks Desktop uses Import Web Connect Files with the .qbo variant.
Converting a statement from a specific bank?
Written up for the format each of these banks prints.
Keep exploring
Bank Statement → Xero
OFX for Import a Statement, including pre-feed history.
Bank Statement → GnuCash
Plain OFX for File → Import → Import OFX/QFX.
Bank Statement → Moneydance
OFX for the accounts Direct Connect cannot reach.
Bank Statement → Sage
OFX scoped to one account, the way Sage reads it.
Bank Statement → Wave
The file format Wave recommends over CSV.
Clean books, fewer clicks.
Parse a statement, categorize it in bulk, and hand QuickBooks a file that is already sorted out.