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

# Dynamic Rates - Project to Invoice

> Define a pricing rulebook on a project once — Tread matches the right rate to every job.

## What this solves

When pricing varies by truck, material, or site, billers end up re-keying rates on every ticket. Project Rates ends that. You define the pricing rules once on the [Project](/concepts/orders-projects). Tread then applies the right customer, vendor, and driver rate to each order and job automatically.

Each rate holds three values:

| Value             | What it is                                                    |
| ----------------- | ------------------------------------------------------------- |
| **Customer rate** | What the customer is charged                                  |
| **Vendor rate**   | What the vendor or carrier is paid                            |
| **Driver rate**   | What your internal driver earns — can inherit the vendor rate |

<Tip>
  Check **Use vendor rate and add-ons for driver rate** to keep the driver rate in sync with the vendor rate automatically.
</Tip>

## How matching works

Conditions narrow when a rate applies. There are four, combinable in any mix: **Pickup [Site](/concepts/sites-geofences)**, **Dropoff Site**, **[Equipment](/concepts/equipment) Type**, and [**Material**](/concepts/materials). A rate with no conditions is the project-wide default.

Matching runs per job, once equipment is assigned. Change the truck, pickup, dropoff, or material and the rate re-evaluates. The pick order:

1. **Manual override** — never replaced by automatic matching.
2. **Starred rate** — forces one rate onto every job on the order.
3. **Most specific match** — three conditions beat two, two beat one.
4. **Project default** — the no-condition rate.
5. **Company rate cards** — account-specific first, then defaults.

## Walkthrough

<Steps>
  <Step title="Open the Freight Rates panel">
    Open a project. Rates appear as accordion rows — collapsed shows a summary with condition chips.

    <img src="https://mintcdn.com/treadtechnologiesinc/itTrzqaCUkK5zW_W/images/workflows/project-rates-panel.png?fit=max&auto=format&n=itTrzqaCUkK5zW_W&q=85&s=d20ca596171d4fb3af798fda009d1d19" alt="Freight Rates panel on the project form with an empty rate, rate value fields, and condition buttons" width="2396" height="1844" data-path="images/workflows/project-rates-panel.png" />
  </Step>

  <Step title="Add a rate">
    Click **Add another rate**. Name it clearly (e.g., *Tri-Axle Gravel from Main Quarry*). Enter the customer, vendor, and driver values, then add conditions. Duplicate a rate to clone and tweak. There is no limit on rate count.

    <img src="https://mintcdn.com/treadtechnologiesinc/itTrzqaCUkK5zW_W/images/workflows/project-rates-add.png?fit=max&auto=format&n=itTrzqaCUkK5zW_W&q=85&s=13f68effc83c4d9ba91b3db44219bfe3" alt="Filled rate: Side Dump Rates with customer, vendor, and driver values per ton, a vendor add-on, and a Side Dump equipment type condition" width="1114" height="1438" data-path="images/workflows/project-rates-add.png" />
  </Step>

  <Step title="Attach add-ons or a rate card">
    Use the **…** menu on a rate row to attach [add-ons](/concepts/rates-add-ons) (fuel surcharge, standby) or pull in an account rate card as a starting point. Update a rate card once and every project using it picks up the change.

    <img src="https://mintcdn.com/treadtechnologiesinc/itTrzqaCUkK5zW_W/images/workflows/project-rates-addons.png?fit=max&auto=format&n=itTrzqaCUkK5zW_W&q=85&s=3f6431eadd453fab0ffe5e316dd86baf" alt="Rate overflow menu open with Add On and Use Rate Card options" width="1212" height="344" data-path="images/workflows/project-rates-addons.png" />
  </Step>

  <Step title="Check the order">
    Every order form shows the project's rates. The **Rates Synced With Project** chip confirms the order reads live project rules. Star one rate to force it onto every job — useful for flat-rate hauls. Orders without a project can hold their own order-level rates.

    <img src="https://mintcdn.com/treadtechnologiesinc/itTrzqaCUkK5zW_W/images/workflows/project-rates-order.png?fit=max&auto=format&n=itTrzqaCUkK5zW_W&q=85&s=d040bdcd85369a32718edc251135f715" alt="Order Freight Rates with the Rates Synced With Project chip and the star control to set one rate card on every job" width="1160" height="686" data-path="images/workflows/project-rates-order.png" />
  </Step>

  <Step title="Rate matching and assignment">
    Assign a vendor or driver, or set equipment — rates match automatically on each job row. To verify which rate card was applied, open the **Edit Rates** or **Edit Job** form.
  </Step>

  <Step title="Manually override a job when needed">
    Fix a single job from the **Edit Job** or **Edit Rates** form. You can change any value directly, or pick from a dropdown of the project's rates — choosing a non-matching rate flags the job as manual. Editing any of the conditions reverts it back to the system match.

    <img src="https://mintcdn.com/treadtechnologiesinc/itTrzqaCUkK5zW_W/images/workflows/project-rates-override.png?fit=max&auto=format&n=itTrzqaCUkK5zW_W&q=85&s=f00b182355ff8ebb899a648cc86ad1c2" alt="Edit Rates form with Rate Card Selection, customer and vendor rates, their add-ons, and the Rates History button" width="1198" height="1108" data-path="images/workflows/project-rates-override.png" />
  </Step>
</Steps>

## Editing and stamping

While an order is active, rate edits sync both ways between project and order. When an order completes, its rates are **stamped** — snapshotted and disconnected — so later project edits never change finished billing.

A rate edit can reach beyond where you make it. What's reachable:

| Edit at…          | Reaches…                          |
| ----------------- | --------------------------------- |
| Project           | All open orders on that project   |
| Order (active)    | The project + other open orders   |
| Order (completed) | That order only — already stamped |

### Steering the cascade

On every rate change — at the project or the order — you choose whether the change applies to existing orders within a date range. Turn on **Apply rate changes to existing orders** (or **…to sibling orders** on an order) and at **Submit**, a dialog opens where you pick which reachable orders receive it.

| Turn it… | And existing orders…                                                        |
| -------- | --------------------------------------------------------------------------- |
| Off      | Keep their current rates. Only orders created from now on use the new ones. |
| On       | You choose which reachable orders cascade.                                  |

The **project always gets the change** — you're editing its rate card, so it can't be skipped. On an active order, the edit rewrites the project card first, then flows out to siblings.

The dialog defaults to orders from today onward — **set an earlier start date to reach older orders.** If you pick a past range, it will re-price completed and in-progress loads, and it warns you before you do.

**Deselecting stamps the order.** Any order you uncheck that's still synced is automatically stamped — it keeps its current rates and stops following the project. Future rate changes won't reach it on their own, and any order-level changes won't impact the project reversely. You can still push a later change to a stamped order by selecting it in this dialog again — but that's not a resync: it pushes that one change down and restamps the order's rates, and the order stays stamped.

## Rate history

Every rate change is logged. Click **Rates History** on a project card (or in the project form header) to see a timeline: who changed what, when, and the exact values. Use it to answer "why did this rate change?" without a support ticket.

<img src="https://mintcdn.com/treadtechnologiesinc/JoQmi2ZoPODFBzAy/images/workflows/project-rates-history.png?fit=max&auto=format&n=JoQmi2ZoPODFBzAy&q=85&s=b5c012484a02e5c3d52374dcb8235933" alt="Rates History timeline showing timestamped rate creation events with actor and rate values" width="2002" height="800" data-path="images/workflows/project-rates-history.png" />

## Migrating from Site Rates

Existing Site Rates were migrated automatically — no re-entry. They now appear as rates with a Pickup Site condition and match the same way as before. Layer in more conditions when ready.

## Watch it

Full walkthrough — project rates end to end:

<iframe src="https://www.loom.com/embed/3fd37e89f99f40078a706af95424dff7" title="Project Rates — full walkthrough" frameBorder="0" allowFullScreen style={{ width: '100%', aspectRatio: '16 / 9' }} />

Short demo — a job auto-matching the right rate by site, material, and equipment:

<iframe src="https://www.loom.com/embed/43377aa535134b749a54c738a0b5cc98" title="Project Rates — short demo: automatic rate matching" frameBorder="0" allowFullScreen style={{ width: '100%', aspectRatio: '16 / 9' }} />

## Common pitfalls

<Warning>
  **Add-ons are replaced when the matched rate changes.** A re-match clears the old rate's add-ons and applies the new rate's. To apply an add-on universally, attach it to every rate that could match.
</Warning>

<Warning>
  **Two rates with identical conditions are ambiguous** — the first-created rate wins. You can confirm which one applied in the Rates History view. To avoid this, rename one or change a condition so each rate is unique.
</Warning>

## FAQ

<AccordionGroup>
  <Accordion title="What happens if no project rate matches a job?">
    Tread falls back to your company rate cards — account-specific first, then defaults. Keep one no-condition rate on the project to guarantee a match.
  </Accordion>

  <Accordion title="Can I edit rates on an order without touching the project?">
    Not while the order is active — edits sync both ways. After completion, rates are stamped and stop syncing. Job and invoice edits never sync back.
  </Accordion>

  <Accordion title="Why doesn't my completed order show my latest project edits?">
    Completed orders hold a snapshot from when the work finished. Reopening the order keeps the stamped rates.
  </Accordion>

  <Accordion title="Can drivers see or edit rates on mobile?">
    Rates on mobile are editable, not view-only. Drivers' visibility stays gated by [Roles & Permissions](/concepts/roles-permissions). Bulk edits from the order screen act as manual overrides.
  </Accordion>
</AccordionGroup>

## Related

* [Manage Rates, Add-Ons & Fees](/workflows/manage-rates) — company-level rate cards, add-ons, and fuel surcharge
* [Rates, Add-Ons & Fuel Surcharges](/concepts/rates-add-ons) — how Tread models pricing
* [Orders & Projects](/concepts/orders-projects) — how Projects, Orders, and Jobs fit together
* [Settlements & Driver Pay](/concepts/settlements-driver-pay) — where matched rates land
