Skip to main content
BankFlow logoBankFlow

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 rows

Format

CSVExcelJSONOFXQuickBooks
DateDescriptionAmount
2025-10-24STRIPE PAYOUT 4af2c9+4,820.00
2025-10-23AWS EMEA SARL−1,204.00
2025-10-22WHOLE FOODS MKT−112.88
1,284 rows · 3 columnsExport QuickBooks

PDF statement you upload

scanned_statement_047.pdfUnstructured

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

bankflow_oct.qboOFX / QBO

<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

Import in QuickBooks under Transactions › Bank transactions › Upload
A scanned statement in, a bank file out: the format QuickBooks accepts under Upload, with merchants and memos already resolved. Illustrative data.

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

  1. 01

    Upload the statement

    Drag in the PDF: scanned, multi-page, and password-protected files all work, up to 50 MB each.

    BankFlow dashboard with the empty state offering a statement upload or an email import address.
    Upload it yourself, or forward the bank's statement email to a private address and let it land on its own.
  2. 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.

    Activity panel showing a Chase statement processing, with the current stage and elapsed time.
    The queue reports the stage it is on. A statement this size clears in seconds; a year of them runs unattended.
  3. 03

    Categorize in bulk

    Use search, filters, shift-click range selection, and rules to get categories right across hundreds of rows at once.

    Three transactions selected, with the Actions menu open on the category picker.
    Three rows selected, one menu: category, tags, merchant, flag, or exclude from analytics.
  4. 04

    Export OFX/QBO

    Download the reviewed transactions as an OFX 1.02 file, or as a .qbo carrying the Intuit web-connect header.

    Export dialog with QuickBooks selected, the field list on the right, and a live preview of the rows.
    QuickBooks selected. The preview is the same data you just reviewed, in the order the file will carry it.
  5. 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 fieldWhat BankFlow puts there
DTPOSTEDThe parsed transaction date, normalized from whatever format the statement used.
TRNAMTThe signed amount: negative for debits, positive for credits.
TRNTYPEDEBIT or CREDIT, derived from the sign of the amount.
NAMEThe payee, capped at the OFX 1.02 limit of 32 characters.
MEMOThe full cleaned narration, which has no length limit in the format.
FITIDA stable per-transaction identifier that QuickBooks uses for duplicate detection.
CURDEFOne 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.

Clean books, fewer clicks.

Parse a statement, categorize it in bulk, and hand QuickBooks a file that is already sorted out.