Home › Guides

PDF bank statement to QBO: what the file needs and how to check it

A .qbo file is a plain text list of one account's transactions, and a PDF statement contains none of that structure. A converter has to build it from the printed table, so you have to check its work. The test that matters: opening balance plus all movements must equal the closing balance on the statement.

What a .qbo file is

A .qbo file is a text file in the Open Financial Exchange (OFX) family, with a few extra fields added by the accounting software vendor. You can open it in any text editor and read it. It holds one account, a date range, a list of transactions and, usually, the balance at the end of the period.

Accounting software that imports .qbo files reads that list and offers each row for matching or categorizing. It does not read the PDF. That is why a statement that only exists as a PDF cannot be imported until someone turns it into this structure.

When you need one, and when you do not

You need a converter when the bank shows statements only as PDF files, when you have years of old statements, or when a client sends PDFs and nothing else. In those cases there is no download button that gives you structured data.

You do not need one if the bank offers a QBO, OFX or CSV download. Those files come from the bank's own system, so they carry the right bank and account details and stable transaction ids. Look in the online banking menu under export or download before you convert anything.

What the file must contain

The OFX 2.2 specification defines the fields. A file made from a PDF has to fill every one of them correctly, because the software checks them on import.

Field in the fileWhat it holdsWhat goes wrong
ACCTTYPEAccount type: CHECKING, SAVINGS, CREDITLINE and a few othersA card or loan set up as checking, so the software refuses the match
BANKIDBank identifier: routing number in the US, sort code in the UK, bank code in Spain. Credit cards have noneEmpty or invented, so the bank cannot be verified
ACCTIDAccount number, up to 22 charactersDiffers from the account already set up in your software
DTPOSTEDPosting date as YYYYMMDD, plus the period start and endA day-first date read as month-first
TRNAMTAmount with a decimal point, no thousands separator, signedA statement that prints 1.234,56 must become 1234.56
FITIDTransaction id, unique inside the accountMissing, repeated, or different on every run
LEDGERBALClosing balance and the date it applies toTaken from a different line or a different date

The sign is the most important detail. In OFX the sign of the amount decides the effect on the account: money out is negative, money in is positive. On a credit card, a purchase is negative and a payment is positive, and the closing balance owed is usually negative. A transaction type label such as DEBIT does not override the sign.

The payee name field is limited to 32 characters in the standard, with a longer name field and a memo field available. Characters such as & and < have special meaning in the format, so a payee like Smith & Sons must be escaped correctly. A sloppy converter breaks the file there.

The closing balance is not a transaction. It sits at the end of the file as a separate element, and a converter that turns the balance line into a row will break the arithmetic.

Here are the same fields as they would read in a file, with made-up numbers and the tags left out. It shows two of eight transactions. A real file also starts with a header and a sign-on block.

BANKID 123456789
ACCTID 00012345678
ACCTTYPE CHECKING
DTSTART 20261001
DTEND 20261031

TRNTYPE DEBIT
DTPOSTED 20261005
TRNAMT -58.99
FITID 20261005-0001
NAME HARDWARE SUPPLY

TRNTYPE CREDIT
DTPOSTED 20261012
TRNAMT 640.00
FITID 20261012-0001
NAME CUSTOMER PAYMENT

BALAMT 2823.06
DTASOF 20261031

Why imports fail

The help pages of accounting software list the same causes again and again. The first is bank details the software cannot verify. A moderator on one support forum says the "unable to verify the Financial Institution Information" error is generally caused by invalid data or incorrect bank details in the file. That is a community-forum statement, not a guarantee.

The second is a mismatch with the account you already linked. If the account in your software is tied to a different bank code or account number, the file may not offer it as a target. The third is an incomplete or incompatible file. One help page says that issues happen for several reasons, like incomplete bank files or incompatible formats.

The fourth is size. The online edition help page I read on 2026-11-03 says an upload must be in English and 350 KB or less, with up to 1,000 lines per upload. Limits differ by edition and change over time, so check the current page for your software.

Why imports duplicate or lose rows

Every account and transaction in a .qbo file has a unique identifier, and one help page says the software will not import transactions with the same id more than once. Import the same file twice and the second run is usually skipped.

That protection fails in three ways. Ids that change on every conversion make the same transaction look new, so a re-run creates duplicates. Ids that repeat make two real transactions look like one, so a row disappears. Two sources covering the same days, for example a bank feed and a converted file, produce matching rows with different ids.

Use the same bank code and account number every time you convert statements for one account. Do not edit ids or the account number to force a second import. The same help page treats editing the account id as a one-time repair to be done with caution.

Check the result before you import

Do these checks on the converted file, not on the PDF alone. They take about ten minutes for a month.

  1. Balance check. Add the opening balance and every signed amount. The result must equal the closing balance printed on the statement.
  2. Row count. Count the transaction lines in the PDF and the transactions in the file. They must match.
  3. Signs. Look at the three largest amounts. Deposits must be positive and withdrawals negative.
  4. Dates. Confirm the first and last date fall in the statement period, and that a date like 03/04/2026 was read in the order your bank prints it. Watch the turn of the year.
  5. Summary lines. Make sure totals, balance forward and fee summaries were not imported as transactions.
  6. Text check. Open the file in a text editor and compare the first and last rows with the PDF.
  7. Trial import. Import one month first, look at the review screen, then do the rest.

A worked example. The opening balance is 2,415.60. The statement shows eight rows: deposit 1,200.00, hardware supply -58.99, check 1042 -1,015.00, customer payment 640.00, fuel -42.30, insurance -312.40, refund 85.25 and phone -89.10. Money in is 1,925.25 and money out is 1,517.79. The closing balance must be 2,823.06.

Difference from the statementLikely cause
Equals one row amountA row is missing or counted twice
Equals twice a row amountOne row has the wrong sign
Equals a statement balance or totalA summary line was imported as a row
Equals a fee or interest amountA section of the statement was skipped

A zero difference does not prove the file is right. Two errors can cancel each other, such as one wrong sign and one missing row of the same size. The check shows the file matches the PDF, not that the PDF or your categories are right.

For a credit card, the balance owed is negative in the file. If you owed 500.00, bought 300.00 and paid 500.00, the closing balance in the file is -300.00.

How to judge a converter

Free online converters and paid ones differ less than their marketing suggests. Ask these questions instead of comparing feature lists.

  • Does it show the extracted rows next to the PDF page, so you can see what it read?
  • Does it run a balance check before it writes the file?
  • Can you set the account type, bank code and account number yourself?
  • Are transaction ids stable, so the same PDF gives the same ids on a second run?
  • Does it treat credit cards as cards, with negative balances owed?
  • Can it also export CSV, in case your software rejects the .qbo file?
  • For online services, where does the PDF go and how is it deleted? A statement holds account numbers and names.

A desktop converter that shows the table beside the PDF page and runs the balance check before it writes the file covers most of this list. No converter replaces your review.

What to do instead

  1. Ask the bank for a QBO, OFX or CSV download. Many banks offer one for recent months, even when the statement view only shows PDF.
  2. Check whether your software reads PDF statements directly. The online edition help page I read says an account statement can be a PDF or an image file, shown for review side by side. Features vary by edition.
  3. Import a CSV. The same page describes a three-column layout (date, description, amount) or a four-column layout (date, description, credit, debit), with a single date format.
  4. If there are only a few rows, type them in by hand.

With a CSV, check the sign of amounts on the review screen. The help page mentions an option to reverse all values if deposits and withdrawals came out swapped.

Questions

What is a QBO file?

It is a text file in the OFX family that lists the transactions of one account for a period. Accounting software that imports .qbo files reads it instead of the PDF.

Can I rename a CSV or OFX file to .qbo?

Renaming a CSV does nothing, because the contents are still a table and not the OFX structure. An OFX file may lack the vendor additions, and some software accepts .ofx files directly, so try that first.

Why do deposits import as withdrawals?

The signs are reversed. Fix the amounts in the source file, or use the reverse option on the review screen if your software has one.

Will importing the same file twice duplicate my transactions?

Usually the second run is skipped because the ids match. Duplicates appear when the ids change between conversions or when two sources cover the same days.

Is a free online PDF to QBO converter safe?

Read its privacy terms first and find out how it deletes your file. A bank statement contains account numbers and names, so upload only what you are comfortable sharing.

How accurate are converters?

No converter should promise perfect results, because PDF layouts vary. The balance check catches most errors, but not errors that cancel each other, so review the rows yourself.

Keep reading

More guides

About Ledgerpour

Ledgerpour is our Windows app that turns PDF bank and credit card statements that contain text into CSV, XLSX, QBO or CAMT.053 files, and checks that the balances add up before you import. It does not read scanned pages. Review the converted data before you use it in your books. It is not in the Microsoft Store yet.

Sources

Checked 2026-11-03.

Not affiliated with or endorsed by Microsoft or any bank. All product and company names are trademarks of their owners.