fava-envelope-airmail
A fork of memst/fava-envelope (itself a fork of polarmutex/fava-envelope) that adds several enhancements for envelope budgeting in Fava/Beancount.
I'm open to merging these changes upstream, but the original repos haven't seen much merge activity lately, so I decided to publish this fork separately in case anyone else finds the enhancements useful.
What's New in This Fork
Budget Statistics Page
A new Stats view accessible from the budget page header that provides:
- Overall summary cards: total periods tracked, total/average income, total budgeted vs. spent, and overall budget adherence rate
- Per-envelope statistics: period counts, under/over budget breakdowns, adherence percentages, average activity, and standard deviation
- Categorization of envelopes into "Well-Managed" (>80% adherence) and "Needs Attention" (<50% adherence)
- Color-coded stats table rows by adherence rate
Scheduled Transaction Tracking
- Transactions flagged with
X(e.g., upcoming/scheduled bills) are now tracked per envelope - A badge appears next to envelope names showing the count and total of scheduled transactions for that month (e.g.,
2X)
Account Ignore Directive
A new ignore directive to exclude accounts from envelope budgeting (e.g., taxes, 401k contributions). Ignored accounts are treated as income deductions rather than being completely skipped:
2020-01-01 custom "envelope" "ignore" "Expenses:Taxes:.*"
Color-Coded Budget Table
- Envelope rows are color-coded based on account type and available balance:
- Expenses: green (under budget), yellow (exactly zero), red (overspent)
- Assets: blue (negative/receivable), green (positive)
- Liabilities: treated like expenses
- Income "To be budgeted" row is color-coded: green (surplus), red (deficit), yellow (zero)
- Individual amounts within rows show positive/negative coloring
- Full dark mode support
Other Improvements
- Envelopes are now sorted alphabetically
- Default month view is the current month (instead of the last available month)
- Redundant "Amount" column is hidden when only one currency is configured
- Rolled-over allowance column shows positive/negative coloring
Inherited Features (from memst/fava-envelope)
- No pandas dependency (faster)
- Cached envelope results until source files change
- Multi-currency support
- Simplified budgeting table
- Proper
ACCOUNTtypes in directive parsing - Advanced directives:
allocate fill,income override,allow negative rollover,include starting balance,repeat-untilmetadata
Please check the changelog for full details.
Installation
From PyPI
pip install fava-envelope-airmail
From Source
git clone https://github.com/stenius/fava-envelope-airmail.git
cd fava-envelope-airmail
pip install -e .
Usage
Load the Extension
Add this to your beancount journal, and start fava as normal:
2000-01-01 custom "fava-extension" "fava_envelope" "{}"
You should now see 'Envelope' in your fava sidebar. You must set up a budget (see below), or Fava will report a 404 error.
Setting Up a Budget
Start date
2020-01-01 custom "envelope" "start date" "2020-01"
Budget months ahead
Show future months for budgeting ahead (default is 0):
2020-01-01 custom "envelope" "months ahead" "2"
Budget accounts
Specify the Assets and Liabilities included in your budget (supports regex):
2020-01-01 custom "envelope" "budget account" "Assets:Checking"
2020-01-01 custom "envelope" "budget account" "Liabilities:Credit-Cards:.*"
Mappings
Map sub-accounts to a parent envelope:
2020-01-01 custom "envelope" "mapping" "Expenses:Food:.*" Expenses:Food
Ignore accounts
Exclude accounts from budgeting (e.g., taxes deducted from paychecks):
2020-01-01 custom "envelope" "ignore" "Expenses:Taxes:.*"
Allocate money to an envelope
2020-01-31 custom "envelope" "allocate" Expenses:Food 100.00 USD
Operating currency
The extension reads the operating currency from beancount options (defaults to USD):
option "operating_currency" "EUR"
License
MIT
Metadata
Release files for fava-envelope-airmail 2026.2.9
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| fava_envelope_airmail-2026.2.9.tar.gz | 21.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fava_envelope_airmail-2026.2.9-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 44.5 kB
Release files / fava_envelope_airmail-2026.2.9.tar.gz
| Download URL | fava_envelope_airmail-2026.2.9.tar.gz |
|---|---|
| Size | 21.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1e4b0ea10f4c4e43bed2dce8c19a8038f2abaea4a23d66aafa11a7970d8b6da2
|
|
BLAKE2b-256 checksum How to use checksums |
1560563a57192acb76ba852e5a4fdbdc8b5028e58dbd44adc8538be3bb1146a1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.8
|
Release files / fava_envelope_airmail-2026.2.9-py3-none-any.whl
| Download URL | fava_envelope_airmail-2026.2.9-py3-none-any.whl |
|---|---|
| Size | 23.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3d608607e5b89c78ba69c8120a906c595b114f0c9a186285cb9257909eabd963
|
|
BLAKE2b-256 checksum How to use checksums |
d66e731f071691f442256c29d8e9816336e10482272631735caf3eace3a27456
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.8
|