Importing statements and receipts
What this solves
Import a bank or brokerage statement — PDF, CSV, XLSX, OFX, QIF, MT940, or CAMT, including scanned PDFs — and review proposed new transactions, matches, and likely duplicates before anything books. Receipts keep the underlying proof attached to the transaction it supports.
Import a statement
- From an account’s register, click Import in the header (or overflow menu).
- Drag in a file, paste a hosted link, or use a connected source.
- Open Net Worth builds a preview: rows to match to an existing transaction, rows proposed as new, and rows flagged as a likely duplicate (in-file or already in your ledger).
- Review each row — a matched row defaults to merging; change that to skip or add separately. CSV/XLSX without recognized headers need manual column mapping first.
- If the statement prints a closing balance, Open Net Worth flags drift against your ledger before you commit.
- Confirm to commit the batch — grouped so you can review or roll it back later.
A statement stays visible in Statements history: reopen the original file, check its balance ties out, or delete the record (transactions stay; only the record is removed).
Attach a receipt
- Open a transaction’s detail drawer, Receipts section.
- Click Attach receipt, upload an image or PDF.
- A transaction can have multiple receipts; one receipt can support multiple transactions (useful for an invoice covering several line items).
- Remove on a receipt only unlinks it from that transaction — it never deletes the underlying file, even if no other transaction is linked to it.
What Lucius can do here
- Import an attached statement, walking through match/new/duplicate review conversationally.
- List past import batches, roll one back, or restore a rolled-back one.
- Check whether a statement’s printed balance still matches your ledger, and flag drift.
- Find and merge probable duplicate transactions anywhere, not just post-import.
- Attach a received receipt (e.g. forwarded by email) to the right transaction.
Things that trip people up
- A refused duplicate is a deliberate guard, not a bug — override it if you’re sure it’s genuinely separate.
- One statement row split across two ledger entries won’t auto-match — resolve by hand.
- Column mapping only applies to CSV/XLSX — other formats parse automatically.
- Deleting a statement record does not delete its transactions — remove them from the register (or roll back the batch) if you want them gone too.