Budgeting and budget-vs-actual reporting

Budgeting and budget-vs-actual reporting

Budgeting is a controlled computation over stored, schema-validated budget rows and the authoritative journal actuals. The workflow keeps budgets as repository data so budget-vs-actual output remains reproducible.

  1. Alice initializes the budgeting area if it does not yet exist:
bus budget init
  1. Alice records budgets for the accounts and periods she cares about:
bus budget add --account 6570 --year 2026 --period 01 --amount 500
bus budget add --account 7310 --year 2026 --period 01 --amount 800

For example, she enters rows for office supplies and travel so the budgeting dataset expresses her intent explicitly rather than embedding it in a report configuration.

  1. Alice produces a budget-vs-actual variance report for the year or period:
bus budget report --year 2026

The report aggregates actual expenses from the ledger and compares them to the stored budgets, producing output such as:

Expense Category     Budget Q1   Actual Q1   Variance
Office Supplies      €500.00     €300.00     €+200.00
Travel               €800.00     €950.00     €-150.00

If Alice adjusts her plan mid-year, she appends new budget rows (or uses bus budget set when the module supports upsert semantics), then re-runs the report to keep variance output aligned with the current budget dataset.