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
| Extension | Format | Source |
|---|---|---|
.ofx | OFX (open standard) | Most banks, brokerages, credit unions |
.qfx | QFX (Intuit) | U.S. banks targeting QuickBooks specifically |
.qbo | Web 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
- Download the statement from your bank's website as OFX, QFX, or "Quicken" / "QuickBooks Web Connect".
- 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.
- 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.
- 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 tag | Used for | Notes |
|---|---|---|
DTPOSTED | Transaction date | YYYYMMDD or a full timestamp; only the date is used, with no time-zone conversion |
TRNAMT | Amount | Positive = money in, negative = money out |
TRNTYPE | Type hint | DEBIT, CREDIT, CHECK, DEP, XFER, ATM, FEE, INT, etc. Unknown codes still import |
FITID | Duplicate detection | Unique per transaction per account at your bank |
NAME | Payee | Usually the merchant or counterparty |
MEMO | Memo | Extra description |
CHECKNUM | Reference | Check number when present |
ACCTID | Account check | Shown so you can confirm the right account; never logged |
ACCTTYPE | Account-type hint | CHECKING, SAVINGS, CREDITCARD, MONEYMRKT, LINEOFCREDIT |
CURDEF | Statement currency | The 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:100or<?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