Import OFX, QFX or QBO files
On this page
If your bank gives you an OFX file, or a QFX or QBO file made for Quicken or QuickBooks, your AI can read the file and bring the transactions into Pennyweight, one account at a time. New to importing? Start with how importing works.
What's in the file
Per the OFX specification, each transaction in an OFX file carries these fields:
- DTPOSTED, the date it posted, starting with the year, month and day (20260902). The rows your AI sends to Pennyweight must use YYYY-MM-DD, so your AI converts each one (2026-09-02).
- TRNAMT, the amount, signed from your side: money out is negative and money in is positive. On a card, a purchase is negative and a payment is positive. Pennyweight uses the same signs, so nothing needs flipping.
- NAME, the payee or a description, and sometimes a MEMO with extra detail.
- FITID, the bank's own ID for the transaction.
A file may also carry a LEDGERBAL block: the account's balance and the date it applies to. That's the number to check against after the import.
Per Quicken's help center, a QFX file is what a bank's website gives you for Quicken's Web Connect, with transactions and balances. Per QuickBooks' help center, Web Connect in QuickBooks reads only .qbo files. Whichever of the three you have, the steps are the same: your AI reads the file and sends the rows to Pennyweight.
How to do it
- Share the file with your AI and say which Pennyweight account it belongs to. Each import goes into one account you choose.
- If the account doesn't exist yet, ask your AI to add it. A new manual account needs an opening balance before its first import saves: the balance just before the file's first transaction. For a card or loan, give what you owed as a positive number. See set or correct an opening balance.
- Your AI shows a preview: the rows it found, any that look like duplicates, and the balance after the import. Nothing is saved yet. See reading an import preview.
- Say yes to import.
- If the file has a LEDGERBAL, compare it with the account's balance on that date.
Import statement.ofx into my Everyday Checking account.
statement.ofx is from my Holiday Fund account, which had $500.00 just before the first transaction in the file. Show me the preview with that opening balance, but don't import anything yet.
What you'll see
Your AI lists the transactions it read, with the dates converted, and shows the preview: how many rows are new, how many look like duplicates or need a look, and what the balance would be afterwards. After you confirm, it reports how many rows were saved, any it skipped and why, and the account's balance after the import.
For an account with no opening balance yet, the preview starts from the opening balance you give. Nothing is saved until you say yes.
What carries over
Each transaction brings its date, amount and payee. Category text, a currency code and a note, such as the MEMO, carry over when your AI includes them. A row with no category arrives uncategorized unless one of your rules matches it. The bank's transaction ID (FITID) doesn't move. See the full list of what doesn't move.
Good to know
- Your AI does the reading. Pennyweight has no OFX, QFX or QBO importer. Uploading a file straight to Pennyweight works for CSV only. If your AI can't open the file, download a CSV from your bank instead. See import a CSV.
- Duplicates are matched without the bank's ID. A row with the same date, amount and payee as one already in the account is marked a likely duplicate and skipped unless you say otherwise. A row with the same date and amount but a different payee is flagged for a look. So rows you've already imported from an earlier download of the same account aren't added twice.
- One account per import. If you download files for several accounts, import each into its own account. A transfer between them shows up in both files. An import links a pair on its own only when a row is categorized as a transfer and its other side matches it with clear evidence. Ask your AI to find and link the rest. See link transfers.
- Rules run when the import is saved. A row whose payee matches one of your active rules gets the rule's category, even if your AI sent another one. To keep the rows exactly as your AI sends them, ask it to import with rules turned off. Rules you add after the import change rows already saved only when your AI applies them. See rebuild your rules after moving.
- Check the balance. An account's balance is its opening balance plus its transactions, so a wrong opening balance or a missed row shows up as a gap against your bank. See after you import.