Bank statement PDF to QBO file for QuickBooks Desktop
QuickBooks Desktop reads .qbo (Web Connect) files via Banking → Bank Feeds → Import Web Connect File. If your bank's direct feed is broken, or historical months only download as PDF, you need a way to get those PDFs into a .qbo file.
Why this is harder than it should be
Not every bank offers a .qbo download. Some only publish OFX or CSV, some only PDF. Even banks that do support Web Connect usually cap the export at 90 days. Backfilling last year's books almost always means working from PDF.
Bank2XL writes the .qbo directly from the PDF, so you skip the CSV-to-QBO conversion step that older guides describe. The file you download from the Bank2XL result page is the same OFX 1.0.3 SGML shape QuickBooks Desktop expects from Web Connect.
The workflow
- Drop your bank PDF into Bank2XL and click Convert. You get Excel, CSV, and a .qbo file ready to import. The Validation sheet in the Excel confirms that opening + credits - debits = closing before you trust the data.
- Click QBO (QuickBooks) on the result page and save the .qbo to disk.
- In QuickBooks Desktop, go to Banking → Bank Feeds → Import Web Connect File and pick the .qbo. QuickBooks queues the transactions for review.
On QuickBooks Online instead of Desktop? Skip the .qbo step. QBO accepts CSV under Banking → Link account → Upload from file. The same Bank2XL conversion gives you a CSV ready to upload.
Gotchas
- Description length. The Web Connect spec caps the NAME field at 32 characters. Bank2XL writes the short name into NAME and the full description into MEMO so nothing is lost, but if you only display NAME inside QuickBooks the descriptions look truncated. Switch the column to Memo if you want the full text.
- Duplicate FITID values. QuickBooks dedupes by FITID. Bank2XL derives FITID from the transaction date plus its row index in the statement, so re-importing the same statement is a no-op. Importing two different statements that happen to share a date will not collide.
- Routing number. The OFX BANKID field expects the bank's routing number. Bank2XL has not extracted that from the PDF historically, so we derive a stable pseudo-id from the bank name. QuickBooks Desktop does not validate this against Federal Reserve directories for manual imports.
When not to use this path
- If your bank's direct Web Connect link works, use that. Re-creating .qbo by hand is a workaround for broken or missing feeds, not a default.
- If you have fewer than 20 transactions in the period, manual entry in QuickBooks is faster than the round trip.
- If you're on QBO instead of Desktop, upload Bank2XL's CSV directly. Skip the .qbo conversion.
FAQ
Does QuickBooks Online need .qbo? No. QBO accepts CSV directly under Upload from file, with a column-mapping step at import. .qbo is mostly a Desktop format. If you're already on QBO, the CSV that Bank2XL exports is enough on its own.
What about Xero? Xero accepts OFX, QIF, and CSV. CSV is the easiest path from Bank2XL output. Map the columns once and Xero remembers the layout for that bank account.
Is this secure? My PDF has account numbers. We process files in memory, auto-deletes within 24 hours, and you can opt out in Settings. Details at /data-retention.html. We don't train AI on your content or share it. Account numbers are masked in the Excel output by default.
Get started
Install Bank2XL from the Chrome Web Store at bank2xl.app. Free during beta: 10 statements a day, no signup. Drop your bank PDF, get Excel and CSV, then run the CSV through a Web Connect converter for QuickBooks Desktop.
Skip the manual cleanup — try Bank2XL free
Drop a PDF, get a clean Excel back. 10 statements per day during beta, no signup, no credit card.