> ## Documentation Index
> Fetch the complete documentation index at: https://help.stralos.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Project rates

> Managing project-specific supplier prices and inserting them into work item costs

Project rates are supplier prices that apply only to this estimate. Use them when a supplier has quoted a project-specific price, when a location assumption differs from the Resource library, or when a material is sourced from a supplier not in the library.

Each project rate is filed under the supplier it came from. When more than one supplier has quoted the same item, the project's rate preference list determines which option prices new work item lines: the first preference that covers the line and has a matching option wins.

The **Project Rates** page shows every project rate in one place, lets you insert prices into work item costs, and tracks which prices are in use. It opens from the estimate workspace's **Rates** section.

On the desktop, the page heading, view tabs, and toolbar filters stay visible as you scroll the rates list.

## The Rates tab

The Rates tab lists every project rate for this estimate. By default it groups rates by item, with each supplier price shown as a row underneath. Items are in the same order as the Resource library: by category, then item name, with **Uncategorised** last. Select the **Item**, **Category**, supplier, or **Project cost** column heading to sort by it, and again to reverse the order. The sort is kept in the page address. Switch to **Supplier** view to see one section per supplier, with that supplier's quote reference, validity, and the total value carried in the estimate.

In item view, select **Quote order** to list imported rates in the order their lines appear on each supplier's quote, newest quote first. Rates that did not come from an import follow in the default order. Select **Quote order** again to return to the default order.

### Toolbar filters

Use the toolbar to narrow the list:

* **Search**: matches against item name, supplier code, supplier name, or quote reference.
* **Category**, **Supplier**, and **Unit** multi-selects filter to the matching rows.
* Quick-filter chips show counts and filter to that subset:
  * **Not costed**: rates attached to a work item but not yet in its cost.
  * **Project only**: rates that are not in the Resource library.
  * **Quote expiring**: quotes whose valid-until date is within 45 days.
  * **Expired**: quotes past their valid-until date. Expired prices continue to price work items until you replace them; the **Expired** badge marks them.

The list loads all matching rates at once. Scroll down to reach later rows.

### Rate preference chips

Rate preference chips may appear above the grid and show the project's stored rule order. Earlier entries take priority when more than one covers a line. See [Rate preferences](https://help.stralos.app/guides/estimators/project-settings.md#rate-preferences) to review or change the rule list.

### Row actions

Each supplier price row has a menu with the following actions:

* **Open**: navigate to the price's own detail page. The supplier name in item view is also a link to the same page.
* **Insert into estimate items…**: add the rate as a cost line in one or more work items. Disabled on a submitted estimate. See [Inserting a rate into a work item](#inserting-a-rate-into-a-work-item).
* **Where it's used**: open a drawer showing which work items carry this price in their cost, and which are attached but not yet costed.
* **Edit**: open the rate in the right-hand drawer to update the price, quote reference, valid-until date, or notes. For a supplier's price, you can also update the **Supplier code** and **Supplier's name for this item**. These two fields are hidden for your company's own prices. For a project-only rate, admins can also change the **Category**. If the save button is disabled, a reason appears beside it naming the first field that needs attention.
* **Update from import**: open the rate importer aimed at this price, so the matching row in a newly imported supplier quote replaces it. Disabled on a read-only estimate. See [Replacing placeholder prices](#replacing-placeholder-prices).
* **Add to Resource library**: available to admins for project-only rates; promotes the price to the shared library. The project keeps its own price.
* **Delete**: remove the rate. The delete dialog shows the affected rate and names the work items whose cost will fall back to another project price or the Resource library, and any attachments that will be removed. The record is kept for history.

In item view, each item row also has **+ Add another supplier's price** to add a second supplier's quote for that item.

### Read-only project rates

Project rates lock per estimate. Once an estimate is submitted (or won, lost, archived, not awarded, or opened as a saved version), its own project rates are read-only and a banner explains why. **Add rate**, **Import rates**, **Insert into estimate items…**, **Update from import**, **Edit**, **Add to Resource library**, and **Delete** are disabled; **Open** and **Where it's used** still work. An alternative estimate on the same project keeps its own rates editable.

## Project rate detail page

Each project price has its own page, opened by selecting **Open** from the row menu or clicking the supplier name in item view. The page has a stable URL you can share with a colleague or bookmark.

The page shows:

* **Price**: the project cost rate, supplier name, location, supplier code (supplier prices only), quote reference, quote date (when recorded), valid-until date, rate sheet (for imported prices), density (for bulk materials), conversion factor (for stock units priced per length, roll, sheet, or pack, and per-metre rates sold in set lengths), and notes. A note beneath the facts shows the current library cost range followed by the project cost when library prices are available. If no library comparison is available, it shows the project cost on its own.
* **Price history**: every recorded change to this price, newest first. Each entry says what happened (**Price added**, **Price changed**, **Details changed**, **Price deleted**, or **Price replaced**), when, who made it, and how (for example **Added by hand**, **Edited by hand**, or **Imported from** the file name). It also shows the old and new values of each field that changed. Select **Show older changes** to see earlier entries.
* **Where it's used**: the work items that carry this price in their cost and any that are attached but not yet costed, with quantities and line costs.
* **Record**: when the price started applying, when it stops (if it has an end date), when it was added, and when it was last changed. Dates in this section are shown in the project's timezone. This section reflects what the price record itself carries, not a full audit history.

When the price was imported from a file, the **Rate sheet** row has an **Open rate sheet** button. It opens the supplier's original file in a new browser tab. If the file can't be opened, a message appears below the button; try again in a moment. The row doesn't appear for prices entered by hand.

Select **Edit price** to update the price without leaving the page. Select **Back to project rates** or **All prices for this project** to return to the full list.

## Adding a project rate

There are three ways to add a project rate:

* **By importing a spreadsheet or quote file**: select **Import rates** on the Project Rates page to open the rate importer. Upload a supplier's spreadsheet or PDF quote, review the extracted lines, and confirm the ones you want. The imported rates are saved to the current estimate's project rates and the page re-prices any affected work items automatically when you return. See [Import project rates from a file](#import-project-rates-from-a-file) for the full import steps.

* **From document review**: upload a supplier quote as a project document, process it, and accept the extracted quote lines from the **Project Rates** tab in the suggestion review panel. Each line is reviewed and confirmed individually. See [Accepting a supplier quote line](https://help.stralos.app/guides/estimators/ai-suggestions.md#accepting-a-supplier-quote-line).

* **Manually**: select **Add rate** from a supplier band in Supplier view, or use **+ Add another supplier's price** in Item view.

The manual add actions open a side sheet on the right side of the screen, keeping the rates list visible beside it. The form opens with a **Resource** picker and reveals fields progressively as you make each choice:

1. **Choose a resource**: search the Resource library by name and select a resource. The supplier/location section appears once a resource is chosen. To add a resource that is not in the library yet, select **+ New resource…** in the list, or type its name and select **+ Create new resource "…"** (see [New project-only items](#new-project-only-items) below).
2. **Choose a supplier and location**: select from the suppliers and locations that currently have active library prices for that item. The price and unit fields appear once a supplier/location is chosen.
3. **Enter the project price**: fill in the cost and unit. The project cost field uses currency format and accepts decimal values. Expand **Quote details (optional)** to record a quote reference and valid-until date. The valid-until date field uses Stralos's standard date format (for example, 7 Sep 2026) so the date you enter is stored as shown, regardless of your browser's locale.

You can attach the new rate to work items in the same step.

If the selected supplier/location already has a current project price for the item, selecting it pre-fills the existing price fields and changes the **Add project rate** button to **Update project rate**. Saving updates the existing price rather than creating a second one.

### Creating a new supplier or location while adding a rate

If the supplier or location you need does not exist yet, you can create it without leaving the drawer. Selecting **+ Add supplier** or **+ Add location** opens that form as a step inside the same drawer. Complete the step and the drawer returns to the rate form with the new entry selected.

A new location needs an address picked from the list and its map position. **Add location** stays disabled until both are there, and a note says which part is missing: "Please add the site's address so we can work out distances." or "Please choose the address from the list so we can find it on the map." When you drop a pin, its position arrives before the address is looked up, so wait for the address to fill in.

### New project-only items

To add a rate for a resource that is not in the Resource library, select **+ New resource…** in the **Resource** picker, or type a name and select **+ Create new resource "…"**. Enter the name, choose a category, and choose the supplier and location. The resource is saved to this project only.

If the category you need doesn't exist yet, admins can select **+ New category…** in the **Category** picker, or type a name and select **+ Create new category "…"**. The category form opens as a step inside the same sheet. Save the category to return to the rate form with it selected. Members aren't offered this option.

### Choosing a supplier and location

For items that already have active library prices, the **Supplier / location** field shows the current active offers for that item grouped by supplier and location. Selecting one pre-fills the current price for comparison.

Select **Choose another supplier / location** to open separate **Supplier** and **Location** selectors. This lets you add a price from a supplier that has no current library offer for the item, add a new supplier with **+ Add supplier**, or add a location with **+ Add location**.

For new project-only items, the full **Supplier** and **Location** selectors open immediately.

When using the separate selectors, the **Location** field lists every active location the supplier's company has (branches, depots, quarries, and other sites), including locations that are not yet set up for pricing in the Resource library. Select a specific yard when its price applies only there, or leave **Location** set to **All locations** for a supplier-wide price.

* If you pick a location that is not yet a price location for that supplier, Stralos links it automatically when you save the rate. The picker notes that adding the rate will make the location a price location.
* Any member can link one of a supplier's own locations this way. Linking your company's own sites is admin-only.
* If you do not have permission to link a location, it is still shown in the list but cannot be selected. The picker notes that an admin can add it in the Resource library.
* A location whose link was previously removed is shown but cannot be selected by anyone.

Each combination of supplier and location is a separate slot, so you can hold one price per yard for the same item. If you try to save a price into a slot that already has one, Stralos tells you which slot is taken and offers to open the existing price for editing. If the add form has unsaved changes, Stralos asks whether to discard them before switching.

If the yard is not listed, select **+ Add location** in the rate sheet. After you create the location, it is selected for the project rate automatically.
Once saved, the location is part of the price's identity and cannot be changed. To move a price to a different yard, add a new price at the correct location and delete the old one.

Everywhere a supplier is named (price rows, the Used-in drawer, the work-item panel, toasts, and copy text), the yard appears after the supplier name (for example, **Road Metals — Yaldhurst**). A price whose yard details cannot be loaded reads as **Road Metals — Unavailable location** rather than supplier-wide.

### Bulk materials: density required

When the selected category is under **Bulk Materials**, a **Density (t/m³)** field appears and must be filled before you can save. Enter the material's weight in tonnes per cubic metre, for example, `1.7` for a typical aggregate.

When replacing a Resource library price for a bulk material item, Stralos pre-fills the density from the current price for that item and unit, checking the following sources in order: this supplier at the chosen location, this supplier at any other location, then the cheapest library price overall. The field stays editable: adjust it if this supplier's material differs from the library record. If you change the priced unit after the density has been pre-filled, the pre-filled value is kept rather than reset.

If you enter a value over 5 t/m³, a hint suggests checking whether the figure may be in kg/m³ instead of t/m³. The hint does not block saving.

### Stock units: conversion factor required

When the selected unit is **Length (len)**, **Roll Length (roll)**, **Roll Area**, or **Sheet (sheet)**, a conversion factor field appears and must be filled before you can save. It records how much of the measured unit one of the priced unit covers:

| Unit | Field label | What to enter |
| - | - | - |
| Length (len) | Metres per length | Metres a single pipe or timber length covers, e.g. `6` for a 6 m pipe length |
| Roll Length (roll) | Metres per roll | Metres a single roll of material covers, e.g. `100` |
| Roll Area | m² per roll | Square metres a single roll covers, e.g. `50` |
| Sheet (sheet) | m² per sheet | Square metres a single sheet covers, e.g. `2.88` for a 2.4 × 1.2 m sheet |

Stralos uses this factor to order whole units, rounding up for each run separately. A work item line priced per length with a factor of 6 m orders enough whole lengths to cover each measured run; an offcut from one run is not reused to reduce the order for another. See [Whole stock units](https://help.stralos.app/guides/estimators/pricing-review.md#whole-stock-units) for how ordering works.

When replacing a Resource library price at a stock unit, Stralos pre-fills the factor from the current library price for that item and unit, using the same source priority as the density pre-fill. The field stays editable: adjust it if this supplier's stock differs. A stock unit option with no factor cannot price any metre or m² line.

### Per-metre rates sold in set lengths

When the unit is **metre (m)**, an optional **Sold in lengths of (m)** field appears. Leave it blank if the material isn't sold in set lengths, and Stralos prices straight from the per-metre rate.

When you fill it in, Stralos orders whole lengths to cover each measured run, rounding up per run, as for a per-length rate. For example, pipe at \$12/m sold in 6 m lengths, with two 12.5 m runs, orders 3 + 3 = 6 lengths.

If the supplier's description mentions a length, a suggestion such as **The description says 6 m lengths.** appears with **Use 6 m**. Select it to fill in the field. Stralos never fills it in for you. Clear the field to price per metre again.

### Pack prices: items per pack required

When the unit is a pack, an **Items per pack** field appears and must be filled before you can save. Enter how many items one pack holds, for example `100` for a box of 100 screws. It must be a whole number. Stralos orders whole packs, rounding up.

If the supplier's description states a pack size, a suggestion such as **The supplier's description says 100 in a pack.** appears with **Use 100**. Select it to fill in the field. Stralos never fills it in for you.

## Import project rates from a file

Members and admins can import rates from an Excel, CSV, or PDF file directly into a project estimate. The importer reads the file using AI and saves nothing to your project until you confirm the import. The same steps and file rules that apply to the Resource library importer apply here: see [Import rates from a file](https://help.stralos.app/guides/admins/rates-catalogue.md#import-rates-from-a-file) for the full walkthrough. The following differences apply when importing into a project:

* The page title shows **Import project rates** and the back link returns to the estimate's Project rates page.
* The page subtitle confirms which estimate the imported prices will be saved to: **Imported prices will be saved to this estimate's project rates.**
* Rate item search is scoped to the items already in the project. Rows matched to an existing project rate item have their category locked and cannot be reclassified during the review.
* After a successful import, prices are saved to the current estimate's project rates only. The shared Resource library is not changed.
* Stralos keeps a copy of the import file as a project document in a **Rate imports** folder. If the copy cannot be saved, a **File not saved to the project** notice appears, and your rates are still imported.
* Stralos automatically re-prices the estimate's costs after the import completes. If repricing is still running when you return to the project, a banner confirms it will finish shortly.

**Run a project rate import**

1. Open the project and navigate to **Rates** in the estimate workspace.
2. Click **Import rates**.
3. Follow the same upload, region selection (spreadsheets), and review steps as the library importer.
4. Click **Import N selected rates** to confirm. Stralos returns you to the estimate's Project rates page.

### Replacing placeholder prices

A placeholder price is a project price you typed in by hand, for example while waiting for a supplier's quote. When you import the quote, the importer can replace it:

* A row with a name like a rate already in the project is matched to that rate and marked **Matched to a rate in this project** and **Check this match**.
* When a row will replace placeholder prices, a note under its match says so before you import, for example **Replaces your placeholder price \$45.00 per t (entered by hand).** or **Replaces Rolleston Quarry's placeholder price \$45.00 per t (entered by hand).**
* A row replaces the matched rate's placeholder prices that have the same condition and either no supplier or the row's supplier. The quote's supplier and location are used for the new price.
* If you choose a different rate item for the row, or **Create new resource**, nothing is replaced.

To update one particular price, use **Update from import** in its row menu. The importer's subtitle then reads **Upload the quote for the project rate you're updating, and the matching row will replace it.** The matching row's note says what it will replace, including that price. If no row in the file matches, a notice says the project rate will stay as it is.

If you choose **As one rate (one price for the job)** while updating from an import, the one rate card says **This will update** and names the rate. The single price then replaces that project rate.

After the import, the confirmation message says how many earlier project prices were replaced. Work items priced from a replaced price are re-priced like any other import.

## Inserting a rate into a work item

**Insert into estimate items…** opens a dialog listing the work items to add the rate to. Use **Add estimate item** to add more. For each work item, set:

* **Add to**: one of the item's activities, or **Add to a new activity**. A new activity is named after the rate. When the item has one activity, Stralos picks it; when it has none, Stralos uses a new activity; when it has several, you choose. Library activities can be chosen too.
* **Quantity** and its basis: per unit of the work item, or in total. Inside an existing activity the rate is charged for the whole activity, so the quantity is always a total. The quantity starts from the work item's own quantity when its unit matches the rate. For a rate priced per pack, the starting quantity is in the item's measured unit, not in packs.

For a rate priced per **len**, **roll**, **sheet**, or pack, the dialog shows how many whole units will be ordered. The inserted line is one run of the total the dialog charged, whichever basis you chose. For example, 8 m per unit across 5 connections orders 7 lengths of 6 m pipe (42 m), not 5 × 2 lengths. See [Whole stock units](https://help.stralos.app/guides/estimators/pricing-review.md#whole-stock-units).

The dialog shows each line's cost and the total it adds. The item is always priced at the project's cheapest quote for it; when that is not the quote you chose, the dialog says which one it uses. The work item's own margin is added on top, as for any other cost line.

If the estimate is submitted, insertion is disabled. See [Read-only project rates](#read-only-project-rates).

## Where it's used

**Where it's used** shows the priced and attached work items for one rate. From here you can:

* **Attach**: record that this rate belongs in a work item so you can insert it later.
* **Remove**: remove an attachment without changing the work item's cost.
* **Insert…**: add the rate to an attached work item's cost.

Attach and Insert are disabled when the estimate is submitted. An alternative estimate on the same project stays editable.

## Work item panel

Each work item has a **Project rates** button in its **Rates & activities** row. The button shows how many attached rates are waiting to be inserted.

When you open the panel it shows the rates linked to this work item, either attached or already in the cost. If nothing is linked it shows every project rate and says so. The **All project rates** view lists the rates under category headings with a count, for example **Materials › Fittings · 2**. Search and the supplier filter narrow the rates within those headings. **Insert** is scoped to this work item. The panel also finishes any pending automatic re-price for rates already in this work item's cost.

A strip below the work item's cost lines appears when attached rates are waiting to be costed; select **Review and insert** to open the panel.

## Automatic re-pricing

After any rate change, adding, editing, or deleting a price, or inserting one, Stralos automatically re-prices the work items that carry that rate. A toast message confirms how many work item lines moved.

If automatic re-pricing could not complete (for example, while the estimate is still being updated), the page shows the pending state and lets you retry.

When the estimate is submitted, its project rates are read-only, so nothing is re-priced.

## The Exceptions tab

The Exceptions tab lists pricing lines whose current choice or frozen pricing-rule outcome needs review. The count badge in the **Project Rates** header updates after each action and refreshes automatically after any rate write.

Each exception card shows:

* The work item and component name.
* A badge describing the exception kind.
* A plain-language description of the conflict.
* The cost difference where available.

Exception action buttons are named for their outcome:

* **Leave unpriced**: accept that this line has no eligible option.
* **Use the rule's option**: switch the component to the rate the rule recommends.
* **Pick another supplier**: navigate to the component to select a different option.
* **Keep the project rate**: accept that the current project rate beats the rule and leave it.

A chip at the top of the tab shows the current exception count. A muted chip with no number means the count has not been calculated yet.

When multiple exception cards share the same kind, same component, and the same available action, a grouped row appears above the individual cards. The grouped row shows a count ("3 similar — Component name: Exception kind") and a single action button that applies the dismissal to all of them at once. Fixing actions (such as **Pick another supplier**) are never grouped: those require individual review.

### Exceptions on a frozen estimate

On a read-only estimate, every decision button is disabled, including **Keep the current price**, **Use the rule's option**, **Use the automatic band**, and the grouped **… for all N** buttons. Hover a disabled button to see why. **Re-apply rate preferences…** is disabled too.

Actions that only open a picker or a price, such as **Pick another supplier**, **Edit the project rate**, and **Widen the search radius**, stay available so you can still review the pricing.

If the estimate is submitted while you are reviewing and you then try a decision, Stralos shows the reason the estimate is read-only rather than a generic conflict message.

### Re-applying rate preferences

**Re-apply rate preferences…** opens a full review of every estimate line whose current price does not match the project's stored rule list. Each affected line is shown with its cost change. Untick a line to keep its current price rather than switching it to the rule's preferred option. Pinned lines start unticked and stay pinned unless you tick them.

## Good practice

* Use a project rate when the change is specific to this tender, rather than editing the shared Resource library.
* Record the supplier's quote reference and valid-until date so expiring quotes are visible before they affect pricing.
* Review the **Expired** chip before submitting an estimate to confirm all expired quotes are still correct.
* Use **Not costed** to find rates attached to work items that have not been inserted yet.
* Check the Exceptions tab before sending an estimate for manager review. An unresolved exception may mean pricing does not match the agreed rate preference.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.