Skip to content

No account required

Start a project

The .ofx file.

The file your bank offers next to the CSV, and the one to take. It carries the fields that make reconciliation possible rather than approximate.

Also .qfx, .qbo, which are read the same way.

What it actually is

OFX is the interchange format banks use for statements. Each transaction carries a unique id assigned by the bank, a type code distinguishing a debit from a fee from a transfer, an amount, a date, and the free-text memo and payee fields.

The unique id is the important one. It makes re-uploading an overlapping period safe: the same transaction appearing in two exports is recognised as one transaction rather than doubling your spending for a fortnight.

Quicken's .qfx and QuickBooks' .qbo are OFX with a vendor block on top, and fold into this page. The older Microsoft Money .ofx files are SGML rather than XML, and both dialects are read.

At a glance

Carries
A bank-assigned unique id per transaction
Type codes
Debit, credit, fee, interest, transfer and more, as declared values
Dialects
SGML in older files, XML in newer ones
Variants
.qfx for Quicken, .qbo for QuickBooks
Read here as
Direct. Type codes and references make matching far better than a CSV.
Status
Ready
Fidelity
Read directly
Largest file
250 MB

Transactions come with their own type codes and references, which makes matching far better than a CSV.

Upload one

The analysis runs before there is anything to pay for. You see what it found, and the evidence behind it, first.

No account needed to start. You only pay when you like what you see.

What goes wrong, and what is done about it

01

Transfers between your own accounts counted as income

Moving money from a savings account to a current account produces a credit that looks exactly like revenue in the receiving account. A year of that inflates income by whatever you moved, and the total still reconciles against the bank.

A credit matched to an equal and opposite debit in another uploaded account within a short window is classified as a transfer and kept out of income, with the pairing listed so you can check it.

02

Dates that shift by a day

OFX timestamps carry a timezone offset that some banks emit incorrectly or omit entirely. A transaction at 23:40 then lands on the wrong day, which matters at every month boundary.

Where the offset is absent or inconsistent, dates are read in the account's own timezone and the choice is stated rather than assumed silently.

03

Memo fields that are the same merchant three ways

A statement says SQ *THE COFFEE HOUSE 04, not "lunch", and the descriptor changes when the merchant changes payment processor. Categorising on the raw string produces three merchants where there is one.

Merchants are normalised before anything is grouped, and a payment is only called recurring once it has repeated over at least three cycles at a stable amount.

If you have the choice, send something else

If your bank offers both, OFX beats CSV and both beat a PDF statement. A PDF has already discarded the reference field that invoice matching runs on, so a PDF-only project reconciles less and says so.

Questions people ask

Does this connect to my bank?

No, and it never asks for a login. It reads files you export yourself. There are no credentials stored and no ongoing access to revoke.

Can I upload several accounts?

Yes, and you should. Transfers between your own accounts can only be identified when both sides are present, and that classification is usually the largest single correction to a year of figures.

What if I upload overlapping periods?

The bank's transaction ids make the overlap detectable, so the same transaction in two files is counted once. With a CSV export, which has no ids, matching falls back to date, amount and description, and the residual uncertainty is reported.

Jobs people do with this file

Related formats