Budget vs Actual compares a budget with what your ledger actually holds, account by account, for the period you choose. It shows how much of the budget should have been reached by today, what was really earned or spent, and the difference, coloured by whether it is good or bad news. Owners and accountants use it to catch a cost running ahead of plan, or revenue falling behind, while there is still time to act.

It reads the ledger live. There is nothing to post or refresh: a document saved a moment ago is already in the figures.

Gated feature

Part of the Planning & Budgeting app

Budget vs Actual is available only while the Planning & Budgeting app is installed. See Planning & Budgeting for how to install it and build a budget.

Where to find it

  • In the budget itself: open a budget under Finance → Budgets and select the Budget vs Actual tab beside the Budget tab. It reads the saved budget; if you have unsaved changes, a banner asks you to save them first.
  • Under Reports: open Reports, choose the Budgeting category, then Budget vs Actual. Pick the budget at the top. The list shows Active budgets, grouped by fiscal year; turn on Show drafts, superseded and archived to see the rest. This is the place to save, print and export the report.

Choose what to compare

ControlChoices
PeriodThis month, This quarter (a quarter of your fiscal year), Year to date (the default), Full year or Custom range. A custom range must fall inside the budget's year. On a budget for another year, This month and This quarter use its first or last month or quarter, and Year to date on a year not yet started shows the full year.
ColumnsNo columns, Columns by month, or (on a budget split that way) Columns by branch or Columns by location.
Branch: all, Location: all, Customer: allFilters to one value. Each appears only when the budget is split by it. The customer filter searches every customer by name or code. The Budget tab shares the same filters.
Show zero rowsLists every profit-and-loss account in your chart of accounts, at zero where there is no budget and no actual. On a new budget it shows everything there is to plan, and Add all Unbudgeted adds them all.

Reading it

Each row shows five figures:

FigureWhat it is
BudgetThe budget for the whole period.
Budget to dateThe part of that budget due by today: past months in full, this month in proportion to the days gone (today included), future months nothing. For a period wholly in the past it equals Budget.
ActualWhat the ledger holds for the period.
VarianceActual minus Budget to date.
Variance %Variance as a percentage of Budget to date. Shown as a dash when nothing was budgeted to date.

A variance is green when it is favourable and red when it is not. On revenue and other income, earning more than budget to date is favourable; on cost of goods sold, expenses and other expenses, spending less is. A variance of zero is not coloured. Each section has a subtotal, followed by Gross profit and Net profit, where a result at or above budget is favourable.

When you add columns (by month, branch or location), each column shows Budget to date, Actual and Variance; the Total column shows all five figures. Custom ranges that start or end mid-month take that month's budget in proportion to its days.

It agrees with the Profit & Loss

With no filter, the Actual figures add up, section by section, to the Profit & Loss for the same dates. The one exception: postings made directly to an account at the fifth level of your chart that also has sub-accounts. Budget vs Actual counts them; the Profit & Loss currently leaves them out.

How actuals find their line

Every posting to a profit-and-loss account in the period lands on exactly one row:

  1. The account must match exactly. A line on a parent account counts only postings made directly to that parent, not to its sub-accounts.
  2. Each split value counts as itself only if the budget names it. A branch, location or customer with no line of its own anywhere in the budget is treated as Other.
  3. The most specific line wins. ZyncLedger tries the posting's branch, location and customer together; then without the customer; then without the location (customer back in); then the branch alone. If none of those is a line, it tries the same four with Other branches. The first line it finds wins. For example, with lines for Colombo · Acme and for Other branches · Other customers, a sale to Acme in Kandy (a branch with no line) lands on the Other branches · Other customers line.
  4. No line at all puts the posting on an Unbudgeted row under its account. Nothing is ever dropped.

A branch or location is taken from the document line first, then from the document itself. A customer is the line's customer if it has one, otherwise the document's. The notes under the report repeat the rules that apply to what you are looking at.

Budget an Unbudgeted row in one step

On the Budget vs Actual tab of a budget you can edit, an Unbudgeted row has an Add line button. It takes you back to the grid with the Add line dialog already filled in with that account and its split values. To budget them all at once, select Add all Unbudgeted above the table: it adds a line for every Unbudgeted row in the period, with every month at zero, and takes you to the grid to type the amounts and save. To plan one branch, location or customer, pick it in the filter first: the button becomes Add lines for this location (or branch, or customer) and gives it a line of its own for every active profit-and-loss account in your chart of accounts that has no sub-accounts, plus any account posted to there directly. If an Other line still holds budget that covered this location, the message says so: lower that line by what you plan here, or the total counts it twice. A location with no postings yet (a new store) shows the same button in place of the report. A row it cannot add (for example one for a branch that is now inactive) is listed instead.

Point-of-sale revenue and splits

Point-of-sale sales (revenue and their cost of sales) carry no branch and no customer the budget can match, so on a budget split by branch or customer they count under Other branches and Other customers, and the report says so in a note. If most of your sales go through the POS, split by location instead.

Filters and "Budget not divisible"

A filter selects actuals by their own branch, location or customer. A line still shows when the filtered actuals land on it, even if the line itself is outside the filter. That is usually an Other line: its budget also covers values the filter leaves out, and ZyncLedger cannot tell what share belongs to your selection. Such a row shows its Actual, shows a dash for Budget, Budget to date and Variance, and carries a Budget not divisible badge. Its budget is also left out of the subtotals and profit rows, so they compare like with like.

See the postings behind a figure

Select any Actual figure (on a line, an account total or a section subtotal, in any column) to open a panel listing the postings that make it up: Date, Document, Description and Amount. The panel's total always equals the figure you selected. It lists up to 2,000 postings and gives the total of all of them. Gross profit and Net profit cannot be opened this way.

Save, print and export

In the Reports version, the toolbar offers:

  • Save: keeps the budget, period, filters, rows and columns as a saved report. A saved Year to date or This month moves with the calendar each time you open it.
  • Print: prints the report as shown.
  • Export: downloads it as an Excel workbook.

Related

  • Planning & Budgeting covers building, activating and revising the budget this report compares against.
  • Profit & Loss reports the same actuals without a budget beside them.
  • Chart of Accounts is where an account's parent and sub-accounts are set, which decides what each line catches.