PDF to OFX means turning the transactions printed on a PDF bank statement into an OFX file, a tagged text format that accounting software reads. The PDF has to be read first, then each line is written out with a date, an amount, a name and a unique ID. For Xero, a CSV is usually less work.
What does an OFX file hold that a PDF doesn't?
An OFX file holds each transaction as labelled data: a date, an amount, a name and an ID, inside tags that software can read without guessing. A PDF holds only the position of printed characters on a page. That is why a program can load the OFX file directly but cannot do the same with the PDF.
An OFX excerpt, tag by tag
OFX stands for Open Financial Exchange. Files in this format are plain text, and you can open one in a text editor. The excerpt below shows two transactions. The account details, IDs and amounts are made up for illustration, and a real file has more header lines than shown.
<STMTTRN>
<TRNTYPE>CREDIT
<DTPOSTED>20260302
<TRNAMT>1250.00
<FITID>20260302-0001
<NAME>Brightwater Cafe
<MEMO>Client payment INV 1042
</STMTTRN>
<STMTTRN>
<TRNTYPE>DEBIT
<DTPOSTED>20260304
<TRNAMT>-86.42
<FITID>20260304-0002
<NAME>Pinecrest Office Supply
<MEMO>Office supplies
</STMTTRN>
Each tag has one job:
- STMTTRN wraps one statement transaction. Everything between the opening and closing tag belongs to one line.
- TRNTYPE says what kind of movement it was, such as CREDIT for money in and DEBIT for money out.
- DTPOSTED is the date the bank posted the transaction, written as year, month, day with no separators. 20260302 is March 2, 2026, and cannot be misread as day first.
- TRNAMT is the amount, signed, with a minus for money out.
- FITID is the financial institution's transaction ID, a value that should be different for every transaction in the account.
- NAME is the payee or short description.
- MEMO is extra text, such as an invoice number.
Around these sit header tags that name the bank and the account, and balance tags for the closing balance. Those tell the software which account the file belongs to.
Why this matters for software
The date is unambiguous, the amount carries its own sign, and every line has an ID. A CSV needs you to say which column is which, and a PDF needs the text to be recognised first. An OFX file asks nothing of you at the import screen, which is its main appeal. It also means a mistake in the file goes straight in, unless you check it first.
How OFX relates to other formats
QBO and QFX are close cousins of OFX, used by QuickBooks and Quicken. QBO files explained shows what QuickBooks adds on top of the OFX structure. Their relationship is covered in how close QFX, OFX and QBO are.
Xero, OFX and CSV: which upload is less work?
For Xero, a CSV is usually less work than an OFX file when you are starting from a PDF, and OFX is less work only when the bank hands you one. The reason is that a CSV can be checked and corrected in a spreadsheet, whereas an OFX file has to be made correctly the first time.
Where each file wins
| Situation | Easier file |
|---|---|
| Bank offers an OFX download | OFX, since nothing to build |
| You have only a PDF | CSV |
| You need to fix or sort rows first | CSV |
| You import overlapping periods often | OFX, because of the IDs |
| You want to read the file yourself | CSV |
The last two rows pull in different directions, and it is a real trade-off. IDs help Xero or any other program recognise a line it has seen before. A CSV has no such ID, so you manage overlap yourself by choosing clean date ranges.
What SimpleBankConvert does here
SimpleBankConvert is built to give you a CSV or a QBO file, not OFX, and its homepage says to pick CSV for Xero. If a program of yours insists on OFX, you will need another tool or a manual build, which the next sections describe, and for Xero the Xero statement import steps show where the CSV goes.
Why people ask for OFX at all
Some people have read that OFX is the safe choice because it comes from banks. For a download straight from your bank, that is fair. For a file you assembled from a PDF, OFX offers no extra protection. The accuracy of the file depends on how well the PDF was read, not on the extension.
Converting a PDF statement to OFX transactions
Converting a PDF statement to OFX has four steps: read the transactions out of the PDF, tidy them into dates, amounts and names, add the IDs and account details OFX needs, then write the tags and check the result. The reading step is where most errors start.
The steps
- Read the lines out of the PDF. Use a digital PDF from your bank when you can. A scanned page adds recognition errors.
- Fix the dates. Convert every date to year, month, day. Use the statement period to supply a missing year.
- Make one signed amount. Merge deposit and withdrawal columns, with money out negative.
- Write a name and a memo. Put the payee in NAME and any invoice number or detail in MEMO.
- Add an ID to every line. Each FITID must be different within the account. A date plus a running number works for a single file.
- Add the account details. The file needs the bank and account it belongs to, plus the closing balance.
- Save as a .ofx file and open it in a text editor to check that the tags close properly.
A converted file needs checking, not trusting
Before you import, add up the TRNAMT values. Add them to the opening balance. The sum should equal the closing balance printed on the statement. A missing 240.00 payment shows as an exact 240.00 difference, which is an example figure. Then check a handful of dates against the PDF. A converter that mislabels one date can still pass the balance check, so look at the dates by eye.
Doing it without a converter
A text editor and a spreadsheet can produce a small OFX file by hand. Build the tag text in a spreadsheet column with a formula that joins the tags to each cell, then paste the result between the header and footer lines. It works for a handful of lines and becomes slow beyond that. The CSV to OFX guide covers the field-by-field fill-in, including what to put for the account and ID.
OFX transaction IDs and duplicate imports
An OFX transaction ID, the FITID tag, is the value software uses to tell whether it has seen a transaction before. When you import two files that cover overlapping dates, lines with the same ID can be recognised as repeats, while lines with new IDs look like new transactions and may land twice.
What happens with overlapping files
Say you import March, then import a file for March 15 to April 15. Lines from March 15 to March 31 are in both files. If those lines carry the same FITID in both files, a program that checks IDs can skip them. If your converter invents new IDs on each run, every line looks new, and the overlap doubles.
Keeping IDs stable
- Build the ID from the data, not from a counter that restarts. The date plus the amount plus the position within that day is steadier than a number from one to N.
- Never reuse an ID for a different transaction in the same account.
- Convert a given statement once and keep the file, instead of converting it again later.
Two real identical lines
Two purchases of the same amount at the same shop on the same day are genuine twins. They need different IDs, or the second may be treated as a repeat. Add a sequence number to the end of the ID so they differ, for instance the date followed by -1 and -2.
What Xero shows
How to sort real repeats from genuine twins in Xero is covered under duplicate statement lines in the Xero import guide. As a rule, avoid overlap in the first place: start each file the day after the last transaction already in the account.
When a PDF to OFX conversion isn't worth it
A PDF to OFX conversion is not worth it when your software accepts CSV, when you convert statements only occasionally, or when you cannot verify the result. In those cases a CSV gives the same data with less risk and a file you can read.
Make a CSV instead when
- You use Xero, which takes CSV directly.
- You want to edit rows before importing.
- The statement is a scan, where errors are likely and a spreadsheet makes them easy to spot.
- You do this once a month or less.
Choose OFX when
- Your program takes only OFX or a variant of it.
- Your bank can give you the OFX file itself, so no conversion is needed.
- You regularly import overlapping periods and your tool keeps IDs stable.
A last check before you import
Whatever the format, finish with the same test: the opening balance plus every amount should equal the closing balance. SimpleBankConvert's PDF to CSV conversion is not open yet, and its get started page lets you join the list. And if you already have a CSV and wonder whether to turn it into OFX, read CSV to OFX: when Xero needs it and when it doesn't.