Material cost budgets and material CPI on the WBS
5 min read · Updated 22 Jun 2026
Two cost dimensions, one tree
Every L4 WBS activity carries two budgets: a labour budget (from the imported BOQ) and a material budget (entered directly on the node or updated via import). Actual labour spend is built from approved time entries; actual material spend is loaded from your procurement or accounting system via the material cost import. Both roll up the tree so any level shows total spend against total budget.
Set the material budget
Edit any L4 activity on the WBS and enter a Material budget figure in the project currency. The field is visible to anyone with cost-view access (QS, PM, Owner, Admin). Budgets can also be set in bulk via the WBS XLSX import — add a "Material budget" column to your import sheet.
Import actual material cost
WBSync reads actual material spend from a spreadsheet you export from your procurement or accounting system. The import pipeline has three stages:
Upload an XLSX or CSV file with cost-code references and amounts. WBSync maps each row to a cost code and shows you a preview — matched rows, unmatched rows, and the delta against the current actual — before anything is committed.
Additional adds the amounts in this file on top of existing actuals (for incremental uploads — weekly spend batches, for example). Overwrite replaces the actuals with exactly what's in this file (for a full sync from your accounting system). The preview shows the resulting total either way.
Confirm to commit. WBSync stores a snapshot of the previous values so you can revert the import if a file was wrong. Large files (2,000+ rows) are processed in the background — you'll get a notification when they're ready.
Multi-currency
If your import file contains amounts in a different currency, WBSync pins the exchange rate at upload time so the project-currency totals are consistent across imports. The original amounts and the rate used are stored with the import batch for audit purposes.
The computed fields
- Actual material cost — the running total loaded via import, summed per node
- Rolled material cost — the budget rolled up the WBS tree (parent = sum of children)
- Earned material cost — budget × physical % complete (what the material spend should be given the work done)
- Material CPI — earned material cost ÷ actual material cost (≥1 = under budget)
- % material spent — actual ÷ budget × 100
Who can see it
All material cost fields — budgets, actuals, CPI and % spent — are gated behind the can_view_costs permission (the same gate as labour rates and cost). Foremen, engineers, supervisors and operatives see hours and % complete but never the cost figures. Material cost tracking is available on Team plan and above.
Reporting mode
Each project has a reporting mode — Labour, Material, or Both — that controls which cost columns appear in the WBS tree and reports. Set it from the project settings page. "Both" shows labour and material side-by-side.
What next?
Material budgets feed your earned value: Reports & dashboards →
Frequently asked
Where do I set the material budget for an activity?
Edit the L4 activity on the WBS and enter the Material budget field. You can also include a 'Material budget' column in your WBS XLSX import to set budgets in bulk.
What is the difference between Additional and Overwrite import modes?
Additional adds the amounts in the file on top of existing actuals — use it for incremental uploads (weekly spend batches). Overwrite replaces the actuals with exactly what's in the file — use it for a full sync from your accounting system.
Can I undo a material cost import?
Yes. WBSync stores a snapshot of the previous values with each import batch. Open the import history and revert to restore the prior state. Note: reverting replaces the current actuals with the previous snapshot, so any additional imports since then would also be undone.
How is material CPI calculated?
Material CPI = earned material cost ÷ actual material cost, where earned material cost = material budget × physical % complete. A CPI ≥ 1 means spend is below budget for the work done.
Who can see material cost fields?
Only roles with can_view_costs access — QS, PM, Owner and Admin by default. Foremen, engineers, supervisors and operatives see hours and % complete but the cost fields are null in the API response.
What plan is needed for material cost tracking?
Team plan and above. Field-plan accounts see only labour tracking.