Create and Enforce a Budget

This guide walks you through creating a NexWave Budget end-to-end: scoping it to the right cost centre or project, choosing how strictly to enforce it, listing the accounts to budget against, submitting so it starts blocking or warning on real transactions, and using the Budget Variance Report to track how spend is tracking against the plan. NexWave Budget is the recommended budgeting tool for new setups; it replaces the older Budget doctype.

For the conceptual reference (validation engine, precedence rules, wildcard semantics, full data model), see the NexWave Budget module reference.

Before you start

You need:

  • A submitted Fiscal Year that covers the period you want to budget for.

  • The Cost Centres, Projects, or Accounting Dimensions you want to scope the budget to (at least one dimension is required per budget).

  • The Profit and Loss accounts (Expense or Income, leaf accounts only) you want to allocate amounts against.

You also need the right role: Accounts Manager or System Manager can create and submit budgets. Accounts Users have read-only access.

A handful of decisions to make up front:

Decision

Why it matters

Annual cap, monthly pacing, or both?

Drives the three Action settings. Most teams want an annual hard ceiling and a year-to-date pacing check.

Stop or Warn?

Stop blocks the transaction. Warn lets it through with a message. Pick Warn if your team is still calibrating.

Which transaction types trigger validation?

Actual Expenses always. Add Purchase Orders if you want to catch overspend at the order stage. Material Requests if you want even earlier.

Which dimensions scope this budget?

Cost Centre alone, Project alone, both, or any custom Accounting Dimension you have configured. Leaving a dimension empty means "all values for that dimension".

Create the budget

  1. Go to Accounting > NexWave Budget > New.

  2. Fill in the header:

Field

Value

Budget Title

A clear, human-readable label. Used in lists and in budget-exceeded messages. Example: "Auckland Operating Budget 2026-2027".

Company

The company this budget belongs to.

Fiscal Year

The fiscal year the budget covers. Period 01 will map to the first month of this fiscal year.

New NexWave Budget form with Title, Company, Fiscal Year, Action settings and Applicable On checkboxes

New NexWave Budget form with Title, Company, Fiscal Year, Action settings and Applicable On checkboxes


Choose how strictly to enforce

Each budget has three independent action checks. Set each one to Stop, Warn, or Ignore.

The default values are Stop for Annual, Stop for Accumulated Monthly, and Ignore for Monthly. The Monthly check is the strictest (a single overspend month blocks the transaction even if year-to-date is fine), which is why it ships off by default.

Action field

What it compares

Action on Annual Budget

Full-year actual total vs. the annual Budget Amount on each row.

Action on Accumulated Monthly Budget

Year-to-date actual total vs. the sum of period allocations from period 01 through the current period.

Action on Monthly Budget

Current-month actual total vs. the current period allocation only.

The three checks are independent. You can mix freely. Three common combinations:

  • Annual = Stop, Accumulated Monthly = Stop, Monthly = Ignore: block any spend that exceeds the year-to-date pacing or the annual ceiling, but allow the occasional month to run high as long as the year stays on track. The most common choice (this is the shipped default).

  • Annual = Stop, Accumulated Monthly = Ignore, Monthly = Ignore: only the annual cap matters. Period allocations exist only for reporting.

  • Annual = Ignore, Accumulated Monthly = Ignore, Monthly = Ignore: reporting-only budget. Visible in variance reports, never enforces anything. Useful for "what-if" scenarios.

Three Action fields with Applicable On checkboxes below

Three Action fields with Applicable On checkboxes below


Tip: start with Warn while a new budget is being introduced. Switch to Stop once the team has had a cycle to absorb the limits.

What users see when a transaction exceeds the budget

When a Purchase Invoice, Purchase Order, Journal Entry, Material Request or any other budget-validated transaction is submitted and pushes the spend past the ceiling, NexWave shows a Budget Exceeded message with the same template in both Stop and Warn modes:

Annual Budget Exceeded: Auckland Operating Budget 2026-2027 for Account 5201 - Administrative Expenses - NW against Cost Center Main - NW is $ 60,000.00. Total expense $ 70,000.00 exceeds by $ 10,000.00.

The fields tell the user exactly what to look at: which budget, which account, which dimensions, the ceiling for the failing scope, the total exposure (existing actual + this transaction + any open Purchase Order commitments), and the overspend amount. The budget title is a hyperlink that opens the budget record in a new view. The scope prefix (Annual, Accumulated Monthly, Monthly, or empty) tells the user which of the three checks tripped, which is useful when more than one is enabled.

Stop mode blocks the submission outright with a red modal. The transaction is not saved. The user must reduce the line amount, split the spend across periods, get the budget owner to increase the allocation, or escalate.

Budget Exceeded Stop modal blocking a Purchase Invoice submission

Budget Exceeded Stop modal blocking a Purchase Invoice submission


Warn mode lets the submission through and then shows the same message in an orange dialog. The transaction is already submitted by the time the user sees the warning; they can review the budget afterwards or adjust later spend to compensate.

Budget Exceeded Warn dialog after the transaction has already been submitted

Budget Exceeded Warn dialog after the transaction has already been submitted


Letting senior users override Stop

If you want specific users to be able to push transactions through even when a Stop fires, set the Exception Budget Approver Role field on the Company record (Accounting > Company). For users holding that role, every Stop is downgraded to a Warn. They still see the Budget Exceeded message, but the transaction is allowed.

Choose which transactions trigger validation

The Applicable On checkboxes decide which submissions trigger a budget check.

Checkbox

Triggers budget validation on...

Applicable on Actual Expenses

Every GL-posting submission: Purchase Invoice, Journal Entry, Expense Claim, Stock Entry, Payroll Entry, Asset Depreciation, etc.

Applicable on Purchase Order

Every Purchase Order submission. The committed amount (PO total minus already-billed) feeds the exposure.

Applicable on Material Request

Every Material Request (Purchase type) submission. The requested amount (qty not yet ordered × rate) feeds the exposure.

If you uncheck a box here, that transaction type's exposure is also excluded from the other checks. For example, unchecking Applicable on Purchase Order removes PO commitments from your Actual Expense calculations as well.

If you uncheck all three, the budget validates nothing and NexWave shows a warning on the form.

Scope it with dimensions

The Dimensions section lists Cost Centre and Project by default, plus a Link field for every active Accounting Dimension on your site. At least one dimension must be filled in. A budget with all dimensions empty would match every transaction and is rejected on save.

If you create a new Accounting Dimension after the budget exists, you may need to refresh the form before the new field appears.

Wildcard rules:

Cost Centre

Project

Matches

(empty)

(empty)

Rejected, must set at least one.

Main - NW

(empty)

Any transaction posted to Main, regardless of project.

(empty)

Phoenix

Any transaction tagged with Project Phoenix, on any cost centre.

Main - NW

Phoenix

Only transactions on Main AND Project Phoenix.

Cost Centre is a tree. A budget on a parent applies to every descendant. A budget on NexWave - NW (a parent) will validate against transactions on Main - NW and any other child cost centre. Project may also be a tree on some sites; the same descendant matching applies.

When two budgets target the same set of dimensions, the more specific one wins (a budget on a leaf cost centre overrides a budget on its parent). When two budgets target different sets of dimensions, both apply: a company-wide cap on Cost Centre and a project-specific cap on Project will both fire on a transaction tagged with both.

Dimensions section with Cost Centre, Department and Project pickers

Dimensions section with Cost Centre, Department and Project pickers


Add the budgeted accounts

In Budget Accounts, list one row per Profit and Loss account you want to control.

For each row:

Field

Description

Account

A leaf P&L account belonging to the budget's company. The picker filters out group accounts and accounts from other companies.

Budget Amount

Annual total. GST-exclusive.

Period 01 to Period 12

Optional per-month allocations. Period 01 is the first month of the fiscal year, not January. For a New Zealand April-March fiscal year, Period 01 is April and Period 12 is March.

Budget Accounts table with three expense accounts and amounts

Budget Accounts table with three expense accounts and amounts


Income accounts are accepted, but never enforced. You can add an Income account to the Budget Accounts table and it will appear in the Variance Report (target vs. actuals), but no transaction will ever be blocked or warned for exceeding an income budget. Validation only fires on expense accounts. This catches some users out who set up an "income shortfall" alert with this feature; that is not what NexWave Budget does.

Three ways to handle the period split:

  1. Even split: enter only Budget Amount, leave periods blank. NexWave divides the amount evenly across all 12 periods on save (the rounding remainder lands on Period 12).

  2. Custom split: enter values in Period 01 to Period 12. NexWave sets Budget Amount to the sum on save. Use this when spend is not uniform (for example, higher legal fees in March for year-end work).

  3. Distribute Evenly button: opens the row, change Budget Amount, click Distribute Evenly to overwrite the period values. Use this to reset.

To open the per-period view, click the pencil icon on a row and expand the Monthly Periods section.

Editing Row 1 with Monthly Periods expanded showing all 12 period fields and the Distribute Evenly button

Editing Row 1 with Monthly Periods expanded showing all 12 period fields and the Distribute Evenly button


Account validation

NexWave validates the Budget Accounts when you save:

  • The account must be a leaf account (not a group).

  • The account must belong to the budget's company.

  • The account must be a Profit and Loss account (root type Expense or Income).

  • The same account cannot appear twice in the same budget.

Submit

When everything is in place, click Submit.

  • Drafts never enforce. Budgets only become active when submitted.

  • If actuals already exceed any of the budget's enforceable ceilings (because the budget is being added retrospectively), NexWave shows a Budget Already Exceeded advisory in orange when you submit. The submission still goes through; the message is informational so you can decide whether to adjust the budget upwards before it starts blocking new transactions.

  • If a similar enforcing budget already exists for the same scope (same Company, same Fiscal Year, identical dimensions, at least one overlapping account, at least one Stop or Warn action), NexWave rejects the submission. Either narrow your new budget with an additional dimension, change the conflicting accounts, or convert the older budget to reporting-only.

After submission the budget is automatically consulted whenever a matching transaction is submitted.

Track variance against actuals

The NexWave Budget Variance Report is where you see how spend is tracking against the plan. Run it monthly (or after every period close) to spot accounts that are heading for an overspend before they hit the ceiling.

Open it from Accounting > Reports or search "NexWave Budget Variance Report" in the Awesome Bar.

By default the report groups rows by a single dimension (Cost Centre, Project, or any active Accounting Dimension). When you have budgets that span two dimensions (Cost Centre and Project, Cost Centre and a custom Location, and so on) you can pick a Subgroup By to split each row further so you see the (Cost Centre, Project, Account) breakdown side by side. Every row is fully qualified, which makes the export pivot cleanly in Excel. The example below shows the report split by Cost Centre and Project.

NexWave Budget Variance Report split by Cost Centre and Project with fully-qualified rows

NexWave Budget Variance Report split by Cost Centre and Project with fully-qualified rows


The filters give you control over what to look at:

Filter

Use

Company

Required.

From / To Fiscal Year

Required. Defaults to the current fiscal year. Spans multiple years if you want a rolling view.

Budget

Optional. Pick a specific NexWave Budget to scope the report to that one budget's accounts and dimensions. The other dimension filters are ignored when this is set.

Period

Monthly, Quarterly, Half-Yearly, or Yearly (default). Drives the column granularity.

Group By

Cost Center (default), Project, or any active Accounting Dimension on your site.

Subgroup By

Optional. Splits each Group By row into rows by this second dimension, so the output has one row per (Group By, Subgroup By, Account). Cannot match Group By. Budget and ledger entries where this dimension is blank are excluded from totals. Ignored when a specific Budget is selected.

Cost Center / Project / dimension filters

Restrict the rows.

Include Purchase Orders

Off by default. When ticked, open PO committed amounts are added into the Actual column, so you see exposure rather than just booked spend. If Subgroup By is set to a dimension that is not configured on Purchase Order Item, Purchase Order contributions are excluded for that run.

Show Cumulative Amount

Off by default. When ticked, unspent budget rolls forward into the next period's Budget column, so you can see the running headroom rather than each period's allocation in isolation.

The output shows one row per Group By value plus Account, with Budget, Actual, and Variance columns per period (or one set of columns when Period = Yearly), plus a bar chart of total Budget vs. total Actual. When Subgroup By is set, an extra column is inserted between Group By and Account, and each Group By value expands into one row per Subgroup By value.

Variance uses the convention Budget - Actual: a positive variance (green) means you have headroom; a negative variance (red) means you are over the budget for that period. This is the inverse of some commercial reports where overspend is shown as a positive number; the colour coding makes it unambiguous.

A few quirks worth knowing:

  • Income accounts show their target in the Budget column but always show zero in the Actual column. Income is never aggregated into Actual; the report only sums expense GL movement.

  • Material Request requested amounts are not included in the Actual column. Only Purchase Orders (when Include Purchase Orders is ticked) and posted GL entries count.

  • Period Closing Voucher entries are excluded from Actual.

  • Credit notes and reversal journals that have negative GL amounts are excluded from the validator (so they never trigger Budget Exceeded), but they DO reduce Actual in the variance report. This means the report can show a healthier variance than the validator's view.

  • Foreign-currency Purchase Orders: the validator converts committed amounts to company currency before comparing. The variance report uses the transaction-currency amount when including POs, so for a multi-currency site the two views can differ slightly. Reconcile in the validator if the numbers do not match.

  • Subgroup By drops rows where the second dimension is blank. Budgets without a value in the chosen Subgroup By dimension, and ledger entries without a value, are excluded from the (Group By, Subgroup By, Account) calculation. The totals in subgroup mode therefore do not necessarily reconcile to the un-grouped view; run the report without Subgroup By to see the full primary-dimension totals.

Worked example

You manage a manufacturing business and want to control administrative spend in the main cost centre.

  1. Create a NexWave Budget titled "Auckland Operating Budget 2026-2027", Company NexWave, Fiscal Year 2026-2027.

  2. Set Action on Annual Budget = Stop, Action on Accumulated Monthly Budget = Warn, Action on Monthly Budget = Ignore.

  3. Tick Applicable on Actual Expenses and Applicable on Purchase Order. Leave Material Request unticked.

  4. Set Cost Centre = Main - NW, Project = (empty).

  5. Add three rows to Budget Accounts:

    • Account = 5201 - Administrative Expenses - NW, Budget Amount = 60,000.

    • Account = 5204 - Entertainment Expenses - NW, Budget Amount = 12,000.

    • Account = 5202 - Commission on Sales - NW, Budget Amount = 24,000.

  6. Leave the period fields blank. Each $60k / $12k / $24k will be split evenly across the 12 periods.

  7. Save and Submit.

What happens next:

  • A Purchase Invoice for $70,000 of administrative expenses on Main - NW is blocked with a Stop modal because it exceeds the $60,000 annual ceiling.

  • A Purchase Invoice for $4,000 in May (period 02 of an April fiscal year) shows the Warn dialog because the year-to-date pacing of $5,000 (one month at $5,000) is exceeded by the $4,000 added on top of an earlier $4,000, even though the annual cap of $60,000 has not been hit.

  • A Purchase Order on Main - NW for an item that posts to one of the budgeted accounts feeds the same calculation, so over-orders are caught at PO stage.

  • In the Variance Report you can see the Administrative account showing -$10,000 (red) once the $70,000 invoice has been allowed through (in Warn mode), and the Entertainment and Commission accounts showing their full budgets in green because no spend has been booked yet.

Common pitfalls

  • All three actions set to Ignore. The budget validates nothing. Useful for forecast / what-if budgets, but if you intended to enforce, double-check at least one action is Stop or Warn.

  • No dimensions filled in. Rejected on save. Pick at least Cost Centre or Project.

  • Group accounts in Budget Accounts. Rejected on save. Always pick the leaf account; the picker filters for you, but pasting names directly may bypass the filter.

  • Income account, no enforcement. Adding an income account to the Budget Accounts table is allowed but never triggers Budget Exceeded. Only expense accounts are enforced.

  • Two enforcing budgets for the same scope. Rejected on submit. Either narrow one with an additional dimension or convert one to reporting-only (all actions = Ignore).

  • Forgot to submit. Drafts don't enforce. Until you click Submit, every transaction sails through.

  • Dimension-mismatch silent miss. A budget set on Cost Centre = Main - NW, Project = Phoenix will not match a transaction tagged only with Cost Centre = Main - NW (no Project). Both dimensions on the budget have to find a value on the transaction. If you want to budget against Cost Centre regardless of Project, leave Project blank on the budget.

  • Credit notes and reversals do not trigger Budget Exceeded. Negative GL postings are skipped by the validator. The Variance Report does pick them up, so refunds reduce Actual there.

  • Period Closing Vouchers are exempt. They post to GL but never trigger budget validation, by design.

  • Foreign-currency POs. Committed amounts are converted to company currency before the comparison, so a USD Purchase Order is correctly evaluated against an NZD budget by the validator. The Variance Report uses transaction-currency amounts when including POs, so the two views can differ for multi-currency sites.

Amend an existing budget

NexWave Budget is submittable. To revise a submitted budget:

  1. Open the budget and click Cancel. The original budget is now cancelled (status Cancelled) and stops enforcing immediately.

  2. Click Amend. NexWave creates a new draft based on the cancelled original, with the original linked via Amended From.

  3. Edit and Submit. The new version takes over enforcement.

The cancelled original stays in the system as part of the audit trail. It does not show in the Variance Report calculations and does not block your new submission via the duplicate-budget rule.

Related documentation

  • NexWave Budget module reference: validation engine, precedence rules, full data model, period-to-month mapping.

  • Budgets (legacy): the older Budget doctype. Use NexWave Budget for new setups; this page is kept for customers still on the legacy implementation.

  • Accounting: financial management overview.