Guides · File formats

Free sample OFX file (bank and credit card), explained

Updated November 1, 2026 · 7 min read · By the Utilly team

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.

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:VALUE header 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.

FileWhat's in itKnown totals
Bank OFXBusiness checking, September 2026: 20 DEBIT and 11 CREDIT transactions on account 0427Out 28,575.27, in 29,597.43, net +1,022.16; ending balance 13,440.52
Credit card OFXBusiness card, September 2026: 19 charges (including 21.36 interest) and 2 credits (a payment and a return) on card 7316Charges 1,939.94, credits 1,542.18; balance owed 3,243.88
Bank-style OFX downloadThe 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 opensNet +1,022.16; ending balance 13,440.52
Bank .QBO (Web Connect)The bank OFX with the two Intuit tags added, for QuickBooksSame as the bank OFX
Bank statement PDF / card statement PDFThe statements the files come from, explained on sample bank statement PDF and sample credit card statement PDF12,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:100 says it's an OFX file, DATA:OFXSGML and VERSION:102 say it's the SGML syntax, version 1.02.
  • ENCODING:USASCII and CHARSET:1252 say how to read the text; SECURITY, COMPRESSION and the two FILEUID lines are set to NONE, 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; 999999999 here, because a PDF statement doesn't give one), ACCTID (the account, 0427, the last four digits on the statement) and ACCTTYPE (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

TagIn the sampleRules
TRNTYPEDEBIT or CREDITThe 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
DTPOSTED20260901120000The 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.27Signed from the account holder's side: money out is negative, money in is positive. A dot for decimals, no currency symbol, no thousands separators
FITID20260901E26D1A27070800A 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
NAMEThe bank's description, up to 32 charactersThe payee. OFX 1.02 caps it at 32 characters, which is why Utilly puts the full description in MEMO as well
MEMOThe full descriptionExtra detail. Some programs show it, some combine it with NAME

Characters such as & and < in a description are written as &amp; and &lt;, 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)

FormatWhat it adds to OFXWho reads itSample
.OFXNothing: the plain standardXero, QuickBooks Online, Sage Accounting, FreeAgent, Wave, GnuCashBank, card
.QBO (QuickBooks Web Connect)An <FID> and <INTU.BID> bank ID in the sign-on sectionQuickBooks Desktop (Web Connect reads only .qbo) and QuickBooks Online; Xero and Wave also take itBank .QBO
.QFX (Quicken Web Connect)The same Intuit tags, with a bank ID Quicken recognisesQuicken; Xero, Wave and GnuCash also take QFXNone: 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

ProgramWhere to import it
XeroAccounting → 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 OnlineBank 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 AccountingThe bank statement import under Banking. Sage says OFX files upload without editing, and only the first bank account in a file is imported
Sage 50U.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 BooksBanking → 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
NetSuiteTransactions → 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
OdooAccounting 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
FreeAgentBanking → Bank Accounts → the account → Upload Statement (OFX, QIF or CSV)
WaveAccounting → 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
GnuCashFile → 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

CheckBank OFXCard OFXIf it's wrong
Transactions3121Fewer 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 / charges28,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 / credits29,597.43 (11)1,542.18 (2)Same as above
Change in balance+1,022.16397.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 balance13,440.52−3,243.88Shown 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 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.