Import from file
Upload a bank statement or CSV export and create movements automatically
CaliMoney can read a bank statement or CSV export and create all the movements for you in a single import.
Tap the ↑ button next to the search bar on the movements list to open the import wizard.
Supported formats
| Format | Notes |
|---|---|
| CSV | Comma- or semicolon-separated; quoted fields supported |
| Excel | .xlsx / .xls — first sheet used |
| Bank statement PDF sent to AI as a document | |
| TXT | Plain text transaction list |
Maximum file size: 5 MB.
How it works
Upload — drop the file or tap to browse. CaliMoney validates the type and size before sending.
Extract — an AI model reads the file and identifies each transaction: date, description, and amount. Signs are normalised automatically (debits become negative, credits positive).
Auto-categorise — each transaction is matched to one of your existing categories using the same AI that powers the description chip in the Add form.
Review — an editable table lets you inspect every row before committing. You can change the type or category, deselect rows you don't want, or remove rows entirely.
Import — tap Import N movements. Movements are saved locally first and synced to the cloud when online, using the same write path as manual entries.
Review table
Each row shows:
- Checkbox — deselect to skip this row
- Date — extracted from the file
- Description — cleaned merchant or payee name
- Amount — red for expenses, green for income
- Type / Category — AI suggestion; editable via dropdowns
- ⚠ badge — possible duplicate (same date + amount already in your movements)
The header shows a summary: 47 found · 1 duplicate · 46 selected.
Duplicate detection is approximate — it matches by date and amount. Check amber-flagged rows before importing.
Privacy
- Description text is sent to the AI for category matching (same as the manual add form).
- Amounts and dates are processed on the AI extraction step but are not included in any subsequent AI calls.
- All movements are saved locally to your device first; cloud sync follows the standard offline-first path.
If encryption is enabled, imported movements are encrypted using your passphrase before being written to Firestore — exactly like manually added movements.
Limits
- Maximum 500 rows per import (rows beyond 500 are ignored during Excel/CSV parsing).
- PDF size is capped at 5 MB by the upload validator.
- Auto-categorisation runs in batches of 5 in parallel; large imports may take a few seconds.