How to Convert CSV to QFX for Quicken
Plenty of banks and credit unions now only offer CSV or Excel downloads, which is awkward because Quicken doesn't import CSV transactions into bank accounts. The format Quicken actually wants is QFX, Intuit's flavor of OFX, delivered as a "Web Connect" file. To bridge that gap you need to wrap your raw rows in valid OFX 1.0.2 SGML, give each transaction a stable unique ID, and add the Intuit tags Quicken looks for.
This guide walks through exactly how QFX is structured, how to prepare your CSV, and how to import the result into Quicken (and QuickBooks, if you need it too). Where it saves real time, you can drop your CSV into LedgerBridge, a free in-browser converter that builds the QFX for you locally so your statement data never leaves your computer.
Why Quicken needs QFX, not CSV
Quicken's transaction import pipeline is built around the OFX family of formats. The two you'll encounter are QFX (Web Connect, a downloadable one-time file) and Direct Connect (a live connection to your bank). CSV is a plain spreadsheet with no notion of accounts, transaction IDs, or balances, so Quicken has no reliable way to map it into a register. Recent Quicken versions also restrict the older QIF format to manual accounts only, which rules it out for most people who want transactions in a real bank account.
QFX is just OFX with a few Intuit-specific extensions. A QFX file declares an account, lists transactions inside a BANKTRANLIST, and tags each one with a unique FITID. Get that structure right and Quicken treats your converted file exactly like a download straight from the bank's website. The catch is that a hand-rolled or sloppily generated file will be rejected, so the structure has to be correct down to the header.
- CSV: no accounts, no IDs, no balances; Quicken can't import it into bank accounts
- QIF: largely limited to manual accounts in modern Quicken
- QFX (Web Connect): the format this guide produces, imported as a one-time file
- Direct Connect: a live bank connection, not something you generate from a CSV
What a valid QFX file actually contains
A QFX file is OFX 1.0.2 in SGML form (not the newer XML-based OFX 2.x). It opens with a plain-text header, then an SGML body. The header must come first, with no blank line before it, or Quicken will refuse the file:
OFXHEADER:100 / DATA:OFXSGML / VERSION:102 / SECURITY:NONE / ENCODING:USASCII / CHARSET:1252 / COMPRESSION:NONE / OLDFILEUID:NONE / NEWFILEUID:NONE
The body holds a sign-on block (SONRS with a status code of 0 and a DTSERVER timestamp), then a bank statement block. Inside that, BANKACCTFROM declares the routing number (BANKID), account number (ACCTID), and ACCTTYPE (CHECKING, SAVINGS, or CREDITLINE). The transactions live in BANKTRANLIST between a DTSTART and DTEND, each as an STMTTRN with TRNTYPE, DTPOSTED, TRNAMT, FITID, and NAME or MEMO. A LEDGERBAL with BALAMT and DTASOF closes it out.
Two details make or break the import. First, the INTU.BID tag: this is the Intuit-assigned identifier for the financial institution, and Quicken uses it to recognize the file as a legitimate Web Connect download. Second, the FITID on every transaction: this is the unique fingerprint Quicken uses to deduplicate, so re-importing the same file or an overlapping date range won't create doubles. Note that OFX 1.x is SGML, so leaf tags like <TRNAMT>-50.00 often omit their closing tag by design.
- Header block exactly as the first line, OFX 1.0.2 (VERSION:102), DATA:OFXSGML
- SONRS sign-on with STATUS code 0 and a DTSERVER timestamp
- BANKACCTFROM: BANKID (routing), ACCTID (account), ACCTTYPE
- STMTTRN per row: TRNTYPE, DTPOSTED (YYYYMMDD), TRNAMT (negative = money out), FITID, NAME/MEMO
- INTU.BID so Quicken recognizes it as Web Connect
- A unique FITID per transaction for built-in dedup
Prepare your CSV before converting
Whatever route you take, a clean CSV converts far more reliably. Open your bank's export and make sure you can identify three essentials: a date column, an amount column, and a description column. Everything else is optional.
Dates should be unambiguous; ISO format (YYYY-MM-DD) is safest because MM/DD vs DD/MM guesswork is a common source of wrong postings. Amounts should be numeric without currency symbols or thousands separators. If your bank splits money in and money out into two columns (Debit and Credit), you'll need them combined into a single signed amount where outflows are negative and deposits are positive, since OFX uses one signed TRNAMT field. Strip any running-balance column or summary rows so they don't get parsed as transactions.
Decide what to use for FITID. If your bank includes a transaction or reference ID, use it; it's the most stable choice. If not, a converter will synthesize one from the date, amount, and description, which is fine as long as it's deterministic so repeat imports still dedup correctly.
- Keep date, amount, and description columns; remove balance and summary rows
- Use ISO dates (YYYY-MM-DD) to avoid day/month ambiguity
- Combine separate debit/credit columns into one signed amount (out = negative)
- Remove currency symbols and thousands separators from amounts
- Prefer a real bank reference for FITID; otherwise let the tool derive a stable one
Convert your CSV to QFX with LedgerBridge
Building correct OFX 1.0.2 by hand is error-prone, so the practical path is a converter. With LedgerBridge it runs entirely in your browser: nothing is uploaded, so your account numbers and transactions stay on your machine, which matters for financial data. The tool is free to try, with a one-time $29 Pro unlock for unlimited rows.
The flow is short. Drop your CSV (or Excel) into the converter and it previews the parsed rows. Map the columns: which one is the date, the amount, and the description, and confirm the date format and the debit/credit sign convention. Set the account type (checking, savings, or credit card) and, if asked, the account or routing number you want written into BANKACCTFROM. Choose QFX as the output and download the file. LedgerBridge writes the OFX 1.0.2 header, populates the Intuit tags including INTU.BID, and generates a unique FITID per row so Quicken's deduplication works on import and re-import.
If you'd rather not use a converter, you can still produce the file manually by templating the header and body shown above, but you'll be responsible for getting the INTU.BID and FITID values right yourself.
- Open the converter and drop in your CSV or Excel file (it parses locally, no upload)
- Map the date, amount, and description columns and confirm the date format
- Set the account type and account details for BANKACCTFROM
- Select QFX output and download; the tool adds the header, INTU.BID, and per-row FITIDs
Import the QFX into Quicken (and QuickBooks)
In Quicken for Windows, go to File > File Import > Web Connect File (.QFX) and select your converted file. Quicken reads the INTU.BID and account details, then asks whether to link the transactions to an existing account or create a new one. Pick the matching account so the register updates in place. On Quicken for Mac, use File > Import > Bank or Brokerage File and choose the QFX. After import, review the register; because each transaction carries a FITID, importing an overlapping range later won't duplicate the ones Quicken has already seen.
If you also use QuickBooks Desktop, the same kind of file (a QBO Web Connect file) imports via File > Utilities > Import > Web Connect Files. QuickBooks Online doesn't take QFX; its CSV/Excel import path has its own row limits (commonly around 1,000 transactions per import and a date window per upload), so for large histories you'll split the file into batches. If a converted file is refused, the usual culprits are a missing or malformed header, a bad INTU.BID, or a date format Quicken can't parse; re-export with ISO dates and reconvert.
One note on expectations: QFX files generated outside a bank's own Web Connect system can occasionally trigger Quicken's branding or institution checks depending on version. A converter that writes a sensible INTU.BID handles the common cases, but if a specific build of Quicken rejects an otherwise valid file, that's a known edge of the QFX format rather than a problem with your data.
- Quicken Windows: File > File Import > Web Connect File (.QFX), then link to the right account
- Quicken Mac: File > Import > Bank or Brokerage File
- QuickBooks Desktop: File > Utilities > Import > Web Connect Files
- QuickBooks Online: no QFX; use CSV import and respect its per-import row/date limits
- Rejected file? Check the header, INTU.BID, and switch to ISO dates, then reconvert
Frequently asked questions
Why can't I just import the CSV straight into Quicken?
Quicken's transaction import is built around the OFX family (QFX/Web Connect and Direct Connect). CSV has no account, transaction ID, or balance information, so Quicken can't reliably place those rows into a bank account's register. Converting to QFX gives Quicken the structure it expects, including a unique FITID per transaction so it can deduplicate.
What is INTU.BID and do I need it?
INTU.BID is the Intuit-assigned bank identifier that Quicken uses to recognize a file as a legitimate Web Connect (QFX) download. A QFX without a sensible INTU.BID is often rejected or not recognized. A good converter writes this tag for you; if you build the file by hand, you have to supply it yourself.
Will re-importing the same file create duplicate transactions?
No, as long as each transaction has a stable, unique FITID. Quicken uses the FITID to detect transactions it has already imported and skips them. This is why it's best to use your bank's own reference ID when available, or let the converter generate a deterministic FITID from the date, amount, and description so repeat and overlapping imports stay clean.
Is QFX the same as the QBO file QuickBooks uses?
They're close cousins. Both are OFX 1.0.2 SGML with Intuit extensions, but QFX targets Quicken and QBO (Web Connect) targets QuickBooks Desktop. You import a QBO via File > Utilities > Import > Web Connect Files in QuickBooks Desktop, while QuickBooks Online uses CSV import with its own row and date limits instead. Pick the output that matches your software.
Is it safe to convert bank data in an online tool?
It depends on the tool. Many web converters upload your file to a server. LedgerBridge runs the conversion entirely in your browser, so your CSV and the account numbers in it never leave your computer. For financial data that local, no-upload approach is the safer default.
Related guides
Not affiliated with Intuit/QuickBooks/Quicken/Xero. LedgerBridge is a file-conversion utility, not financial advice.