Generate a compact yearly Excel summary from MoneyMoney transactions.
MoneyMoney lets you tag transactions with your own categories and create rules to auto-categorize future ones.
mm-summary exports transactions via AppleScript, aggregates them by category, and builds an .xlsx workbook with monthly income, expenses, savings, savings rate, charts, and a subtle expense heatmap.
The summary sheet is designed to answer a few practical questions quickly:
- How much came in and went out each month?
- How does spending break down by group and category?
- How much was saved each month?
- What was the savings rate?
- macOS
- MoneyMoney
- Python 3.10+
uv
Clone the repository and install dependencies with uv:
uv syncEdit user_config.py to match your MoneyMoney group names, ordering, and recurring categories.
Open MoneyMoney, so that the script can access its database, then:
uv run mm_summary.py # current year
uv run mm_summary.py --year 2025 # specific year
uv run mm_summary.py --output ~/Desktop/summary.xlsxTo see all CLI options, use --help:
usage: mm_summary.py [-h] [--year YEAR] [--account ACCOUNT]
[--category CATEGORY] [--output OUTPUT]
[--no-cell-comments] [--include-transactions-sheet]
[--sample-data] [--no-expense-heatmap]
Export MoneyMoney transactions and build an Excel summary for a specific year.
options:
-h, --help show this help message and exit
--year YEAR Year to export (default: current year)
--account ACCOUNT Optional MoneyMoney account name/identifier
--category CATEGORY Optional MoneyMoney category filter
--output OUTPUT Output .xlsx path
--no-cell-comments Do not add Excel comments
--include-transactions-sheet
Include a Transactions sheet with raw export rows
--sample-data Generate a built-in sample workbook for docs or
screenshots
--no-expense-heatmap Disable the heatmap on expense month cells
mm_summary.py: CLI entrypointmoneymoney.py: AppleScript export, plist parsingaggregation.py: yearly aggregation, note buildingexcel_rendering.py: workbook rendering, styling, chartsmodels.py: shared dataclasses and type aliasessample_data.py: deterministic sample transactions for demo workbooksuser_config.py: your taxonomy, aliases, ordering
This project is provided as-is, without any warranty. It may contain bugs and may produce incomplete, misleading, or incorrect summaries.
Licensed under the Apache License 2.0. See LICENSE.
