Professional accounting reports for Actual Budget. Generate print-ready financial reports from your Actual Budget data with a clean web interface.
- Read-Only Access - Your budget data is never modified
- Professional Reports - Standard accounting report formats
- Print Ready - Optimized layouts for printing
- CSV Export - Export data for use in spreadsheets
- Multi-Period Views - Compare data across months, quarters, or years
- Modern Interface - Clean, responsive web UI
| Report | Description |
|---|---|
| Profit & Loss | Income and expenses with optional grouping by month/quarter/year |
| Balance Sheet | Assets, liabilities, and equity as of a specific date |
| Trial Balance | All accounts with debit/credit balances, CSV export |
| General Ledger | Detailed transaction listing by account |
| Chart of Accounts | Complete list of all categories and accounts |
# Using bun (recommended)
bun add -g actual-reports
# Using npm
npm install -g actual-reportsactual-reportsOpen http://localhost:3000 in your browser.
# Clone the repository
git clone https://github.com/actualbudget/actual-reports.git
cd actual-reports
# Install dependencies
bun install
# Start the server
bun run start- Bun v1.0+ (or Node.js 18+)
- Actual Budget with local database files (typically in
~/Documents/Actual/)
- Select a budget from the dropdown menu
- Choose a report type (P&L, Balance Sheet, Trial Balance, etc.)
- Select the time period (Year, Quarter, Month, or Custom range)
- View, print, or export your report
Click the print button or use Cmd/Ctrl + P. Reports are optimized for landscape printing.
Trial Balance reports include a CSV download button for spreadsheet import.
Set a custom port using the PORT environment variable:
PORT=8080 actual-reportsBy default, Actual Reports reads budget databases from ~/Documents/Actual/. This is where Actual Budget stores local data.
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/budgets |
List all available budgets |
| GET | /api/budgets/:id/years |
Get available years for a budget |
| GET | /api/budgets/:id/reports/pnl |
Profit & Loss report |
| GET | /api/budgets/:id/reports/balance-sheet |
Balance Sheet report |
| GET | /api/budgets/:id/reports/trial-balance |
Trial Balance report |
| GET | /api/budgets/:id/reports/general-ledger |
General Ledger report |
| GET | /api/budgets/:id/reports/chart-of-accounts |
Chart of Accounts |
| Parameter | Type | Description |
|---|---|---|
period |
string | year, quarter, month, or custom |
year |
number | Year for the report |
month |
number | Month (0-11) when period is month |
quarter |
number | Quarter (0-3) when period is quarter |
startDate |
string | Start date (ISO) when period is custom |
endDate |
string | End date (ISO) when period is custom |
includeOffBudget |
boolean | Include off-budget accounts |
| Parameter | Type | Description |
|---|---|---|
grouping |
string | monthly, quarterly, or annual for comparative view |
- Runtime: Bun
- Backend: Hono
- Frontend: React 19, Tailwind CSS
- Database: SQLite (read-only via bun:sqlite)
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
# Start with hot reload
bun run dev
# Build client only
bun run build:clientThis application provides read-only access to your Actual Budget data. No modifications are ever made to your budget files.
- Actual Budget - The budgeting app this tool generates reports for
- Actual Server - Self-hosted Actual Budget server