Skip to content
Banking Converter
PDF → OFXFree · 25 pages a month

Convert bank statements to OFX

Open Financial Exchange is the interchange format that desktop and small-business accounting tools have shared since the late 1990s. This converter writes OFX 2.2 (XML) with a bank or credit card statement response, a ledger balance and one statement transaction per row extracted from your PDF.

1 · Upload your bank statement
  • PDF
  • Scanned
  • Password-protected

Drop a PDF statement here

or

Choose file
2 · Format
OFX version
2.2 (XML)
FITIDs
Deterministic
Currency
From statement

No card required. Originals deleted after 24 hours.

What the OFX file contains

An OFX 2.2 XML document with a sign-on block, a bank or credit card statement response, the account it belongs to, the statement period, one STMTTRN per transaction and a ledger balance with the closing figure.

northgate-2210-2026-08.ofxRound trip validated
<?xml version="1.0" encoding="UTF-8"?>
<?OFX OFXHEADER="200" VERSION="220" SECURITY="NONE" OLDFILEUID="NONE" NEWFILEUID="NONE"?>
<OFX>
  <SIGNONMSGSRSV1>…</SIGNONMSGSRSV1>
  <BANKMSGSRSV1>
    <STMTTRNRS>
      <STMTRS>
        <CURDEF>USD</CURDEF>
        <BANKACCTFROM><BANKID>000000000</BANKID><ACCTID>****2210</ACCTID><ACCTTYPE>CHECKING</ACCTTYPE></BANKACCTFROM>
        <BANKTRANLIST><DTSTART>20260801120000[0:GMT]</DTSTART><DTEND>20260831120000[0:GMT]</DTEND>
          <STMTTRN>…</STMTTRN>
        </BANKTRANLIST>
        <LEDGERBAL><BALAMT>9300.63</BALAMT><DTASOF>20260831120000[0:GMT]</DTASOF></LEDGERBAL>
      </STMTRS>
    </STMTTRNRS>
  </BANKMSGSRSV1>
</OFX>

The FITID is a hash of the basis columns, so re-running the conversion, or converting a corrected PDF of the same statement, yields identical ids.

Why convert bank statements to OFX here

01

Stable transaction ids

The FITID for a row depends only on the account, date, amount, normalised description and ordinal, so every run produces identical ids and importers never see the same transaction twice.

02

Correct signs

Money in is positive, money out is negative. Credit card statements use the liability convention: charges negative, payments positive.

03

Names and memos within limits

NAME is capped at 32 characters and MEMO at 255, per the OFX A-32 and A-255 limits, and the full description always survives in MEMO.

04

Any bank, any country

Dates in any regional format are normalised to OFX timestamps at noon GMT, and CURDEF is taken from the statement. Amounts are never converted between currencies.

05

Validated before release

The exporter parses its own output with a tolerant reader that also understands SGML 1.x, and compares every amount and FITID with the extracted data.

06

Reconciled and deleted

Balances are checked against the printed opening and closing figures before you download. Originals are deleted 24 hours after processing; exports and extracted transactions 7 days after conversion; Delete now removes everything immediately.

How to convert a bank statement to OFX

  1. 1

    Upload your statement

    Drop a PDF into the converter above. Text and scanned files are accepted on every plan, password-protected PDFs from Starter, and you see the page count before anything else happens.

  2. 2

    Choose OFX

    Select OFX as the output. If your importer needs a real routing number rather than the placeholder BANKID, enter it in the export options.

  3. 3

    Review the result

    The extracted rows are shown next to the original page. Flagged rows carry a reason; click any row to see where it came from and edit, merge or split it.

  4. 4

    Download and import

    Download the .ofx file and import it into Quicken, GnuCash, Xero, Sage or any other OFX reader. Exports are regenerated whenever you edit.

OFX technical notes

The conventions this exporter follows, so you can predict how your importer will treat the file before you open it.

Document structure

OFXHEADER 200 · VERSION 220 · SIGNONMSGSRSV1 + BANKMSGSRSV1 (or CREDITCARDMSGSRSV1)

What is an OFX file?

BANKID placeholder

000000000 when no routing number or sort code is printed · fails the routing checksum, never impersonates a bank

Timestamps

YYYYMMDD120000[0:GMT] · DTSTART and DTEND set to the statement period · DTASOF on LEDGERBAL

OFX, QFX and QBO

QFX adds Intuit identifiers for Quicken · QBO is the QuickBooks variant on OFX 1.02

What is a QFX file?

Bank statement to OFX: questions

Which OFX version do you produce?

OFX 2.2 in XML form (header VERSION=220). Importers that only read the older SGML 1.x style should use the QBO export for QuickBooks or ask us about a 1.x profile.

What is the difference between OFX and QBO?

QBO is an OFX 1.02 document with Intuit-specific fields (FI block and INTU.BID) that QuickBooks requires. OFX is the general format used by everything else. The QBO converter writes the QuickBooks variant.

Why is BANKID 000000000?

The statement did not print a routing number, so a checksum-invalid placeholder is used. Most importers accept it; if yours needs a real routing number, enter it in the export options.

How are duplicate imports prevented?

By deterministic FITIDs. The id for a row depends only on the account, date, amount, normalised description and the row's ordinal, so it is identical on every run.

Can I edit a transaction before exporting?

Yes. Fix a date, amount or description in the review screen and the OFX file is regenerated with the corrected values.

Is OFX available on the free plan?

No. This format starts on Starter; the free plan converts to CSV and Excel. Every plan reconciles and reviews the statement the same way; only the export format differs. See pricing.

Convert your bank statement to OFX now.

Free plan: 25 pages a month, no card required.

Convert to OFX