Import a CSV from any bank
Point Budgie at any CSV and map its columns onto Budgie's fields on one screen, or start from a built-in preset and adjust.
No spam, ever. Unsubscribe anytime.
- Free, no account
- Works offline
- Source-available

One screen does the whole import
Pick a CSV from Settings and Budgie reads its header row, then offers those headers to every field it needs to write a transaction.
Any column order works
Each field gets its own selector listing the headers found in your file, so nothing depends on the order your bank chose. To Account, Category, Date, Amount and To Currency have to be mapped; the badge in the corner counts the rows Budgie found.
Start from a built-in preset
Three presets ship with the app — Budgie's own export, SmartBudget and FinEye. Tapping one fills every selector at once and tells you the columns are still yours to adjust.
Optional columns carry the detail
Map the second account leg and the row lands as a transfer instead of two unrelated entries. Map MCC and the merchant code picks the category. External ID keeps your bank's own reference on the transaction.

- One column per field
- Currency read from the file
- Presets fill every field
- External ID is optional
CSV import at a glance
built-in presetsPick one and every column mapping is filled in one tap.
required columns, the rest optionalAccount, category, date, amount and currency are all you must map.
column order worksYou choose which column feeds each field.
See the mapping before you import
Every field shows the column it will read, so you know where each value comes from.
Five fields are required, the rest are optional
A badge counts the rows Budgie found in your file
Read the source
What you get
Any column order works
Map To Account, Category, Date, Amount and To Currency onto whichever columns your bank exports — your order, not ours
One-tap import presets
Built-in presets for Budgie's own export, SmartBudget and FinEye fill every selector in one tap
Nothing to set up first
Accounts and categories are created from the values in the file — nothing to set up beforehand
Everything included
- Map both account legs and the row imports as one transfer rather than two unrelated entries
- Optional MCC, comment and External ID columns carry the bank's own detail into each transaction
The details
For when you want to know exactly how it behaves.
Why CSV is the universal escape hatch
Not every bank has an API, and not every app you are leaving will hand you anything but a spreadsheet. CSV is the universal escape hatch — and Budgie reads it without forcing you into a specific column order.
The importer builds the ledger out of the file: accounts and categories are created from the values it finds, MCC codes resolve to categories, and rows with both account legs become transfers. Dates are read as MM/DD/YYYY HH:MM:SS or YYYY-MM-DD, and amounts use a dot as the decimal separator.
Rows the file leaves without a category are grouped by merchant afterwards, so you can categorize them in bulk instead of one by one.
Questions
Will it work with my bank?
If your bank exports CSV, yes — you decide which column feeds each field. Dates need to read as MM/DD/YYYY HH:MM:SS or YYYY-MM-DD, and amounts need a dot as the decimal separator.
Does importing add to what I already have?
No. CSV import rebuilds the ledger from the file: existing accounts, categories and transactions are cleared first. Treat it as the way to move in from another app, not as a monthly top-up.
Does CSV import preserve the original transaction date?
Yes. The column you map to Date becomes the transaction's date, read as MM/DD/YYYY HH:MM:SS or YYYY-MM-DD. A row whose date cannot be read is reported instead of guessed at.
Can I edit transactions after CSV import?
Always. Imported transactions are normal Budgie transactions — edit, split, tag, or convert to transfer just like manual entries.
Works well with
Ready to take Budgie for a spin?
Join the waitlist — be first to try the offline-first expense tracker.






