Free sample OFX file (bank and credit card), explained
Need an OFX file to test an import into Xero, QuickBooks Online, Sage, FreeAgent, Wave or GnuCash, check a converter's output, or test your own parser? These are free to download with no sign-up: a fictional month of business checking and a fictional credit card statement, each as a ready-to-import .OFX with known totals, so you can tell at a glance whether the import worked. Below, the file explained line by line, the fields, how OFX differs from QFX and QBO, and how to check the result.
Short answer: download the sample bank OFX (31 transactions on checking account 0427: 11 credits totalling 29,597.43, 20 debits totalling 28,575.27, net +1,022.16, ending balance 13,440.52) or the sample credit card OFX (21 transactions on card 7316: 19 charges totalling 1,939.94, 2 payments and credits totalling 1,542.18, balance owed 3,243.88). Both are OFX 1.02: a short header block, then tags such as <STMTTRN> for each transaction with its type, date, signed amount and a unique <FITID>. Import into a test company or a demo file first, never into real books.
Open a sample OFX in the converter
Open a fictional bank OFX download in Utilly's OFX converter: see every transaction, then download it as .QBO for QuickBooks, .IIF for QuickBooks Desktop, .QIF for Quicken, or CSV. Free for the sample, and free for your own files up to 100 rows.
- What is an OFX file?
- The sample OFX files
- The bank OFX, line by line
- OFX transaction fields
- The credit card OFX
- OFX vs QFX vs QBO (and why there's no sample QFX here)
- Which programs import the sample
- Checking the import against the known totals
- Editing an OFX file without breaking it
- What the sample is not for
- An OFX from your own statement
- FAQ
1. What is an OFX file?
OFX (Open Financial Exchange) is the standard banks use for downloadable statements: a plain-text file with the account, the statement period, every transaction and the balance. It started in 1997 and is now maintained by the Financial Data Exchange (FDX) OFX Work Group. Two things to know before you open one:
- Two syntaxes. OFX 1.x files (like these samples, version 1.02) use SGML: a block of
NAME:VALUEheader lines, then tags where a value usually has no closing tag, such as<TRNAMT>-6420.18. OFX 2.x files are XML, with an<?xml ?>declaration and a closing tag for every value. FDX says most software still reads both, and many bank downloads are still 1.x. - QFX and QBO are OFX with extras. A Quicken .QFX or a QuickBooks .QBO Web Connect file is an OFX file with Intuit-specific tags added, such as the bank ID
<INTU.BID>. The extras are why a file meant for one program can be refused by another; section 6 has the details.
Not sure which format your software wants? QBO vs IIF vs QIF compares OFX, QFX, QBO, IIF, QIF and CSV program by program.
2. The sample OFX files
The bank and card files are made by the same exporter Utilly uses for customers' statements, run on two fictional statements, so they're exactly what a real conversion produces.
| File | What's in it | Known totals |
|---|---|---|
| Bank OFX | Business checking, September 2026: 20 DEBIT and 11 CREDIT transactions on account 0427 | Out 28,575.27, in 29,597.43, net +1,022.16; ending balance 13,440.52 |
| Credit card OFX | Business card, September 2026: 19 charges (including 21.36 interest) and 2 credits (a payment and a return) on card 7316 | Charges 1,939.94, credits 1,542.18; balance owed 3,243.88 |
| Bank-style OFX download | The same 31 checking transactions laid out the way a bank's own download often is, with the bank's name and an Intuit bank ID in the sign-on section. It's the file the converter's sample button opens | Net +1,022.16; ending balance 13,440.52 |
| Bank .QBO (Web Connect) | The bank OFX with the two Intuit tags added, for QuickBooks | Same as the bank OFX |
| Bank statement PDF / card statement PDF | The statements the files come from, explained on sample bank statement PDF and sample credit card statement PDF | 12,418.36 to 13,440.52; 2,846.12 to 3,243.88 owed |
The same statement in every other format (CSV, Excel, QuickBooks Online CSV, Xero CSV, IIF, QIF) is on sample bank statement files.
3. The bank OFX, line by line
Open the file in Notepad or TextEdit. It starts with nine header lines and a blank line:
OFXHEADER:100
DATA:OFXSGML
VERSION:102
SECURITY:NONE
ENCODING:USASCII
CHARSET:1252
COMPRESSION:NONE
OLDFILEUID:NONE
NEWFILEUID:NONE
OFXHEADER:100says it's an OFX file,DATA:OFXSGMLandVERSION:102say it's the SGML syntax, version 1.02.ENCODING:USASCIIandCHARSET:1252say how to read the text;SECURITY,COMPRESSIONand the twoFILEUIDlines are set toNONE, as in most bank downloads.
Next is the sign-on section, which says who made the file and when:
<OFX><SIGNONMSGSRSV1><SONRS><STATUS><CODE>0<SEVERITY>INFO</STATUS><DTSERVER>20261101090000<LANGUAGE>ENG<FI><ORG>Utilly</FI></SONRS></SIGNONMSGSRSV1>
<CODE>0 means success, and <DTSERVER> is the moment the file was made, so yours shows the time you downloaded it. Then the statement itself: the account, the period and the first transactions.
<BANKMSGSRSV1><STMTTRNRS><TRNUID>1<STATUS><CODE>0<SEVERITY>INFO</STATUS><STMTRS><CURDEF>USD<BANKACCTFROM><BANKID>999999999<ACCTID>0427<ACCTTYPE>CHECKING</BANKACCTFROM>
<BANKTRANLIST><DTSTART>20260901<DTEND>20260930
<STMTTRN><TRNTYPE>DEBIT<DTPOSTED>20260901120000<TRNAMT>-6420.18<FITID>20260901E26D1A27070800<NAME>ACH DEBIT GUSTO PAYROLL 0912<MEMO>ACH DEBIT GUSTO PAYROLL 0912</STMTTRN>
<STMTTRN><TRNTYPE>CREDIT<DTPOSTED>20260901120000<TRNAMT>3184.27<FITID>202609019B6B1ED70CD300<NAME>STRIPE TRANSFER ST-K2M8Q4<MEMO>STRIPE TRANSFER ST-K2M8Q4</STMTTRN>
<STMTTRN><TRNTYPE>DEBIT<DTPOSTED>20260902120000<TRNAMT>-1850.00<FITID>20260902692F5A239AB700<NAME>CHECK 2041<MEMO>CHECK 2041</STMTTRN>
<BANKACCTFROM>identifies the account:BANKID(a routing number in a real bank file;999999999here, because a PDF statement doesn't give one),ACCTID(the account, 0427, the last four digits on the statement) andACCTTYPE(CHECKING).<DTSTART>and<DTEND>are the statement period, year first: September 1 to 30, 2026.- Each
<STMTTRN>is one transaction. The first is the payroll payment, −6,420.18, the second a Stripe deposit, +3,184.27.
The file ends with the last transactions and the ledger balance:
<STMTTRN><TRNTYPE>DEBIT<DTPOSTED>20260930120000<TRNAMT>-15.00<FITID>2026093088B3E73B4B8C00<NAME>MONTHLY SERVICE FEE<MEMO>MONTHLY SERVICE FEE</STMTTRN>
<STMTTRN><TRNTYPE>CREDIT<DTPOSTED>20260930120000<TRNAMT>3.21<FITID>20260930A3183A5E30D100<NAME>INTEREST PAYMENT<MEMO>INTEREST PAYMENT</STMTTRN>
</BANKTRANLIST><LEDGERBAL><BALAMT>13440.52<DTASOF>20260930</LEDGERBAL></STMTRS></STMTTRNRS></BANKMSGSRSV1></OFX>
<LEDGERBAL> is the balance at the end of the statement, 13,440.52 on September 30, the same as the PDF's ending balance. Most programs show it as the statement balance next to your books' balance, but don't post it: the transactions are what get imported.
4. OFX transaction fields
| Tag | In the sample | Rules |
|---|---|---|
| TRNTYPE | DEBIT or CREDIT | The kind of transaction. The spec also has types such as CHECK, ATM, POS, XFER, FEE, INT and DIRECTDEP. Most programs go by the sign of the amount, not the type |
| DTPOSTED | 20260901120000 | The posting date, year first (YYYYMMDD, optionally with a time). Because the year comes first, OFX has none of a CSV's day/month confusion |
| TRNAMT | -6420.18 / 3184.27 | Signed from the account holder's side: money out is negative, money in is positive. A dot for decimals, no currency symbol, no thousands separators |
| FITID | 20260901E26D1A27070800 | A transaction ID that should be unique within the account and the same every time the transaction is downloaded. Programs use it to recognise transactions they've already imported |
| NAME | The bank's description, up to 32 characters | The payee. OFX 1.02 caps it at 32 characters, which is why Utilly puts the full description in MEMO as well |
| MEMO | The full description | Extra detail. Some programs show it, some combine it with NAME |
Characters such as & and < in a description are written as & and <, as in HTML, so they can't be mistaken for a tag.
5. The credit card OFX
The card file has the same header and sign-on section, but uses the credit card message set: CREDITCARDMSGSRSV1, CCSTMTRS and <CCACCTFROM> with only an account ID, no bank ID or account type:
<CREDITCARDMSGSRSV1><CCSTMTTRNRS><TRNUID>1<STATUS><CODE>0<SEVERITY>INFO</STATUS><CCSTMTRS><CURDEF>USD<CCACCTFROM><ACCTID>7316</CCACCTFROM>
<BANKTRANLIST><DTSTART>20260901<DTEND>20260930
<STMTTRN><TRNTYPE>CREDIT<DTPOSTED>20260905120000<TRNAMT>1500.00<FITID>20260905BB4B10ECD76000<NAME>PAYMENT THANK YOU - WEB<MEMO>PAYMENT THANK YOU - WEB</STMTTRN>
<STMTTRN><TRNTYPE>CREDIT<DTPOSTED>20260914120000<TRNAMT>42.18<FITID>202609146B533A8F6B1600<NAME>OFFICE DEPOT RETURN AUSTIN TX<MEMO>OFFICE DEPOT RETURN AUSTIN TX</STMTTRN>
<STMTTRN><TRNTYPE>DEBIT<DTPOSTED>20260901120000<TRNAMT>-72.00<FITID>202609010417EE8EBA7100<NAME>GOOGLE *WORKSPACE CC@GOOGLE.COM<MEMO>GOOGLE *WORKSPACE CC@GOOGLE.COM</STMTTRN>
- A charge is negative (−72.00 for Google Workspace): it's money out from the cardholder's side, and it raises what you owe. A payment or return is positive (+1,500.00, +42.18).
- Credits come first because the statement prints Payments and Credits before Purchases. Programs sort by date, so the order in the file doesn't matter.
<STMTTRN><TRNTYPE>DEBIT<DTPOSTED>20260928120000<TRNAMT>-31.77<FITID>20260928545F9E1B6FBF00<NAME>UBER *TRIP HELP.UBER.COM CA<MEMO>UBER *TRIP HELP.UBER.COM CA</STMTTRN>
<STMTTRN><TRNTYPE>DEBIT<DTPOSTED>20260930120000<TRNAMT>-21.36<FITID>20260930E76AD4F2127B00<NAME>PURCHASE INTEREST CHARGE<MEMO>PURCHASE INTEREST CHARGE</STMTTRN>
</BANKTRANLIST><LEDGERBAL><BALAMT>-3243.88<DTASOF>20260930</LEDGERBAL></CCSTMTRS></CCSTMTTRNRS></CREDITCARDMSGSRSV1></OFX>
The ledger balance is negative, −3,243.88: a card balance you owe is written as a negative number in OFX, the same convention as the amounts. The last charge is interest, PURCHASE INTEREST CHARGE, −21.36. If your card statement shows purchases as positive numbers, that's normal: a statement is written from the bank's side, and sample credit card statement PDF explains why the signs flip.
6. OFX vs QFX vs QBO (and why there's no sample QFX here)
| Format | What it adds to OFX | Who reads it | Sample |
|---|---|---|---|
| .OFX | Nothing: the plain standard | Xero, QuickBooks Online, Sage Accounting, FreeAgent, Wave, GnuCash | Bank, card |
| .QBO (QuickBooks Web Connect) | An <FID> and <INTU.BID> bank ID in the sign-on section | QuickBooks Desktop (Web Connect reads only .qbo) and QuickBooks Online; Xero and Wave also take it | Bank .QBO |
| .QFX (Quicken Web Connect) | The same Intuit tags, with a bank ID Quicken recognises | Quicken; Xero, Wave and GnuCash also take QFX | None: see below |
In the sample files, the bank .QBO differs from the bank OFX by one line: its sign-on section reads <FI><ORG>Utilly<FID>3000</FI><INTU.BID>3000 instead of <FI><ORG>Utilly</FI>. Everything else, including every FITID, is identical. The .QBO itself, bank and card, is explained on sample QBO file.
Why no sample QFX: Quicken checks a Web Connect file with its online service before importing it, and the bank ID must belong to a bank that supports Quicken's Web Connect. Quicken says only a QFX from your bank works for this, so a downloaded sample or a renamed .ofx isn't a fair test. To test a Quicken import, use the sample QIF instead (Quicken for Windows: File → File Import → QIF File), or the QFX from your own bank. QuickBooks Desktop doesn't read QFX either: Intuit says Web Connect only works with .qbo files.
7. Which programs import the sample
| Program | Where to import it |
|---|---|
| Xero | Accounting → Bank accounts → the account's menu icon (⋮) → Import a Statement. Xero lists OFX with QBO, QFX, QIF and CSV and suggests OFX when you have the choice. Common errors are on Xero bank statement import errors |
| QuickBooks Online | Bank transactions → Link account → Upload from file takes OFX as well as .QBO and CSV. For QuickBooks Desktop, use the .QBO (Banking → Bank Feeds → Import Web Connect Files); .QBO Web Connect import errors covers what goes wrong |
| Sage Accounting | The bank statement import under Banking. Sage says OFX files upload without editing, and only the first bank account in a file is imported |
| Sage 50 | U.S. edition: Tasks → Account Reconciliation → Import (OFX or QFX, for matching only). UK: Bank Feeds → Import statement. Canada: File → Import/Export → Import Online Statements. Steps per edition: how to import a bank statement into Sage 50 |
| Zoho Books | Banking → the account → Gear → Import Statement. Takes OFX, QIF, CSV, TSV, XLS, CAMT.053/054 and MT940; lines arrive as uncategorized transactions to match. Steps: how to import a bank statement into Zoho Books |
| NetSuite | Transactions → Bank → Upload File → Import with default parser, then pick the account and the file's character encoding. Lines arrive for matching on Match Bank Data. Steps: how to import a bank statement into NetSuite |
| Odoo | Accounting Dashboard → the Bank journal's ⋮ menu → Import file (Odoo 17 and 18 also have an Import File button on the journal). OFX is mapped automatically; lines arrive as bank transactions to reconcile. Steps per version: how to import a bank statement into Odoo |
| FreeAgent | Banking → Bank Accounts → the account → Upload Statement (OFX, QIF or CSV) |
| Wave | Accounting → Transactions → More → Upload transactions, then pick the payment account. Wave takes OFX, QBO, QFX and ASO files. Bank feed stopped? See Wave transactions not importing |
| GnuCash | File → Import → Import OFX/QFX, then pick the account the first time; GnuCash remembers it for the next file from the same account |
Import the bank file into a bank account and the card file into a credit card account. Menus change; if a step differs, follow the vendor's current help page.
8. Checking the import against the known totals
| Check | Bank OFX | Card OFX | If it's wrong |
|---|---|---|---|
| Transactions | 31 | 21 | Fewer is often right: Xero and others skip FITIDs they've already imported, so a second import of the same file brings in nothing. Twice as many means the program didn't check, so delete the second batch |
| Money out / charges | 28,575.27 (20) | 1,939.94 (19) | A different total means lines were skipped as duplicates or rejected; look at the import summary |
| Money in / credits | 29,597.43 (11) | 1,542.18 (2) | Same as above |
| Change in balance | +1,022.16 | 397.76 more owed | −1,022.16 (or 397.76 less owed) means the file went into the wrong kind of account or the signs were flipped |
| Statement balance | 13,440.52 | −3,243.88 | Shown from LEDGERBAL. Your books only match it once the opening balance (12,418.36 / 2,846.12 owed) is in |
Imported a file twice in a program that didn't skip the duplicates? Duplicate transactions after an import covers finding and removing them in QuickBooks.
9. Editing an OFX file without breaking it
- Use a plain text editor (Notepad, or TextEdit in plain-text mode), not Word or Excel. Excel doesn't understand the tags and saving from it ruins the file.
- Keep the header block exactly, including the blank line after
NEWFILEUID:NONE, and don't mix in XML closing tags for values in a 1.02 file. - Keep every FITID unique. Copying a
<STMTTRN>to make a test transaction? Change its FITID too, or the program may treat the copy as already imported and skip it. - Amounts and dates: a dot for decimals, a minus sign for money out, no thousands separators, dates year first.
- Change the account ID only on purpose. Programs match ACCTID (and BANKID) to the account you imported into last time; a new value can make them ask which account it belongs to.
Need to open an OFX in Excel, Quicken or a text editor? See how to open an OFX or QIF file. Easier than editing by hand: open the file in the OFX to QBO converter, OFX to IIF / QFX to IIF, OFX to QIF / QFX to QIF or OFX to Excel / OFX to CSV / QFX to CSV, which read the transactions and write a clean file in the format you need.
10. What the sample is not for
It's for learning the format and testing imports, converters and parsers. The bank, card, accounts and transactions are made up (Example Community Bank and Sample Customer LLC don't exist), and the statements they come from say SAMPLE STATEMENT, FICTIONAL DATA FOR DEMONSTRATION ONLY. Don't import them into books you file taxes or reports from, and don't use them as a record of anything.
11. An OFX from your own statement
Have a CSV or Excel download from your bank? CSV to OFX writes the .OFX free up to 100 rows. Only have PDF statements, or months your bank no longer offers as downloads? Upload the PDF to bank statement to OFX: the preview is free with no sign-up and checks that the rows add up to the statement's ending balance before you download; your first 3 full statements are free with your email, then downloading uses 1 credit ($9 for 5, no subscription) or Pro at $19 a month, and one credit covers every format of that statement.
Turn your own statement into an OFX
CSV and Excel exports are free up to 100 rows. PDF statements, downloaded or scanned, get a free preview with the balance check, no sign-up. Files are processed in memory and not stored.
Sources: Financial Data Exchange, OFX Work Group (OFX versions, SGML vs XML); Quicken, Web Connect troubleshooting; Intuit, manually upload transactions into QuickBooks Online; Xero Central; GnuCash manual. Checked November 1, 2026. Vendors update these pages; if a screen differs, follow the current article.
FAQ
Where can I download a sample OFX file?
On this page, free and with no sign-up. The bank OFX has 31 fictional business checking transactions for September 2026: 11 credits totalling 29,597.43 and 20 debits totalling 28,575.27, ending balance 13,440.52. The credit card OFX has 21 transactions: 19 charges totalling 1,939.94 and 2 payments and credits totalling 1,542.18, balance owed 3,243.88.
What does an OFX file look like?
Plain text. An OFX 1.x file starts with header lines such as OFXHEADER:100, DATA:OFXSGML and VERSION:102, then tags: a sign-on section, the account (BANKACCTFROM or CCACCTFROM), the statement period, one STMTTRN per transaction with TRNTYPE, DTPOSTED, TRNAMT, FITID, NAME and MEMO, and the ledger balance at the end. OFX 2.x files are the same data written as XML.
What is the difference between OFX and QFX?
QFX is Quicken's version of OFX: the same file with Intuit tags added, including a bank ID that Quicken checks with its online service before it imports the file. A QBO file is the same idea for QuickBooks. Xero, Wave and GnuCash read all three; Quicken's Web Connect needs a QFX from a bank it supports, and QuickBooks Desktop's Web Connect reads only .qbo.
Is there a sample QFX file?
Not here, on purpose. Quicken validates every Web Connect file and needs a bank ID from a participating bank, so a sample or a renamed .ofx isn't a fair test. To test a Quicken import, use the sample QIF file (File, File Import, QIF File in Quicken for Windows) or the QFX from your own bank.
Which sign does an OFX amount use?
The account holder's side: money out is negative and money in is positive. On a credit card file, a charge is negative and a payment or return is positive, and the balance you owe is written as a negative ledger balance, -3243.88 in the sample.
Can I open an OFX file in Excel?
It isn't a spreadsheet, so Excel shows the tags rather than a table, and saving it from Excel breaks the file. Read it in a plain text editor, or convert it: an OFX converter writes the same transactions as a CSV, a .QBO for QuickBooks, an .IIF for QuickBooks Desktop or a .QIF for Quicken.
Related guides
- How to open an OFX, QFX or QIF file (Excel, Quicken, text)
- How to open a .QFX file (Quicken, QuickBooks, Excel, iPhone or no Quicken)
- QBO vs IIF vs QIF: which file QuickBooks and Quicken actually need
- Free sample bank statement files: PDF, CSV, QBO, IIF, QIF and Xero CSV
- Xero bank statement import errors (and how to fix them)
- QuickBooks .QBO (Web Connect) import errors: OL-222, OL-221, “unable to verify the financial institution” and how to fix them
Related tools
- Bank reconciliation checker: compare a bank statement to your books and list missing, duplicate and mismatched transactions.
- Receipt to CSV: turn PDF or photo receipts and invoices into CSV, Excel, or QuickBooks and Xero bill imports.