QIF import creates the wrong account type
QIF is the least specified format still in daily use. It has no version, no schema, and its account type is declared in one short line that decides where every transaction lands.
The type header
A QIF file opens by declaring what it contains:
!Type:BankThe common values are Bank for a current or checking account, CCard for a credit card, Cash for petty cash, and Oth A and Oth L for other assets and liabilities. The importer creates or matches an account of that type.
The fix is upstream: set the account type before the file is written so the header matches the account you are importing into, rather than editing it afterwards.
Why the wrong type inverts your signs
A bank account is an asset and a credit card is a liability, so a positive amount means opposite things on each. Import a credit-card statement as !Type:Bank and every charge reads as money coming in.
The totals stay plausible, which is what makes this expensive to find later. Nothing fails; the account simply behaves as though the month went unusually well.
Why a new account appears
Most importers match an existing account by name and type together. A file whose type does not match creates a new account rather than reporting a conflict — so the transactions are not missing, they are in an account you did not expect and may not have noticed.
If transactions have "disappeared" after a QIF import, look at the account list before looking at the file.
The other QIF trap: dates
QIF writes the date on a D line and says nothing about its order. Quicken and most other importers interpret it in the running machine’s locale, so the same file means different things on a US and a UK computer.
There is no in-band fix
Nothing can be added to a QIF file to state the date order. The only defence is knowing which order was written and confirming the importing machine agrees — which is why a converter should tell you which order it used rather than leaving you to infer it.
Fixing a file you already have
- 1Open the .qif in a text editor. It is plain text.
- 2Change the !Type: line to the correct type.
- 3Delete the account created by the bad import, and its transactions, before importing again — otherwise you will have both.
- 4Import, and check the sign of the first few transactions against the statement before doing anything else.
The !Account block, and why it helps
A QIF file may open with an account block naming the account the transactions belong to, before the type header:
!Account
NBusiness Current
TBank
^
!Type:BankWith it, the importer knows which account is meant rather than inferring one from the type. Without it, a file of type Bank imported into a program with three bank accounts goes wherever the importer decides — which is the other route to transactions appearing somewhere unexpected.
Categories, and the bracket convention
The L line carries the category for a transaction. A plain name is a category; a name in square brackets is another account, which makes the entry a transfer rather than income or expenditure.
LOffice Expenses <- a category
L[Savings Account] <- a transferA converter that writes bracketed values by accident creates transfers to accounts that do not exist, and importers respond by creating them. If unfamiliar accounts appeared after an import, this is worth checking alongside the type header.
Related
Quicken QFX import errors, and how to fix them
QFX carries the same Intuit bank ID as QBO, plus Quicken’s own checks on top. The errors you see, what each one means, and the fixes.
Read"Invalid date format" when importing bank transactions
The error is easy to fix. The danger is the rows that do not trigger it — the ones that import silently in the wrong month.
ReadWhy your imported balance doesn’t match the statement
A closing balance that disagrees with the bank is telling you something specific. How to read the size and sign of the gap to find the cause.
Read