Bank Import Automation - CSV Workflows and Tools

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:

  1. Download CSVs from 5 banks
  2. Manually write transactions in Beancount syntax
  3. Categorize each one individually
  4. 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:

  1. Security - Don’t want to give third parties bank credentials
  2. Awareness - Staying conscious of spending is valuable
  3. 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:

  1. How do you handle regex matching for variations (like “WHOLEFDS” vs “WHOLE FOODS”)?
  2. What happens to transactions that don’t match any rule?
  3. 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.