Skip to main content
Free tool

OFX & QIF to Beancount

Your bank offers a download but no CSV. Paste the OFX, QFX or QIF file here and get balanced double-entry transactions back.

Runs entirely in your browser — your statement never leaves this page.

Beancount output

Paste an export on the left to see the converted transactions here.

1 errors, 0 warnings

  • not an OFX or QIF file — OFX starts with an OFXHEADER or <OFX>, QIF with a !Type: line

Questions about OFX and QIF

Is my bank statement uploaded anywhere?

No. The conversion runs in your browser with JavaScript, so the file never leaves your computer. You can confirm it by opening this page, disconnecting from the network, and converting anyway.

Which file types does this accept?

OFX in both of its forms — the older SGML dialect and the newer XML one — plus QIF. Banks also ship OFX under the .qfx and .qbo extensions, and those work too: the format is detected from the file's contents rather than its name.

Why is every transaction posted to Expenses:Uncategorized?

Because a bank export only knows what happened to one account. Double-entry needs both sides, so the second one is a placeholder you replace — either by setting the account above, or by categorising the entries afterwards. A guess that looks right is worse than a placeholder that is obviously wrong.

What stops a re-download creating duplicates?

Each OFX transaction carries a FITID, an identifier the bank keeps stable across downloads. It is preserved as an id: metadata field on every entry, which is what lets deduplication tools recognise a transaction you already have. QIF has no equivalent, so overlapping QIF exports need checking by hand.

What happens to split transactions in QIF?

The total converts and the split is flagged as a warning rather than being flattened into the first category, which would quietly attribute the whole amount to the wrong place. Add the individual postings by hand — the entry is already balanced, so it is a matter of dividing one side.

Skip the download entirely

Beancount.io connects to your bank and writes the transactions straight into your ledger — no export file in the middle.