NexWave Budget
NexWave Budget is the budgeting engine that lets you set spend limits across any combination of accounting dimensions (Cost Centre, Project, and any custom Accounting Dimension you have configured) and enforces those limits when transactions are submitted.
This page is the conceptual reference. For the step-by-step setup walkthrough, see the User Guide.
Looking for a step-by-step walkthrough? See Create and Enforce a Budget.
What it does
A NexWave Budget is a submittable document that bundles together:
Scope: one company, one fiscal year, and any combination of dimension values (Cost Centre, Project, plus any active Accounting Dimensions).
Action settings: how strictly to enforce on Annual, Accumulated Monthly, and Monthly comparisons.
Applicability: which transaction types this budget should validate (Actual Expenses, Purchase Orders, Material Requests).
Budget accounts: one row per Profit and Loss account with an annual amount and an optional 12-period breakdown.
Once submitted, the budget is automatically consulted whenever a matching transaction is submitted. Drafts never enforce.
Why use it (instead of the legacy Budget doctype)
NexWave Budget replaces the older Budget doctype shipped with the framework. The newer engine is recommended because it:
Supports any combination of dimensions, not just one. A single budget can target a Cost Centre, a Project, and a custom Accounting Dimension simultaneously.
Provides three independent enforcement controls (Annual, Accumulated Monthly, Monthly) per budget instead of a single global setting.
Replaces the Budget Category pattern with simpler per-budget action settings.
Enforces consistently across Actual Expenses, Purchase Orders, and Material Requests with one engine and one set of rules.
The legacy Budgets page covers NexWave's older extensions to the standard Budget functionality. Existing legacy budgets continue to work; new budgets should use this module.
Validation engine
When a transaction is submitted, NexWave runs the relevant set of checks based on the transaction type:
Transaction | Triggers checks where... |
|---|---|
GL Entry (any GL-posting document) | Applicable on Actual Expenses is enabled |
Purchase Order | Applicable on Purchase Order is enabled |
Material Request (Purchase type) | Applicable on Material Request is enabled |
For each matching budget, NexWave runs up to three independent comparisons:
Monthly comparison (if
Action on Monthly Budgetis Stop or Warn): current-month spend vs. current period amount.Accumulated Monthly comparison (if
Action on Accumulated Monthly Budgetis Stop or Warn): year-to-date spend vs. sum of periods 01 through the current period.Annual comparison (if
Action on Annual Budgetis Stop or Warn): full-year spend vs. annual Budget Amount.
If a check fails:
Stop: blocks the transaction with a "Budget Exceeded" error showing the budget name, account, dimensions, ceiling, and overspend amount.
Warn: displays a message but allows the transaction.
Ignore: skips the comparison entirely.
Exception Approver
Set an Exception Budget Approver Role on the Company. Users with that role have every Stop downgraded to a Warn so they can submit the transaction with a visible warning instead of being blocked.
Dimension matching
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 on each budget.
Wildcard semantics
Leaving a dimension empty means "all values for that dimension". Filling it in restricts the budget to that single value.
Cost Centre | Project | Matches |
|---|---|---|
(empty) | (empty) | Rejected on save. |
| (empty) | Any transaction posted to Auckland, regardless of project. |
(empty) |
| Any transaction tagged with Project Phoenix, on any cost centre. |
|
| Only transactions on |
Tree dimensions
Cost Centre is a tree. A budget on a parent applies to all descendants. A budget on Operations - NW will validate against transactions on Operations - NW, Auckland - NW (a child of Operations), and any deeper child.
Project may also be a tree on some sites. The same descendant matching applies.
Most-specific-wins precedence
When multiple budgets match a single transaction, the most specific budget takes precedence:
A budget that sets two dimensions wins over a budget that sets only one of those same dimensions.
A budget on a leaf cost centre wins over a budget on an ancestor.
Budgets that target completely different dimensions both apply.
This means you can set a broad company-wide budget at the parent cost centre and override it for specific cost centres or projects without creating duplicates.
Period-to-month mapping
Period 01 maps to the first month of the fiscal year, not January.
For a New Zealand fiscal year (April-March):
Period | Month |
|---|---|
Period 01 | April |
Period 02 | May |
Period 03 | June |
Period 04 | July |
Period 05 | August |
Period 06 | September |
Period 07 | October |
Period 08 | November |
Period 09 | December |
Period 10 | January |
Period 11 | February |
Period 12 | March |
For a calendar fiscal year (January-December), Period 01 is January.
Budget Accounts: validation rules
When the budget is saved, every row in the Budget Accounts table is validated:
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.
Income accounts are accepted for variance reporting but are not enforced against transactions. Only expense accounts trigger budget validation on transaction submission.
Period allocation behaviour
NexWave handles period allocation in three ways on save:
If any of
Period 01throughPeriod 12has a value, the Budget Amount is automatically set to the sum.If only Budget Amount has a value, NexWave distributes it evenly across the 12 periods. The rounding remainder lands on Period 12.
The Distribute Evenly button on a row overwrites existing period values with the even split based on the current Budget Amount.
Duplicate detection
NexWave rejects a submission if another submitted budget exists with all of:
The same Company
The same Fiscal Year
Exactly the same combination of non-empty dimensions and dimension values
At least one overlapping account in the Budget Accounts table
At least one action field set to
StoporWarn
Reporting-only budgets (all three actions set to Ignore) are exempt from this rule, so you can keep multiple forecast or reference budgets alongside the live operating budget.
Foreign currency handling
In the validator (the engine that fires Budget Exceeded on submission), Purchase Order committed amounts are converted to the company's base currency before being compared to the budget. A USD purchase order is correctly evaluated against an NZD budget. The same applies to Material Request and Actual Expense calculations on multi-currency documents.
The NexWave Budget Variance Report, however, sums Purchase Order committed amounts in transaction currency when Include Purchase Orders is ticked. For multi-currency sites the report's PO exposure can therefore differ slightly from the validator's view. If the two disagree, trust the validator.
Naming and lifecycle
Budgets are named using the
NWBUDGET-.YYYY.-series. The year segment is the fiscal year start year of the budget creation date.NexWave Budgets are submittable. Drafts do not enforce.
To revise a submitted budget, cancel and amend (creates a new draft based on the original), edit, then submit. The new version takes over enforcement.
If actuals already exceed any of the budget's enforceable ceilings when you submit (because the budget is being added retrospectively), NexWave shows a warning so you can review whether the budget is realistic before it starts blocking transactions.
Where to look next
Create and Enforce a Budget: step-by-step walkthrough for creating a budget end-to-end.
Budgets (legacy): the older Budget doctype kept for backward compatibility.
Accounting: financial management overview.
Accounts Payable: bills and supplier payments, the most common source of budget validation events.