Connect multiple open banking providers to your Actual Budget server.
Discord
·
Website
·
Feedback
Warning
actual-flow is deprecated. Actual Budget now connects to Lunch Flow through its built-in SimpleFIN bank sync, with nothing to install or schedule. Existing setups keep working, but this tool will not receive new features. See the Actual Budget guide to set up SimpleFIN and migrate from actual-flow.
Lunch Flow is a tool that allows you to connect your banks globally to the tools you love. We currently support multiple open banking providers (GoCardless, Finicity, MX, Finverse, and more ...).
- 🔗 Easy Setup: Simple configuration process for both Lunch Flow and Actual Budget connections
- 📋 Account Mapping: Interactive terminal UI to map Lunch Flow accounts to Actual Budget accounts
- 📊 Transaction Import: Import transactions with proper mapping and deduplication
- 📅 Sync Start Dates: Configure per-account sync start dates to control import scope
- 🔍 Connection Testing: Test and verify connections to both services
- 📱 Terminal UI: Beautiful, interactive command-line interface
- 🚀 Direct Import Command: Run imports directly from command line for automation
- 🔄 Deduplication: Prevents importing duplicate transactions
A simple command to install!
npx @lunchflow/actual-flow
or using pnpm
pnpm dlx @lunchflow/actual-flow
The tool will guide you through the initial setup process:
- Lunch Flow API Key: Enter your Lunch Flow API key
- Lunch Flow Base URL: Enter the API base URL (default: https://api.lunchflow.com)
- Actual Budget Server URL: Enter your Actual Budget server URL (default: http://localhost:5007)
- Actual Budget Budget Sync ID: Enter your budget sync ID
- Actual Budget Password: Enter password if required
Configuration is saved to config.json in the project directory.
The tool supports both interactive and non-interactive modes:
# Interactive mode (default)
actual-flow
# Direct import (non-interactive)
actual-flow import
# Show help
actual-flow helpThe tool provides an interactive menu with the following options:
- 🔗 Test connections: Verify connections to both Lunch Flow and Actual Budget
- 📋 List available budgets: Show all budgets available on your Actual Budget server
- 📋 Configure account mappings: Map Lunch Flow accounts to Actual Budget accounts
- 📊 Show current mappings: Display currently configured account mappings
- 📥 Import transactions: Import transactions for a selected date range
- ⚙️ Reconfigure credentials: Update API credentials
- ❌ Exit: Exit the application
When configuring account mappings, you'll see:
- All available Lunch Flow accounts
- All available Actual Budget accounts
- Interactive selection to map each Lunch Flow account to an Actual Budget account
- Optional sync start date for each mapping (YYYY-MM-DD format)
- Option to skip accounts that don't need mapping
You can configure a sync start date for each account mapping to control which transactions are imported:
- Only transactions on or after the specified date will be imported
- Leave empty to import all available transactions
- Useful for limiting historical data or starting fresh with specific accounts
- Review a preview of transactions to be imported
- Confirm the import
- Monitor progress with real-time feedback
- Automatic deduplication prevents importing existing transactions
- Automatically imports transactions without confirmation prompts
- Perfect for automation, cron jobs, or CI/CD pipelines
- Shows transaction preview and processing summary
- Respects configured sync start dates for each account
| Variable | Description |
|---|---|
ACTUAL_BUDGET_VERBOSE |
Set to 0 to suppress verbose debug output from the Actual Budget API during import (e.g. transaction reconciliation data). On by default. |
Example:
ACTUAL_BUDGET_VERBOSE=0 actual-flow import# Run import every day at 2 AM
0 2 * * * npx @lunchflow/actual-flow importMade with ❤️ for the Actual Budget community
