Following up on some getting started questions - I’m curious about everyone’s bank import workflows.
I’m manually downloading CSV files from multiple banks and spending hours categorizing. I know there must be better ways!
My current painful process:
- Download CSVs from 5 banks
- Manually write transactions in Beancount syntax
- Categorize each one individually
- Takes 2-3 hours monthly
Questions:
- Do you use automated importers like beanhub-import or csv2beancount?
- How much gets auto-categorized vs needing manual review?
- Any security concerns with automated bank access?
- How do you handle different CSV formats from different banks?
Would love to hear about workflows that actually work in practice!
I’ve got a pretty solid CSV workflow that handles 85-90% automatically!
My Setup:
- Use
beanhub-import with rule-based categorization
- Pattern matching for recurring transactions
- Handles different CSV formats per bank
- Deduplication built-in
Example rule:
importers:
chase:
account: Assets:Bank:Chase
rules:
- match: "NETFLIX.*"
account: Expenses:Entertainment:Streaming
- match: "WHOLEFDS|WHOLE FOODS"
account: Expenses:Groceries
- match: "^PAYROLL.*ACME"
account: Income:Salary
Reality check: First month takes time building rules. Each new merchant needs one-time classification. But after that it’s mostly automatic.
I review everything in Fava before committing - catches any mis-categorizations.
I deliberately keep some manual review for security and awareness.
My approach:
- Manual CSV downloads (not comfortable with Plaid API access to accounts)
- Semi-automated processing with custom Python script
- 15-minute weekly review ritual every Sunday
Why I don’t fully automate:
- Security - Don’t want to give third parties bank credentials
- Awareness - Staying conscious of spending is valuable
- Control - I want to see every transaction
What I do automate:
- Obvious recurring stuff (rent, subscriptions)
- Paycheck deposits
- Known merchants I trust
What stays manual:
- Discretionary spending (helps me stay mindful)
- Large unusual transactions
- New merchants
I use git-crypt to encrypt my ledger in version control. Plain text is great but financial data needs encryption!
These are both great approaches! @practical_adviser - can you share more about how you structured your rules file? I want to understand:
- How do you handle regex matching for variations (like “WHOLEFDS” vs “WHOLE FOODS”)?
- What happens to transactions that don’t match any rule?
- How do you deal with merchants that have random numbers in their names?
Also, where can I find good example configurations to learn from?
Adding some official resources on imports:
Beancount Import Tools:
CSV-specific:
Fava’s built-in import:
Fava has import functionality under the “Import” tab. Good for getting started before building custom workflows.
Plain Text Accounting resources:
https://plaintextaccounting.org has a comprehensive list of import tools across all PTA systems (Beancount, hledger, Ledger).
Pro tip: Start with Fava’s importer to understand the process, then graduate to automated scripts when you’re comfortable.