Skip to content

Bank statement to OFX

Upload a PDF statement (or a scan) and download an OFX file for Xero, MYOB, GnuCash, Moneydance, Banktivity and the other finance apps that read bank files. Transactions arrive in order, with the account details those readers expect alongside them.

Upload a file

Read your statement

pages ready to read.

Drag your statement herePDF or image — as many at once as you likeChoose files

What the OFX file contains

  • One entry per transaction, in statement order
  • Amounts on the side the statement shows them
  • Account details where an OFX reader looks for them
  • Dates as the statement prints them, not reformatted

What the OFX file looks like

OFX wraps each transaction in a <STMTTRN> block with the posting date, the signed amount, a unique <FITID> and the description in <MEMO>. <CURDEF> carries the currency, so an AUD or GBP statement imports as AUD or GBP rather than being assumed to be dollars.

OFXHEADER:100
DATA:OFXSGML
VERSION:102
SECURITY:NONE
ENCODING:USASCII
CHARSET:1252
COMPRESSION:NONE
OLDFILEUID:NONE
NEWFILEUID:NONE

<OFX>
<SIGNONMSGSRSV1>
<SONRS>
<STATUS>
<CODE>0</CODE>
<SEVERITY>INFO</SEVERITY>
</STATUS>
<DTSERVER>20260310120000</DTSERVER>
<LANGUAGE>ENG</LANGUAGE>
</SONRS>
</SIGNONMSGSRSV1>
<BANKMSGSRSV1>
<STMTTRNRS>
<TRNUID>1</TRNUID>
<STATUS>
<CODE>0</CODE>
<SEVERITY>INFO</SEVERITY>
</STATUS>
<STMTRS>
<CURDEF>USD</CURDEF>
<BANKACCTFROM>
<BANKID>000000000</BANKID>
<ACCTID>0000000000</ACCTID>
<ACCTTYPE>CHECKING</ACCTTYPE>
</BANKACCTFROM>
<BANKTRANLIST>
<DTSTART>20260302</DTSTART>
<DTEND>20260306</DTEND>
<STMTTRN>
<TRNTYPE>DEBIT</TRNTYPE>
<DTPOSTED>20260302</DTPOSTED>
<TRNAMT>-120.00</TRNAMT>
<FITID>20260302-12000-DirectDebit</FITID>
<NAME>Direct Debit 4471 Acme Insurance</NAME>
<MEMO>Direct Debit 4471 Acme Insurance</MEMO>
</STMTTRN>
<STMTTRN>
<TRNTYPE>DEBIT</TRNTYPE>
<DTPOSTED>20260304</DTPOSTED>
<TRNAMT>-38.40</TRNAMT>
<FITID>20260304-3840-CardPayment</FITID>
<NAME>Card Payment Corner Grocer</NAME>
<MEMO>Card Payment Corner Grocer</MEMO>
</STMTTRN>
<STMTTRN>
<TRNTYPE>CREDIT</TRNTYPE>
<DTPOSTED>20260306</DTPOSTED>
<TRNAMT>500.00</TRNAMT>
<FITID>20260306-50000-TransferRec</FITID>
<NAME>Transfer Received J Smith</NAME>
<MEMO>Transfer Received J Smith</MEMO>
</STMTTRN>
</BANKTRANLIST>
<LEDGERBAL>
<BALAMT>2341.60</BALAMT>
<DTASOF>20260306</DTASOF>
</LEDGERBAL>
</STMTRS>
</STMTTRNRS>
</BANKMSGSRSV1>
</OFX>
Three transactions from a sample statement, exactly as the downloaded .ofx file writes them.

Where an OFX file imports

OFX is the format most finance software accepts when a bank feed is missing or only reaches back a few months: Banktivity, Moneydance and GnuCash, Xero, MYOB and Reckon, Sage, YNAB and Actual Budget. Two exceptions: QuickBooks prefers its own QBO, and Quicken for Windows does not import .ofx files at all — it takes a CSV, see bank statement to Quicken.

Most banks stop offering OFX downloads for older periods, and some never offered it at all — but they always give you the PDF statement. Converting that PDF is how you backfill a year of history into a new app or catch up an account whose feed broke.

How to convert

  1. Upload your statement

    Drop in the PDF you downloaded from your bank, or a scan of a paper statement.

  2. Choose OFX

    Leave the output format on OFX — it is preselected on this page.

  3. Import the file

    Bring the .ofx in through your finance app’s bank statement import.

Statements it handles

Layouts differ from bank to bank, so nothing is matched against a fixed template. An unusual statement still produces a table you can check before exporting — which is what makes it usable for bookkeepers and accountants who receive statements from every client.

PDF statements and CSV exports

A statement downloaded from your bank, or the CSV your bank lets you export. Both arrive as the same clean table.

Multi-page statements, read as one table

A statement that runs over several pages — or several statements uploaded together — is read as one continuous table, not one file per page.

Amounts and dates kept as your bank prints them

Debit and credit signs, decimal places and date formats are left as printed, so the numbers still reconcile against the statement.

Scanned, image-only PDFs, read with OCR

A statement with no text layer is read with OCR and may need a quick review — the one case where a row can come out wrong.

  • PDF
  • CSV
  • Scan
DateDescriptionAmount
02/03Direct Debit 4471120.00
04/03Card Payment-38.40
06/03Transfer Received500.00
08/03Standing Order-250.00
11/03Salary Payment2,400.00

Why this is more accurate than OCR

OCR reads a statement by position on the page, so a wrapped description or a pair of narrow amount columns sends the text to the wrong row. Reading the content instead of the coordinates is what keeps each transaction whole.

statement.pdf
2 rows out
02/03DIRECT DEBIT
ACME INSURANCE
120.00
OCR splits line into extra row

01

A wrapped description becomes two rows

The second line of a description sits below the first, so it is read as a new row — and the amount follows it down, onto the wrong transaction.

1 col out
AMOUNTS
PAY38.40
DEP500.00

02

Debit and credit collapse into one column

Two narrow amount columns are read as one, so a payment and a deposit come out identical — the sign that told them apart is gone.

Summary block printed
OPENING BALANCE1,204.00
Metadata rowCounted as +1,204
CLOSING BALANCE886.00
Metadata rowCounted as +886
2 ghost transactions in books

03

The totals block becomes transactions

Opening balance and closing balance are printed like rows, so they are read like rows — and land in your books as money that never moved.

Why OCR mangles bank statements — the four failures in detail.

Frequently asked questions

How do I convert a bank statement to OFX?

Upload the PDF from your bank (or a scan) above, keep OFX as the output format, and download the file. No account and nothing to install.

What is an OFX file?

OFX (Open Financial Exchange) is a structured format for bank feeds. Unlike a spreadsheet export it also carries account information, which is why finance programs prefer it for imports.

What is the difference between OFX and QFX?

They carry the same transactions. QFX is Quicken’s variant of OFX with an Intuit bank ID that Quicken checks against the banks offering Web Connect, so a QFX has to come from your bank; this page writes OFX. Most apps that read one read the other.

Can I convert a PDF bank statement to OFX?

Yes. Upload the PDF, pick OFX, and download the file.

Can I import the OFX into Xero or MYOB?

Yes. Both accept OFX as a manual bank statement import — in Xero under the bank account’s Import a Statement, in MYOB under Banking, Bank Feeds or Import Statements depending on the edition. The currency is set in the file, so a non-dollar statement keeps its currency.

Is my statement kept after conversion?

No. The file is deleted when the conversion finishes; only the converted copy stays at your private link.

Do I need an account?

No. The converter works without signing up.