Sonomir

PDF to QBO Converter

Turn a bank or credit card statement you only have as a PDF into a .QBO file that QuickBooks imports like a download from the bank, after checking that every transaction adds up to the printed balances.

Bring your file.

  1. Add your file
  2. Check the result
  3. Download

No upload or account needed. Sample downloads are free.

Get more from your statements.

Why QuickBooks wants a QBO file

A .QBO file is a Web Connect file: the format banks hand out when you choose "download for QuickBooks". It is OFX underneath, plus a bank code (the INTU.BID tag) that QuickBooks checks before it accepts anything. QuickBooks Desktop's bank imports are built around it, and its CSV options are limited. QuickBooks Online accepts QBO, QFX and CSV uploads, and suggests QBO.

When the bank's download window has closed, the account is shut, or a client sent PDFs, there is no Web Connect file to download. This page makes one from the PDF: every transaction with its date, signed amount, description and a transaction ID, plus the statement's closing balance.

The bank code, honestly

A file made from a PDF has no bank code of its own, and QuickBooks refuses a file without one ("Missing bid data"). Sonomir writes 3000, the code in Wells Fargo's own Web Connect files, which QuickBooks accepts for checking, savings and credit card accounts. So QuickBooks may show the bank as Wells Fargo during the import. That is only a label on the file: you choose which of your QuickBooks accounts the transactions go into, and nothing is sent to or from Wells Fargo.

Card and loan statements are written as credit card accounts; everything else as a checking account. If a statement mixes accounts, convert each one separately.

Importing into QuickBooks (steps checked 5 October 2026)

QuickBooks Desktop (Windows):

  1. Convert the statement, check the summary says it reconciles, and download the QBO file.
  2. In QuickBooks, choose File → Utilities → Import → Web Connect Files, select the .qbo file and choose Open.
  3. Choose "Use an existing QuickBooks account" and pick the account, or create a new one, then Continue.
  4. Review and add the transactions in the Bank Feeds Center.

QuickBooks Online:

  1. Go to Bank transactions, open the Link account menu and choose Upload from file.
  2. Select the .qbo file, choose the QuickBooks account it belongs to, and continue.
  3. Pick the transactions to import and confirm.

Intuit's limits for uploads to QuickBooks Online are 350 KB and 1,000 transactions per file. A year of statements can pass that, so convert and upload a few months at a time.

Errors you may see, and what to do

  • "Missing bid data": the file has no INTU.BID tag. Sonomir's files always carry one, so this usually means the file was opened and re-saved in another program. Download it again and import it unopened.
  • "QuickBooks is unable to verify the Financial Institution information for this download.": the bank code was not accepted for this account. Import through File → Utilities → Import rather than double-clicking the file, and make sure QuickBooks is up to date. Intuit also suggests switching Bank Feeds to Classic mode. If it still fails, upload the CSV in QuickBooks Online instead.
  • "QuickBooks found an error. We can't read the file…": the file was changed after download, often by Excel or a text editor converting it. Download it again.
  • Duplicates: QuickBooks skips transactions whose ID it has already seen, and each transaction's ID stays the same however often you download the same converted result. Transactions that came in through a live bank feed have different IDs, so remove the overlap by date before importing.

When the CSV is the better route, and when another tool is

In QuickBooks Online, the CSV works just as well and you can see every column before importing; use QBO when you want the import to feel like a bank download, or on Desktop, where it is the only route.

A typical 3-page statement costs 7 credits on a day when your 2 free pages are unused (one paid page at 5 credits, plus 2 for the QBO file), or 17 credits otherwise: about $0.35 or $0.85 at the $5-pack rate. The smallest purchase is $3 for 50 credits. If you convert dozens of statements every month, a subscription converter such as ProperSoft or MoneyThumb costs less per page, and ProperSoft runs on your own computer, so files never leave it.

The QBO file's layout has been compared with banks' own Web Connect files. Imports into QuickBooks itself have not yet been tested and recorded, so try the free pages on your own statement first.

What this tool does

Upload a bank statement — the PDF your bank emailed, a scan, or phone photos of the pages — and every transaction comes back as a row: date, description, money out, money in, a signed amount and the running balance. Transactions from every page land in one table, so a twelve-page statement is one list, not twelve fragments to stitch together.

Then comes the part that matters: the tool checks its own work. It adds up what it read and compares the result with the balances printed on the statement. When they agree to the cent, the extracted amounts are consistent with those balances. Offsetting errors can still cancel out, so a passing check is a useful review aid, not proof of accuracy. When they do not, it tells you by how much and flags the rows where the running balance breaks, so you check three lines instead of three hundred.

How the balance check works

Two independent checks run on every statement.

  1. Opening + money in − money out = closing. The opening and closing balances are read from the statement's summary or its first and last lines. If the transactions read in between do not produce the closing balance exactly, something is missing or wrong, and the difference is shown.
  2. Row by row. Where the statement prints a running balance, each one must equal the previous balance plus that line's money in minus its money out. A break points straight at the problem: the flagged row, or the one just above it.

The arithmetic is done in whole cents, never in floating point, so a check cannot pass by rounding. Statements listed newest-first are recognised, and so are card and loan statements, where the balance is money owed and runs the other way.

A passing check shows that the extracted amounts agree with the balances that were read. It cannot rule out offsetting errors, omitted pairs of transactions, or incorrectly read balances. Check dates and descriptions, compare the row count with the source, and review important amounts before importing.

What you get in the spreadsheet

The Excel workbook has three sheets:

  • Transactions — one row per transaction, in the order printed, with the page it came from and a Check column that says why a row was flagged.
  • Balance checks — each check, whether it passed, and the numbers behind it.
  • Statement summary — bank, the last four digits of the account, period, currency, opening and closing balances, totals, and whether it reconciles.

Amounts are stored as numbers, not text, so SUM works straight away. Dates are written as year-month-day when the statement makes the year clear, which sorts correctly everywhere. The CSV holds only the Transactions table, one rectangular sheet, because that is what accounting software expects to import.

Upload several PDFs at once — twelve monthly statements, say — and they come back in one workbook with a Statement column, plus a summary row for each.

Text PDFs, scans and photos

A PDF downloaded from online banking already contains its text. That text is read in place, with each amount kept in the column it was printed in, which is why this path is the most accurate: the tool never has to guess whether 42.35 was money in or money out.

A scanned statement, or photos of printed pages, is read from the image. That works well on a flat, straight, well-lit page. It struggles with faint thermal-style printing, pages shot at an angle, and folds across the amount columns. The balance check is your safety net here: if a digit was misread, the running balance breaks at that row.

Photos uploaded together are treated as the pages of one statement, in the order you chose them. Each PDF is its own statement.

What it supports, and what it does not

It is built for current, checking and savings account statements, and reads card and loan statements too. It is not built for investment or brokerage statements, where a row is a holding rather than a movement of cash. If your bank locks its statements with a password, enter it when the page asks: the PDF is unlocked in your browser, the password never leaves your device, and only the unlocked copy is uploaded. Without the password the tool cannot open it and will not try to get around it.

It has not been tested against a named list of banks, and this page will not pretend otherwise. Statement layouts vary enormously; what the tool offers instead is a result you can verify. If the checks pass, the extracted numbers agree with the balances read from the source. If they fail on your bank's layout, the job tells you so plainly.

Privacy

Statements are sensitive, so here is exactly what happens. The uploaded file is sent to the reading model and deleted from storage when the job ends, whether it succeeded or not. Only the last four digits of an account number are kept. The transactions you see are stored with your job so the download still works if you come back later; use Delete this result to remove it sooner. Nothing you upload is ever published.

How the free tier works

The first 2 pages a day are free, with the balance checks, and you can copy every row you see. That is enough to see whether the tool reads your bank's layout correctly before you pay anything.

Past that, pages are 5 credits each, and the Excel download is 4 credits once per job. With the two free pages still available, a six-page statement uses 20 credits for processing plus 4 for the workbook. If you have no credits, the smallest purchase is $3 for 50 credits, before any applicable tax; 26 credits remain after that job. Credits never expire, there is no subscription, and a job that fails is not charged.

Example result

Your source

Page 1 of a current-account statement (PDF from online banking) Opening balance 1,250.00 02 Mar CARD PAYMENT CITY GROCER 42.35 1,207.65 03 Mar SALARY ACME LTD 2,100.00 3,307.65 05 Mar STANDING ORDER RENT 950.00 2,357.65 Closing balance 2,357.65

Your result
Date        Description                 Money out  Money in  Amount    Balance
2026-03-02  CARD PAYMENT CITY GROCER    42.35                -42.35    1207.65
2026-03-03  SALARY ACME LTD                        2100.00   2100.00   3307.65
2026-03-05  STANDING ORDER RENT         950.00               -950.00   2357.65

Reconciles to the cent: 1,250.00 + 2,100.00 in − 992.35 out = 2,357.65.
Running balance: all 3 printed balances follow from the row before.

Cost: free — one page, inside the daily 2. The workbook download would be 4 credits.

How this compares

Where another tool is the better choice, it says so.

DocuClipper

Better thereBuilt for accounting firms: bulk conversion, reconciliation workflows and connections into accounting software. If you convert statements every day, a dedicated platform is the better fit.

Better hereNo subscription. Try your own statement free, see the checked result before paying, and pay per page when you need it — suited to a few statements a month rather than a practice's whole workload.

Your bank's own CSV or OFX download

Better thereFree and exact, straight from the bank's system. If online banking offers a download for the period you need, use that — nothing beats the source.

Better hereWorks when all you have is the PDF: old statements beyond the download window, closed accounts, and statements a client or lender sent you.

Excel's Get Data from PDF

Better thereBuilt into Microsoft 365 Excel on Windows, free if you already have it, and fine for a clean PDF with one tidy table per page.

Better hereIt returns each page's tables separately and does nothing with scans or photos. This joins every page into one list, reads scans, and checks the balances.

Your questions, answered.

How can I convert my bank statement to a QBO file?

Upload the PDF, scan or photos here, check the transactions and the balance check, then download the QBO file. The first 2 pages a day are free to read; the QBO download is 2 credits once per job.

Why does QuickBooks show Wells Fargo when I import?

A PDF carries no bank code, so the file uses 3000, Wells Fargo's code, which QuickBooks accepts for every account type. It is only a label. You choose your own account during the import, and nothing is connected to Wells Fargo.

Can I import a CSV file into QuickBooks Online instead?

Yes. QuickBooks Online accepts CSV files with 3 columns (Date, Description, Amount) or 4 (Date, Description, Credit, Debit). The CSV download here has those columns among others; map them in the upload screen.

Where do I upload bank statements in QuickBooks Online?

Under Bank transactions: open the Link account menu and choose Upload from file. If no account is connected yet, choose to upload transactions manually.

Does it work for QuickBooks Desktop?

Yes, that is what a QBO file is for. Use File → Utilities → Import → Web Connect Files, then pick the account. Desktop's CSV options are more limited than Online's.

Is it free?

The first 2 pages a day are free, with no account, including the balance checks, and you can copy every row. Longer statements are 5 credits a page, and the Excel and CSV downloads cost 4 and 2 credits once per job.

Which banks does it work with?

It reads the layout rather than matching a list of banks, so it is not limited to particular ones — but it has not been tested against a named list either. Try the first two pages free: inspect the rows and compare them with your statement, even when the balance checks pass.

What does it mean if the balance check fails?

The transactions read do not add up to the balances on the statement. The difference is shown, and rows where the running balance breaks are flagged; the problem is almost always on that row or the one above it. Common causes are a faint or folded scan, or a statement layout the tool does not read well yet.

Can it convert a credit card statement?

Yes. On a card statement the balance is what you owe, so purchases increase it and payments reduce it. The check recognises that and reconciles it the right way round.

Does it work with scanned or photographed statements?

Yes, read from the image. Flat, straight, well-lit pages work best. The balance check is what tells you whether a scan was read correctly, so even a scan that passes needs a visual check against the source.

Can I import the result into QuickBooks, Xero or another accounting app?

For QuickBooks, download the QBO file; for Quicken, the QFX. For Xero and most other apps, the CSV has a date, a description and a signed amount on every row, which is what bank-statement imports ask for. There is no direct connection to accounting software.

Is my statement stored?

The uploaded file is deleted when the job ends. The transactions are kept with the job so you can download them later, with only the last four digits of the account number. Choose 24 hours or 30 days before processing, or use Delete this result sooner.

Can you convert a batch for me?

Yes. For a large batch, or statements that fail the check, email hello@sonomir.com with how many statements and pages there are. It is $1 a page with a $20 minimum, quoted before anything is done, and every statement comes back either reconciled to the cent or with the difference explained. Details: https://sonomir.com/done-for-you.

Something else to work on?

Image to ExcelImage & handwriting to textAudio & video to textCitations