Import file formats
Big Picture Money can import transactions from files before they are written to the ledger. Import always goes through a staging review step — nothing is committed until you confirm.
Supported formats (v1)
| Format | Extension | Notes |
|---|---|---|
| CSV | .csv | Spreadsheet or bank export; column mapping required |
| QFX | .qfx | Quicken / Intuit bank download (XML-based) |
| OFX | .ofx | Open Financial Exchange bank download |
QIF (Quicken Interchange Format) is not supported in v1.
CSV requirements
Encoding
- UTF-8 preferred
- Latin-1 / Windows-1252 exports from older banks are usually readable; if characters look wrong, re-export as UTF-8 from your bank or spreadsheet
Delimiters
The importer detects comma, semicolon, or tab delimiters from the first line.
Required mapped fields
You must map these target fields to source columns before continuing:
| Target field | Typical source headers |
|---|---|
| Transaction date | Date, Transaction Date, Purchase Date |
| Amount | Amount or separate Debit / Credit columns |
| Description | Description, Details, Payee, Narrative |
Optional:
| Target field | Typical source headers | Notes |
|---|---|---|
| Posted date | Posted Date, Posting Date | When different from transaction date, stored in memo (e.g. Posted 2025-01-16) |
| Memo | Memo, Card No., Notes | Combined with posted date when both are mapped |
| External ID | FITID, reference columns | Bank reference for duplicate detection |
Bank Category columns (e.g. issuer spending categories) are not imported into your category tree in v1 — leave unmapped or skip.
Date conventions
Common formats are recognized, including YYYY-MM-DD, MM/DD/YYYY, and DD/MM/YYYY when unambiguous from the file.
Amount conventions
- Amounts are stored in the ledger as signed integers in minor units (cents for USD)
- Expenses are negative; deposits and credits are positive
- A single Amount column may already be signed, or use separate Debit / Credit columns
- Parentheses or trailing minus indicate negative values in some exports
Saved mapping
For each account, the app remembers column mapping keyed by the CSV header row. Repeat imports with the same headers autofill mapping.
QFX and OFX
- Transactions are read from standard
STMTTRN(or equivalent) blocks - Date, amount, name/memo, and FITID (when present) are extracted automatically
- No column mapping step
Duplicate detection
Each parsed row gets a stable fingerprint from the target account, date, amount, normalized description, and bank reference (for example FITID) when available. On commit, fingerprints are stored so the same row is recognized on future imports.
A staged row is skipped as a duplicate when:
- Its fingerprint matches a row imported earlier into that account, or
- It closely matches an existing register transaction (same date, amount, and similar description)
Duplicates are always skipped — they cannot be imported. The import summary lists skipped duplicates (date, description, amount) as informational messages only.
Limits and performance
- Large files are parsed in a background job with progress reporting
- You can navigate away during import; a notification appears when parsing or commit finishes
- Very large files (tens of thousands of rows) may take longer to review; use bulk accept/skip actions in staging
Audit trail
Each import records the source filename and batch metadata locally (encrypted at rest with your database). There is no cloud upload of import files.