What Actual Does
Actual provides a comprehensive budgeting experience:
- Envelope Budgeting: Allocate every dollar to a category, carry forward or roll over between months
- Transaction Management: Manual entry or import from bank (QIF, OFX, CSV) with smart categorization
- Bank Sync: Optional automated bank connection via GoCardless/SimpleFIN for transaction import
- Multi-device Sync: Encrypted sync between devices via self-hosted server
- Reports: Spending by category, net worth tracking, cash flow analysis
- Rules: Auto-categorize transactions based on payee, amount, or notes
- Split Transactions: Split a single transaction across multiple categories
- Scheduled Transactions: Recurring bills and income with reminders
Architecture
┌──────────────┐ ┌──────────────┐
│ Browser │────▶│ Actual │
│ (React PWA) │ │ Server │
│ Local SQLite│ │ (Node.js) │
└──────────────┘ │ Sync Engine │
└──────────────┘Key design: Data lives in a local SQLite database in your browser (IndexedDB). The server is only needed for multi-device sync. You can use Actual entirely offline.
Self-Hosting
Docker Compose
services:
actual:
image: actualbudget/actual-server:latest
ports:
- "5006:5006"
volumes:
- actual-data:/data
restart: unless-stopped
volumes:
actual-data:That's it — no database to configure, no dependencies. The server just handles sync.
With Bank Sync
services:
actual:
image: actualbudget/actual-server:latest
ports:
- "5006:5006"
environment:
ACTUAL_NORDIGEN_SECRET_ID: your-gocardless-id
ACTUAL_NORDIGEN_SECRET_KEY: your-gocardless-key
# Or SimpleFIN:
# ACTUAL_SIMPLEFIN_TOKEN: your-simplefin-token
volumes:
- actual-data:/data
volumes:
actual-data:Key Features
Envelope Budgeting
Income: $5,000
├── Housing: $1,500 (assigned)
├── Groceries: $600 (assigned)
├── Transport: $300 (assigned)
├── Savings: $1,000 (assigned)
├── Entertainment: $200 (assigned)
├── Utilities: $200 (assigned)
└── Unassigned: $1,200 (left to budget)Every dollar of income gets assigned to a category. Overspending in one category borrows from another, keeping you accountable.
Smart Rules
Auto-categorize transactions:
If payee contains "Starbucks" → Category: Coffee
If payee contains "Amazon" and amount > $50 → Category: Shopping
If payee contains "Netflix" → Category: SubscriptionsReports
- Net Worth: Track assets vs liabilities over time
- Spending by Category: Monthly and yearly breakdowns with trends
- Cash Flow: Income vs expenses visualization
- Custom date ranges: Compare any time periods
Local-First Benefits
- Speed: Instant UI — no waiting for server responses
- Offline: Works without internet connection
- Privacy: Data stays on your device, encrypted at rest
- Resilience: No server downtime affects your access
Actual vs Alternatives
| Feature | Actual | YNAB | Mint | Monarch |
|---|---|---|---|---|
| Open Source | Yes (MIT) | No | No | No |
| Self-hosted | Yes | No | No | No |
| Offline | Yes (local-first) | No | No | No |
| Bank sync | GoCardless/SimpleFIN | Plaid | Plaid | Plaid |
| Pricing | Free (self-host) | $14.99/mo | Free (discontinued) | $9.99/mo |
| Envelope budgeting | Yes | Yes | No | Yes |
常见问题
Q: Actual 和 YNAB 比怎么样? A: Actual 实现了 YNAB 的核心信封预算方法论,界面和交互高度相似。主要区别:Actual 免费开源可自托管,YNAB 是 SaaS 订阅。YNAB 的银行连接和社区教程更丰富,Actual 的隐私和自主性更强。
Q: 支持中国的银行吗? A: 自动银行同步(GoCardless/SimpleFIN)主要覆盖欧美银行。中国用户可以通过手动导入银行账单(CSV 格式)来使用。
Q: 数据安全吗? A: 是的。数据存储在本地浏览器中,同步时使用端到端加密。即使自托管服务器被入侵,攻击者也无法读取你的财务数据。
来源与致谢
- GitHub: actualbudget/actual — 25.9K+ ⭐ | MIT
- 官网: actualbudget.org