Resource Rates and Markup
A resource has two rates: the internal cost (direct rate) and the billable rate (sell rate). They are linked by a formula, and by the MarkupPercentage at the resource level.
The Formulas
EffectiveBaseRate = BaseRate × AppliedFactor
DirectRate = EffectiveBaseRate
CalculatedSellRate = EffectiveBaseRate × (1 + MarkupPercentage / 100)
What is AppliedFactor?
A multiplier you apply to the raw BaseRate for:
- Location — remote job = 1.15.
- Productivity — difficult access = 1.25.
- Conditions — hot/cold premium = 1.10.
Default is 1.0. The factor is separate from markup because it still represents cost not price — you need it to reflect the real on-site cost before adding margin.
Resource-Level Markup vs Project Markup
There are two levels of markup in TX1. They compose, they do not replace each other.
| Level | What it does | When to use |
|---|---|---|
| Resource.MarkupPercentage | Sets a baseline SellRate on the resource itself. Useful when the resource is used standalone (day rates, supply-only quotes). | Price-list resources, supply-only scenarios. |
| **ProjectMarkup.\*MarkupPercentage** | Applied by type (labour, material, plant, sub, other) at the project level across all items. | Normal project estimating. |
In most estimating workflows, you leave Resource.MarkupPercentage = 0 and let project markup do the work. That keeps resources reusable across projects with different markup strategies.
Recalculate
RecalculateRates() on a resource syncs DirectRate and SellRate whenever the base values change. TX1 calls this automatically on property updates. You rarely invoke it manually.
Price Lists
You can maintain historical rates by duplicating a resource each year (Concrete 25MPa 2025, Concrete 25MPa 2026) and using the current year's resource on new projects. Or, use the Master Library's version history (section 11) which keeps a single canonical resource with a version counter.