💶 CaliMoney

Documentation

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

FormatNotes
CSVComma- or semicolon-separated; quoted fields supported
Excel.xlsx / .xls — first sheet used
PDFBank statement PDF sent to AI as a document
TXTPlain 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.