Skip to main content
BankFlow logoBankFlow

Integrations

Your ledger will read a statement. Just not as a PDF.

Seven accounting tools, each of which imports transactions happily and reads a statement PDF not at all. The gap between those two facts is the file, and each page below covers one of them: which format it takes, where its import screen hides, and what it does with the rows once they land.

Add statements

50 free pages
PDFSelect statementsPDF, CSV, XLSX or JSON · max 50 MB each
3 files selectedReview before importing.Add files
statement_oct.pdf1.2 MB · 8 pages
amex_q3_2025.pdf3.4 MB · 12 pages
scanned_047.pdf6.1 MB · locked
  • 7Destinations
  • 3File formats
  • OFX 1.02Spec targeted
  • 50Free pages

A destination is only here if it needs to be.

There is a test every page on this hub had to pass, and it is deliberately narrow: the tool has to be unable to read a PDF, and able to read something we produce. Both halves matter. Quicken fails the second, because its QFX import wants a financial institution ID issued to an Intuit partner and refuses files without one. Zoho Books fails the first, since it imports statement PDFs directly and needs nothing from us at all. Writing pages for either would have meant writing a page whose advice was to use something else, so neither is here. What is here is the set where a converted file is genuinely the shortest path from the statement to the ledger.

Just want a spreadsheet?

If nothing downstream is asking for a bank file, the conversion is simpler than any of this. The convert hub covers Excel and CSV, plus the per-bank guides for getting the PDF out in the first place.

Go to Convert

What each one takes, and where it hides

The two facts that decide whether an import works, for all seven, on one screen.

DestinationFile it acceptsWhere the import lives
QuickBooksQBOOnline: upload the file under bank transactions. Desktop: File, then Utilities, then Import Web Connect Files.
XeroOFXAccounting, then Bank accounts, then the account's own menu, then Import a Statement.
SageOFXBanking, then the bank account, then Import Statement.
WaveOFXAccounting, then Transactions, then upload a bank statement.
GnuCashOFXFile, then Import, then Import OFX/QFX transactions.
MoneydanceOFXThe File import menu, then the exported .ofx file.
FreshBooksCSVAdd the bank account by hand first, then upload the CSV to that account and match the fields.

QBO is OFX carrying an Intuit web-connect header. That header is the entire difference, and it is also why QuickBooks rejects the plain OFX file the other six accept.

FAQ

Common questions

Why does QuickBooks need its own format?

QBO is OFX with an Intuit web-connect header wrapped around it. QuickBooks validates that header and refuses a file without it, so the same statement exports as QBO for QuickBooks and as plain OFX for everything else.

Can I import history from before my bank feed started?

That is the common reason to be here. A feed typically reaches back ninety days; a statement PDF reaches back as far as your bank keeps them. Convert the older months and import them the same way, and stable transaction IDs mean an overlapping month deduplicates rather than doubling.

Will the imported rows arrive categorized?

The categories live in BankFlow's ledger, and OFX and QBO carry descriptions rather than your chart of accounts, so the destination applies its own coding on arrival. The work that does travel is the cleanup: corrected merchants and full descriptions, which is what the destination's own rules match on.

What if my accounting tool is not listed?

Check what its import screen accepts. If it takes OFX, the OFX page applies unchanged. If it takes CSV, so does the CSV page. A tool only earns a page here when the path to it has something specific worth documenting.

Do I need to connect my bank?

No. Nothing here touches a bank connection or a set of banking credentials. You upload the statement your bank already gave you, or forward it to a private import address.

The file your ledger has been waiting for.

Fifty free page credits, no card. Convert one statement, import it, and see whether the rows land the way you wanted.