Budget vs Actual

Upload your budget, map it to trial balance accounts, and track variances month-by-month with annotations.


Step 1 — Upload a Budget

Navigate to Budget → Upload to create a new budget.

FieldTypeRequiredNotes
Budget NameTextYesA descriptive name (e.g. "2026 Operating Budget").
Fiscal YearNumberYesMust be a valid year. Pre-filled with the current year.
CurrencyDropdownYesBGN, EUR, USD, GBP, or CHF. Defaults to BGN.
Budget FileFile uploadYesExcel (.xlsx, .xls) or CSV. See format below.
Expected File Format
  • Rows = budget line items (e.g. "Salaries", "Office Rent")
  • Group headers are detected automatically
  • 12 monthly columns — January through December values
  • The parser extracts: group, name, display_order, and monthly amounts

After upload, a Budget record is created with status draft and version 1. Budget groups, lines, and monthly values are stored automatically.


Step 2 — Map Budget Lines to Accounts

Each budget line must be mapped to one or more Trial Balance account codes so that actual figures can be pulled automatically.

ConceptDetails
Mapping formatJSON object: { line_id: [account_codes] }. Each budget line can be mapped to multiple account codes.
Uniqueness constraintA given account code can only be mapped to one budget line within a budget.
SavingMappings are saved via the Save Mapping button (AJAX). Previously saved mappings are loaded on page open.

Step 3 — Variance Analysis

Once mappings are in place, the Analysis view compares budgeted amounts to actual trial balance data side-by-side.

Period Selector
ParameterTypeDetails
MonthQuery parameterInteger 1–12 for a specific month, or 0 = Full Year. Defaults to the latest available TB period.

The view shows: budget amount, actual amount, variance (absolute), and variance (%). Positive variance indicates over-budget.


Variance Notes

Annotate variances directly in the analysis view. Click the note icon next to any budget line to add an explanation.

FieldTypeRequiredDetails
NoteTextNoFree-text explanation for the variance. Submitting an empty string deletes the existing note.

One note per budget line per month per user. Month 0 represents an annual/general note.


Budget Status Workflow

Budgets move through a defined lifecycle:

Draft Initial Revised Final Archived
StatusMeaning
draftJust uploaded. Mapping in progress. Fully editable.
initialFirst approved version. Ready for variance tracking.
revisedUpdated after mid-year changes.
finalApproved final version. No further changes expected.
archivedHistorical record. Read-only.

Budget Revisions

Create a revision to capture budget changes while preserving the original.

FieldRequiredDetails
Revision CommentNoOptional text explaining what changed (e.g. "Q3 headcount increase").

A revision creates a full copy of all budget lines and monthly values with an incremented version number. The original version remains accessible for comparison.


Tips
  • Map accounts before setting the budget status to "Initial" — it's easier to fix mappings in Draft mode.
  • Use variance notes to document why a line is over or under budget. These notes are visible to all users.
  • Set status to Final before year-end close to lock the budget.
  • Use the Full Year view (month=0) for an annual summary, or drill into individual months.