Guides
Import and reconcile
A work in progress — some sections are written, others are still being filled in.
Duration imports a CSV of account activity and helps you match each row against your journal, so your record and your bank agree. Matched rows reconcile; anything new is yours to categorise into a bucket.
How matching works
Each imported row is classified against what you already hold: already recorded (it matches a transaction on your ledger and reconciles quietly), or new (you have not seen it — categorise it into a bucket). An import is a staged batch you review and confirm, never a silent write, so you see what will change before it does.
Matching is done on the money, not the words. When a row is imported, Duration records a fixed key for that statement line — built from the account, date, amount and the bank’s text at the moment of import — and every later import is compared against that stored key. Because the key is captured once and never recomputed, re-importing the same file is a no-op, and importing an overlapping date range adds only the genuinely new rows.
Rename a row without breaking the match
A useful consequence of matching on the stored key: you can rewrite an imported transaction’s description afterwards — turning a cryptic payee string into something you will recognise — and it will still reconcile. The next import of that statement line compares against the key captured at import, not the text you edited, so an annotated row never returns as a duplicate. Clean up your descriptions freely; reconciliation will not notice. See correct mistakes for the other edits that keep an imported row matched.
Clearing the exceptions
Where the computed balance and the balance your statement reports do not agree, the difference is the backstop’s signal: for a cash account it should be zero, and anything else is a duplicate or a missing row to resolve; for an invested account the residual is market movement to attribute rather than an error. This guide will walk through those cases in full.
Last reviewed: July 2026.