CSV Import
Import your bank statement history with a CSV file upload.
CSV Import
The CSV import is the fastest way to load historical transactions. Export a statement from your bank's website and upload it — Satsuma auto-detects your bank's column format.
Before you start — get a CSV from your bank
Every bank is different, but the process is usually the same:
- Log in to your bank's website (not the mobile app — most banks only offer CSV export on desktop)
- Find your account activity or statements section
- Look for a Download, Export, or Save as option — usually near the date filter
- Choose CSV as the format (not PDF, not OFX/QFX/QBO)
- Set the date range to however far back you want to import
Common bank-specific paths:
- Chase — Accounts → Download Activity → CSV
- Bank of America — Accounts → Download → Microsoft Excel format (it's a CSV despite the name)
- Wells Fargo — Accounts → Download Account Activity → Comma Delimited File
- Discover — Manage → Download Your Transactions → CSV (uses positive = spending — Satsuma detects this automatically)
- American Express — Statements & Activity → Export → CSV
- Capital One — All Transactions → Export → CSV
If your bank isn't listed, search "export transactions CSV [your bank name]".
Step 1 — Upload
- Go to Transactions → Import
- Select your CSV file (up to 10 MB). You can drag and drop, or click to browse.
- You can upload multiple files at once as long as they have identical column headers (e.g. 3 months of Chase statements exported separately)
- Choose the account this statement belongs to — the account must already exist in Satsuma. If it doesn't, create it first.
- Date format — auto-detected after upload, shown as YYYY-MM-DD, MM/DD/YYYY, etc. Override if it detected incorrectly.
- Amount format — also auto-detected. Options:
| Format | What it means | Who uses it |
|---|---|---|
| Single column (negative = spending) | Purchases are negative numbers | Most banks |
| Single column (positive = spending) | Purchases are positive numbers | Discover |
| Separate Debit / Credit columns | Two separate positive-number columns | Some credit unions |
- Update existing transactions (optional) — leave this off normally. Turn it on if you want to re-apply category mappings to rows you've already imported.
- Click Continue
Step 2 — Map columns
Satsuma reads your column headers and pre-fills the mapping. Review each field and adjust if anything looks wrong:
| Field | Required | What it maps to |
|---|---|---|
| Transaction Date | ✓ | When the purchase happened |
| Description | ✓ | Merchant name or transaction note |
| Amount (signed) | ✓ unless using Debit/Credit | A single positive/negative amount column |
| Debit Amount | ✓ if no Amount column | Money out |
| Credit Amount | ✓ if no Amount column | Money in |
| Category | — | Your bank's own category label (maps to Satsuma categories) |
| Transaction Type | — | e.g. "Sale", "Payment", "Refund" |
| Reference / Check # | — | Bank's internal ID (strengthens duplicate detection) |
| Posted Date | — | Settlement date; rarely needed |
A live preview of your first 5 rows updates as you change the mapping, so you can see exactly what will be imported.
Click Continue once the preview looks right.
Step 3 — Preview & import
Satsuma shows 10 sample rows with auto-detected categories applied. Check that amounts are the right sign (purchases negative, deposits positive) — if they're flipped, change the Amount format dropdown at the top and the preview will update.
Category mapping (if your CSV has a category column): A table shows every unique category value from your CSV. For each one you can pick the matching Satsuma category. These mappings are saved as rules — future imports with the same category labels are categorized automatically without asking again.
Click Import to run.
The result toast tells you: "N imported, M duplicates skipped" — or flags any rows that had errors.
What happens after import
- Transactions are created with
source = csv - Auto-categorization runs immediately on any uncategorized rows (rules → bank category → merchant directory → local AI model)
- The matching engine runs to check if any of your new transactions pair with existing receipts
- Anything that needs a decision lands in the Review queue
Duplicates
Satsuma fingerprints every row using: account + date + amount + description + transaction type. Re-importing the same file, or importing overlapping date ranges, will not create duplicates — those rows are silently skipped.