Skip to main content

Envelope budgeting for Fava/Beancount with stats, scheduled transactions, and color-coded UI

Project description

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 ACCOUNT types in directive parsing
  • Advanced directives: allocate fill, income override, allow negative rollover, include starting balance, repeat-until metadata

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fava_envelope_airmail-2026.2.9.tar.gz (21.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fava_envelope_airmail-2026.2.9-py3-none-any.whl (23.4 kB view details)

Uploaded Python 3

File details

Details for the file fava_envelope_airmail-2026.2.9.tar.gz.

File metadata

  • Download URL: fava_envelope_airmail-2026.2.9.tar.gz
  • Upload date:
  • Size: 21.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.8

File hashes

Hashes for fava_envelope_airmail-2026.2.9.tar.gz
Algorithm Hash digest
SHA256 1e4b0ea10f4c4e43bed2dce8c19a8038f2abaea4a23d66aafa11a7970d8b6da2
MD5 2a16422ebc04c0def3a6c01f59e49b0b
BLAKE2b-256 1560563a57192acb76ba852e5a4fdbdc8b5028e58dbd44adc8538be3bb1146a1

See more details on using hashes here.

File details

Details for the file fava_envelope_airmail-2026.2.9-py3-none-any.whl.

File metadata

File hashes

Hashes for fava_envelope_airmail-2026.2.9-py3-none-any.whl
Algorithm Hash digest
SHA256 3d608607e5b89c78ba69c8120a906c595b114f0c9a186285cb9257909eabd963
MD5 e9bfa97b66b054e1b6702a67e60f2911
BLAKE2b-256 d66e731f071691f442256c29d8e9816336e10482272631735caf3eace3a27456

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page