Changes to Budgeting and Pricing in Projectworks: What You Need to Know
We are upgrading our budgets in Projectworks on 14 September 2025 NZST / AEST (13 September 2025 ET / PT / BST). This will give you more control and flexibility when building budgets in Projectworks. Easily combine Top-Down and Bottom-Up fee types at the Budget Line or Time Code level to shape your project budget the way you need.
Data Model and Front End Changes
As part of this upgrade, our data model and front end will change to support the new budget functionality. Your team will need to be familiar with these changes to ensure everything continues running smoothly.
What to know:
Review the list of changes to our data model and front end below and circulate to relevant team members (those people who create projects and build budgets).
Data model changes:
Entity/Area |
Change |
Effect |
GL Codes |
The “Discount” GL Code attribute will be deprecated. |
Budgets with GL Code of Type `Discount` will be reclassified as `Services` or `Non-Services' depending on the corresponding GL Code Type of that GL Code. |
Project Pricing Model |
The project-level `Pricing / Budget Method` flag will be removed. The tenant-level setting for ‘Enable project pricing options’ will be removed. |
Instead of setting the pricing method at the project level, you will choose from fee types of “Top-Down”/”Bottom-Up” at the Budget/Timecode level. This provides greater flexibility when building a budget. |
Placeholder Support |
Timecodes will be able to be assigned to placeholders, not just named users. |
This allows you to build up your budget pricing at timecode level, even before you assign specific people to these timecodes. |
Budget Build Logic |
The “Budgeted Hrs/$” and “Expected Hrs/$” units used to create budgets for Hour * Rate projects will be replaced with flat “Allocated Hours/$” that can be assigned to users and/or placeholders in all projects. |
This simplifies how a budget is built and the type of hours assigned to employees and placeholders. |
Front end changes:
Entity/Area |
Change |
Effect |
Budget User Interface |
The budget builder is elevated from Project>Settings>Budget to Project>Budgets. In parallel, Project>Budget is renamed to Project>Overview. |
This merges budget and timecode creation into one user interface and leads to an improved user experience with a faster workflow overall. |
Terminology Changes |
The term “Expected Hours/$” will be changed to “Allocated Hours/$”. The term “Shadow” will be changed to “Placeholder” when assigning hours to a placeholder resource. |
This improves clarity and consistency within the platform. |
Timecode Field Removal |
The “BudgetedHours”, “Budget$”, “RemainingBudgetHours”, and “RemainingBudget$” fields will be removed from the timecode interface. |
This provides a cleaner interface with legacy fields hidden. |
Budget-level custom fields and Xero Tracking categories |
Budget-level custom fields will be able to be edited in bulk, alongside Xero Tracking Categories, using a standardized list view powered by the new "Hide/Show" table control. |
Previously, Xero categories were editable in bulk through a custom user experience; now, both are managed consistently. This provides a more intuitive, scalable interface for updating budget metadata across multiple records. |
Create Project Flow |
When you first create a project, the Budget/Timecode steps will be removed from the initial wizard. You will be prompted to set these up post initial project creation. |
This enables simpler, more flexible project setup. |
Clone Project Flow |
When you clone a project, you won’t preview/edit the budget before completing the clone. You will edit the budget of the cloned project afterward via the Budgets tab. |
Slight change in workflow. |
Create / Update Quotes |
Slight page layout changes in the “Create” and “Update Quote” flows to reflect the shift from Project-level Fee Type to Budget and Timecode-level Fee Types. |
Minor visual updates; functional flow remains the same. |
Timecode Allocation |
When allocating timecodes, the columns “Worked (Hrs)”, “Worked ($)”, and “Cost of Hourly Worker (composed of Cost Rate Card and Cost Rate Amount)” will be hidden by default and controlled via the "Hide/Show" table settings. |
This reduces clutter in the default view and provides more control over what financial and effort data you see. |
API Changes
As part of this upgrade, our API will be updated to support the new budget functionality. If your team uses our API, you may need to make a few adjustments to ensure everything continues running smoothly.
What to know:
-
No action is needed if you don’t currently use the APIs below.
-
The API updates are designed to be non-breaking, so your existing integration will continue to function without errors if no changes are made at launch.
-
However, if you plan to use the APIs to create or update projects with bottom-up pricing at the Budget and/or Timecode level (corresponding to the soon-to-be-legacy Project Pricing Methods: Timecode-Level Fee and Timecode-Level Hourly-based), you’ll need to update your integration code shortly after launch to accommodate the below changes.
API updates:
Entity |
Change |
Effect |
GET /Projects |
Updated. 0 out ‘ProjectBudgetTypeID’ and mark as deprecated (to be removed later). |
Part of shift to modular budgeting.
|
GET /Modules/BudgetTypes |
Mark as deprecated (to be removed later). |
|
GET /Modules/BudgetFrequencies |
Mark as deprecated (to be removed later). |
|
GET /Modules/FeeTypes |
Added. |
|
GET /Modules |
Updated. False out ‘IsDiscount’ and mark as deprecated (to be removed later). |
Enables module-level pricing control.
|
GET /Module/{moduleID} |
False out ‘IsDiscount’ and mark as deprecated (to be removed later). |
|
POST/PUT/PATCH /Modules |
'FeeTypeID' int > added (defaults to TopDown). |
|
GET /Tasks/FeeTypes |
Added. |
|
GET /Tasks |
Updated. |
|
GET /Tasks/{taskID} |
Updated. |
|
GET /Task/{taskID}/Placeholders/{placeholderID} |
Added. |
|
PUT /Tasks/{taskID}/Placeholders |
Added. |
Allows placeholders to be added to timecodes. |
DELETE /Tasks/{taskID}/Placeholders |
Added. |
Allows placeholders to be deleted from timecodes. |
GET Common/GLCodes |
Updated. False out ‘IsDiscount’ and mark as deprecated (to be removed later). |
Enables simplification of budget building. |
Task Validation Rules |
If `Module.FeeTypeId = 1`: `Task.FeeTypeId` must be null.<br>- If `Module.FeeTypeId = 2`: `Task.FeeTypeId` must be 1 or 2 (not null). |
Prevents inconsistent pricing. |
BI Changes
As part of this upgrade, our Power BI views will be updated to support the new budget functionality. If your team uses our BI views, you may need to make a few adjustments to ensure everything continues running smoothly.
What to know:
-
No action is needed if you don’t currently use the following BI views.
-
The BI View updates are designed to be non-breaking, so your existing consumption will continue to function without errors.
BI view updates:
Change |
Deprecate `BI.DimPositionRankTask`. |
New view added: ‘BI.DimBudgetFeeType'. |
New view added: ‘BI.DimTaskFeeType’. |
New view added: 'BI.DimPlaceholderTask'.
|
Updated view: ‘BI.DimGLCode.sql’ The ‘IsDiscount’ column now always returns 0. This is an intermediate step to help ensure backward compatibility before the column is fully removed in a future update. If you're currently referencing ‘IsDiscount’, we recommend preparing to remove dependencies on this column. |
Updated view: ‘BI.DimModule’ The columns ‘BuyPrice’, ‘ModuleBudgetTypeID’, and ‘ModuleBudgetFrequencyID’ now return 0 for all records. These fields will be removed in a future update. A new column ‘ModuleFeeTypeID’ has been added. If your reporting relies on any of these deprecated fields, we recommend beginning the transition away from them. |
Updated view: 'BI.DimTask'.
|
Updated view: 'BI. FactProjectBudgets'.
|
Updated view: ‘BI. FactProjectTasks’.
|
Migrating your pricing data
As part of this upgrade, your pricing data in existing projects will be migrated into our new budget structure, which constructs budgets using Top Down pricing, Bottom Up pricing, or a mix of both.
What to know:
If your team has previously built budgets using the Timecode-Level Hourly-based pricing method, your project budgets will be affected in the following ways:
1. For All Projects
-
The pricing method will no longer be defined at the overall Project level.
-
Instead, fee types will now be set at the Budget and Timecode levels, allowing for more granular control and flexibility.
2. For Projects That Used Timecode-Level Hourly-based Pricing
2a. Simplified Data Fields
-
The data fields for People and Roles have been simplified. Specifically, the “Budgeted Hrs”, “Budgeted $”, “Expected Hrs”, and “Expected $” fields have been consolidated into just “Allocated Hrs” and “Allocated $” respectively.
2b. Timecode Allocation Adjustments
-
If Budgeted $ and Expected $ differ for specific roles in your Timecode allocations, we’ll insert placeholders with Allocated $ to fill the difference where feasible.
-
When such differences exist, the Timecode fee type will be updated from “Bottom-Up” to “Top-Down”, retaining the Budgeted $ value at this level and preserving the Expected Hours in the breakdown (as Allocated Hours). This will preserve key metrics such as budget burn.
Timeline and Required Action:
-
After the launch, you’ll notice visible changes to your budget structures.
-
Action required: please review the budget structures of your live projects and confirm they reflect your intended setup.
-
We recommend completing this review as soon as possible after the launch date: 14 September 2025, NZST / AEST (13 September 2025 ET / PT / BST).
For further information about the overall budget upgrade, including FAQs, feel free to check out this blog.
We’re here to help if you have questions - just reply to this email or reach out to our support team at support@projectworks.com.