OFX / QFX format reference

OFX (Open Financial Exchange) is the standard bank-data interchange format. Almost every U.S. bank, brokerage, and credit union supports OFX export from their online portal. QFX is Intuit's proprietary flavor — same wire format, different file extension, with a magic-bytes header that targets QuickBooks® specifically. Solid Accounting reads both the same way, through File → Import → Import Transactions…. OFX/QFX is import-only; there is no OFX export.

For ad-hoc bank-statement imports, OFX/QFX is usually a cleaner choice than CSV — the format carries structured fields (date, amount, payee, transaction type, FITID for deduplication) without per-bank quirks.

Supported files

ExtensionFormatSource
.ofxOFX (open standard)Most banks, brokerages, credit unions
.qfxQFX (Intuit)U.S. banks targeting QuickBooks specifically
.qboWeb Connect (Intuit)Same content, alternate extension

Solid Accounting finds the <OFX> tag in the file and reads it from there, so OFX 1.x (SGML) and OFX 2.x (XML) files both work.

QFX vs. OFX. QFX adds an INTU.BID tag that targets QuickBooks. Some banks only offer QFX; Solid Accounting reads it as ordinary OFX.

Encoding. OFX 1.x declares its encoding in the header (usually USASCII); OFX 2.x uses an <?xml?> declaration. Either works.

Import an OFX or QFX file

  1. Download the statement from your bank's website as OFX, QFX, or "Quicken" / "QuickBooks Web Connect".
  2. In Solid Accounting, choose File → Import → Import Transactions… → Import from file and pick the file. Import OFX/QFX files separately from CSV and PDF files.
  3. Map Accounts. The file carries an account number but not your account's name, so say which of your accounts it belongs to. Solid Accounting remembers the choice for next time.
  4. Review and post.

Format structure

Each transaction is an <STMTTRN> block inside the statement:

<OFX>
  <BANKMSGSRSV1>
    <STMTTRNRS>
      <STMTRS>
        <CURDEF>USD</CURDEF>
        <BANKACCTFROM>
          <BANKID>121000358</BANKID>
          <ACCTID>1234567890</ACCTID>
          <ACCTTYPE>CHECKING</ACCTTYPE>
        </BANKACCTFROM>
        <BANKTRANLIST>
          <DTSTART>20260401</DTSTART>
          <DTEND>20260430</DTEND>
          <STMTTRN>
            <TRNTYPE>DEBIT</TRNTYPE>
            <DTPOSTED>20260415</DTPOSTED>
            <TRNAMT>-642.18</TRNAMT>
            <FITID>20260415-001</FITID>
            <NAME>Linode</NAME>
            <MEMO>April hosting</MEMO>
          </STMTTRN>
          ...

Credit-card statements use <CREDITCARDMSGSRSV1> / <CCSTMTTRNRS> / <CCACCTFROM> instead; both shapes are read.

Field reference

OFX tagUsed forNotes
DTPOSTEDTransaction dateYYYYMMDD or a full timestamp; only the date is used, with no time-zone conversion
TRNAMTAmountPositive = money in, negative = money out
TRNTYPEType hintDEBIT, CREDIT, CHECK, DEP, XFER, ATM, FEE, INT, etc. Unknown codes still import
FITIDDuplicate detectionUnique per transaction per account at your bank
NAMEPayeeUsually the merchant or counterparty
MEMOMemoExtra description
CHECKNUMReferenceCheck number when present
ACCTIDAccount checkShown so you can confirm the right account; never logged
ACCTTYPEAccount-type hintCHECKING, SAVINGS, CREDITCARD, MONEYMRKT, LINEOFCREDIT
CURDEFStatement currencyThe amounts posted are what your bank reports

Duplicates. Because every transaction carries a FITID, re-importing an overlapping statement is safe: transactions you've already imported are recognized and flagged in the review step. That makes OFX/QFX a better choice than CSV whenever your bank offers both.

What OFX doesn't carry: account names, customer and vendor records, or cleared status. Downloaded transactions aren't marked cleared automatically — you do that when you reconcile.

Common errors

  • "No <OFX> tag found — this does not appear to be a valid OFX/QFX file." The file isn't really OFX — some banks label CSV exports as OFX. Open it in a text editor; if it doesn't start with OFXHEADER:100 or <?xml, import it as CSV instead.
  • A date is a day off. The bank's timestamp is in another time zone and only the date part is used. Edit the date on the imported entry if it matters.
  • The same transaction imported twice. Your bank may be reusing FITIDs across statements (rare, mostly smaller institutions). Email support@solidaccounting.com with the bank's name.

Related: Import & Export overview · CSV format · Banking

Updated October 31, 2026
Report a problem with this page
Was this helpful?

We use this to prioritize which docs to improve. No tracking, no email follow-up.