.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.
- Balances checked before download
- No card required
- Original PDF deleted after 24 hours
Convert a statement to OFX
STEP 1 / 3Drop a PDF statement here, or
Choose a PDF- PDF only
- text-based or scanned
- password-protected
- up to 5 MB on the free plan
No card required. Files are checked as soon as they are added; originals are deleted 24 hours after processing.
- Protected in transit with TLS
- Original PDF deleted after 24 hours
- Delete-now control available
- See how we protect your data
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.
Document skeleton
<?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>Fields written for each transaction (fictional statement)
| Statement row | TRNTYPE | TRNAMT | CHECKNUM | FITID basis |
|---|---|---|---|---|
| Payroll deposit ACME Design LLC | CREDIT | 2500.00 | account, 2026-08-02, 2500.00, description, row 1 | |
| Check 1042 | CHECK | -1200.00 | 1042 | account, 2026-08-05, -1200.00, description, row 3 |
| Transfer to savings ****4471 | XFER | -500.00 | account, 2026-08-09, -500.00, description, row 4 | |
| Mobile deposit | DEP | 320.00 | account, 2026-08-18, 320.00, description, row 6 |
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
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.
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.
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.
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
What is an OFX file?
VERSION 220
SIGNONMSGSRSV1 + BANKMSGSRSV1 (or CREDITCARDMSGSRSV1)BANKID placeholder
000000000 when no routing number or sort code is printed
fails the routing checksum, never impersonates a bankTimestamps
YYYYMMDD120000[0:GMT]
DTSTART and DTEND set to the statement period
DTASOF on LEDGERBALOFX, QFX and QBO
QFX adds Intuit identifiers for Quicken
What is a QFX file?
QBO is the QuickBooks variant on OFX 1.02
Bank statement to OFX: questions
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.
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.
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.
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.
Yes. Fix a date, amount or description in the review screen and the OFX file is regenerated with the corrected values.
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.
25 pages per month · No card required · No bank login