Skip to main content
Importing & Bank Sync

Importing Transactions

Import CSV, OFX, QFX, and QIF files safely, review matches, prevent duplicates, and recover from import mistakes.

Written By Pedro

Last updated 18 days ago

Import transactions from a CSV, OFX, QFX, or QIF file downloaded from your bank. Zerosum previews the file before saving anything, skips transactions the account has already seen, and sends new rows to Review.

Choose a file format

  • CSV (.csv) works with most bank exports. You map the date, payee, memo, and amount columns before importing.

  • OFX / QFX (.ofx, .qfx) uses a fixed banking format and usually includes a bank-issued transaction ID (FITID) for exact duplicate detection.

  • QIF (.qif) is an older fixed format with date, amount, payee, and memo fields.

💡 Tip: Prefer OFX or QFX when your bank offers it. The bank-issued IDs make duplicate detection more precise.

Import a file

  1. Open the checking, savings, cash, or credit-card account that should receive the transactions. Loan accounts cannot receive file imports.

  2. On desktop, click Import in the account's toolbar. When the toolbar is narrow it shows only the upload icon, named Import transactions. On your phone, open the account's ⋯ menu and choose Import transactions.

  3. Choose a supported file. Zerosum accepts up to 20,000 parsed transactions in one import.

  4. Review the preview and import options, then choose Import.

ℹ️ Privacy: The raw bank file is parsed in your browser. Nothing is saved while you are checking the preview. After you confirm the import, the parsed transaction fields needed for the import are sent to Zerosum and stored in your account; the raw file itself is not uploaded or stored.

Check the preview

The preview is the last check before anything is saved. Confirm that dates, payees, notes, inflows, and outflows look right. A wrong date format or reversed amount direction can create transactions that no longer match the identities from a corrected import.

Rows that carry no transaction, such as a totals line at the end of the file, are left out. The dialog shows how many rows were skipped, and you can open the list to see the reason for each.

CSV columns and dates

CSV layouts differ between banks. Zerosum works out the delimiter, skips any account details your bank writes above the table, and finds the date, amount, and payee columns from the header names or, when those say nothing, from the values in the file. You can change:

  • Date column and format, including YYYY-MM-DD, MM/DD/YYYY, and DD/MM/YYYY.

  • Payee and memo columns.

  • Amount mode: one signed amount column or separate inflow and outflow columns.

  • Flip sign when your bank exports expenses as positive amounts.

  • First row is a header. Zerosum detects whether the file starts with column names. Untick it when the file has none, so its first transaction is imported too.

Map columns and check the preview before importing

💡 Tip: Check several rows in the preview, especially dates and amount direction, before continuing.

OFX, QFX, and QIF options

OFX and QFX have a fixed structure, so Zerosum extracts dates, amounts, payees, memos, and available bank IDs automatically. QIF is also parsed automatically, and its date format is read from the file like a CSV.

Some files never make clear whether dates are day-first or month-first, for example when every day of the month is 12 or less. The preview then shows a warning with the first date as it currently reads. Change the date format if that date is wrong.

Three options sit above the preview for these formats. Swap payee and memo helps when your bank puts the merchant in the memo field and a reference code in the payee field. Flip sign helps when expenses arrive as positive amounts. Don't import memos leaves the memo off every transaction, for banks that fill it with boilerplate such as rewards points earned. A check number is still kept on the note, and a memo still stands in for the payee when the file has no payee field.

Settings are saved for each account

After a successful import, Zerosum saves the settings you used for that account: the CSV columns, date format, amount mode, and Flip sign, or the OFX, QFX, and QIF options. The next file for the same account starts with them, and the dialog says it is using your saved setup. Columns are saved by their header name, so a bank that reorders its columns still works. If a saved column is missing from the new file, Zerosum detects the columns from scratch.

Choose Detect columns again to set the saved columns aside for the current file. Untick Use these settings for this account next time before importing a one-off file; the settings saved earlier stay as they were. Saved settings follow your account to your other devices.

What gets imported

New file rows are added to the register as unapproved transactions in Review. The import carries the date, amount, payee or raw bank name, memo, and available bank identity. A check number in the file is kept at the start of the memo, like #1042, even when you choose not to import memos. Categories and split details are not imported from the file. Add categories, splits, tags, or other budgeting details while reviewing.

ℹ️ Important: Imported rows count right away. As soon as the import finishes, they are in the account balance and the budget, and they add to the review count until you approve them. A row dated after today waits as a scheduled transaction and counts once its date arrives. When an import links to a transaction you already entered, only that transaction counts, so nothing is counted twice.

Review and match transactions

Imported rows appear in the normal account register with Approve and Reject actions. Zerosum cleans common bank-name noise and uses exact and fuzzy payee matching; you can choose or create a payee and remember the mapping for later imports. See the Manage payees guide for mapping and category-behavior options.

If you already entered a transaction manually, Zerosum can link an import with the same account and exact amount when the dates are close. You can also match eligible rows manually, including when the amounts differ. Linked rows show what the bank sent before you approve, reject, or unlink. Read Scheduled & recurring transactions and Reviewing, matching & linking imported transactions for the complete rules.

How duplicate prevention works

Duplicate history belongs to each account. You can safely import overlapping or repeated exports into the same account: Zerosum checks both transactions already present and imported identities you previously rejected or deleted.

  • OFX / QFX primarily uses the bank-issued transaction identity together with the account.

  • CSV / QIF uses the account, date, amount, and occurrence position so two genuine same-day transactions for the same amount can still import separately.

  • Across file types, Zerosum also applies one-for-one date-and-amount protection so a row already represented by one source is not duplicated by another source.

Changing a transaction's date or amount can make it look like a new transaction. When the import finishes, the success message reports how many transactions were imported, linked to existing entries, and skipped as duplicates.

Transactions before the account start

Rows dated before the account's start are skipped by default. The start is the account's earliest transaction, which for a synced account is its starting balance. If you have reconciled the account, the start moves to three days before your latest reconciled transaction, because bank statements overlap by a few days. Importing rows before that point would double count money the starting balance or a reconciliation already covers.

When rows were skipped for this reason, the import dialog stays open and says how many. Choose Import them anyway to bring in just those older rows. This changes the account's history before that date, so check the starting balance afterwards.

Deleted imports do not come back

Rejecting a transaction in Review, or deleting it after approval, records that you intentionally removed that imported transaction. Zerosum will skip the same identity if a later file contains it again for this account. This protection is permanent and prevents overlapping bank exports from repeatedly restoring transactions you do not want.

Duplicate history belongs to the account. The same file can still be imported into a different account, where it represents separate account history.

Correct a mistaken import

ℹ️ Imported the file with the wrong columns, date format, or amount direction? Undo the Imported transactions from file action instead of rejecting or deleting the rows one by one. Correct the import options, then import the file again. Undoing the import removes the batch without marking those transactions as rejected.

If you rejected or deleted individual imports accidentally, undo or revert that action while it is still available in History. Otherwise, enter the missing transactions manually. For a large historical re-import, the last resort is to create a replacement account, move the history you want to keep, and import into that new account.

Troubleshooting

The import says transactions were skipped. The account has already seen those imported identities, including rows previously rejected or deleted. This is expected duplicate protection. Follow the Undo guidance above if the whole import was a mistake; otherwise restore the individual action from History when available or enter the missing row manually.

Older transactions were skipped. They are dated before the account's start or last reconciliation. Use Import them anyway in the dialog if you really want them.

Dates look wrong. Change the CSV or QIF date format and check the preview again.

Amounts have the wrong sign. Use Flip sign for CSV exports that show expenses as positive.

Every memo is the same bank boilerplate. Check Don't import memos before importing an OFX, QFX, or QIF file. For CSV, set the memo column to None.

Columns are wrong. Select the date, amount, payee, and memo columns yourself. If the dialog is using a saved setup that no longer fits the file, choose Detect columns again.

The first transaction is missing, or the column names show up as a transaction. Change First row is a header and check the preview again.

The file is rejected. Confirm that it is CSV, OFX, QFX, or QIF, contains no more than 20,000 parsed transactions, and is being imported into a non-loan account. If your bank offers only PDF or Excel, export as CSV.

Where to next