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

# Pricing rules (reference)

> How estimate pricing is calculated — cost, markup, retail and final price, discounts, and tax.

This page is a complete reference for how an estimate's pricing is calculated: true cost, retail cost, final price, labor hours, tax, factors, multipliers, additional costs, discounts, and deposits. Each rule card explains one piece of the calculation in plain terms.

The pricing for any estimate is driven by your **branch configuration** (the pricing knobs set in Settings) and the **multiplier ranges** defined for your branch.

***

### Live pricing vs. frozen estimates

* **What it governs:** Which branch settings and multiplier ranges are used to price an estimate.
* **How it works:** When you create a **new** estimate, pricing uses your branch's current (live) configuration and multiplier ranges. When you re-open or update an **existing** estimate, pricing uses an immutable snapshot of the branch configuration, work areas, and multiplier ranges that were in effect when the estimate was first created.
* **What this means for you:** Changes to your price book or branch settings do **not** retroactively change an existing estimate. An existing estimate keeps its original (frozen) pricing until it is recreated. New estimates always reflect the latest settings.

***

### Average labor rate (blended straight-time + overtime)

* **What it governs:** The single hourly rate applied to all labor hours in the estimate.
* **How it works:** The first 8 hours of a workday are billed at the base hourly rate (straight time); any hours beyond 8 in the workday are billed at 1.5× (overtime). The average rate is the total day's wage divided by the length of the workday, giving a single blended hourly rate.
* **Inputs:** the base hourly rate and the average work-day length (both set in branch settings).

***

### Number of days needed

* **What it governs:** The job's day count, which drives load/unload labor, driving distance, and certain per-item labor.
* **How it works:** If every selected item is a sub-contracted item, the job needs 0 days. Otherwise, the number of days is the value entered for the job (when it's a valid number greater than 0), or 1 by default.
* **What this means for you:** A fully sub-contracted job uses 0 days, so it incurs no driving or load/unload labor.

***

### Driving distance (round trip)

* **What it governs:** Total driving distance, used for fuel cost and driving-time labor.
* **How it works:** The system measures the one-way distance from the branch's base address to the property address (in miles, rounded to the nearest mile), then computes the round-trip total: two times the one-way distance, multiplied by the number of days.
* **Inputs:** the branch base address, the property address, and the number of days.
* **Notes:** When the job needs 0 days, driving distance is 0. A missing base or property address prevents the calculation.

***

### Fuel material cost

* **What it governs:** Fuel cost, added as a base material before any line items.
* **How it works:** Fuel cost is the total driving distance divided by the truck's average miles-per-gallon, multiplied by the cost of gas.
* **Inputs:** total driving distance, the truck's average MPG, and the gas cost (set in branch settings).

***

### Base labor (driving time + load/unload)

* **What it governs:** Fixed labor added to every job before per-item labor.
* **How it works:**
  * **Driving-time labor** is derived from the total driving distance (a fixed hours-per-distance relationship).
  * **Load/unload labor** is the configured load/unload hours multiplied by the number of days.
  * **Base labor cost** is the average labor rate multiplied by the sum of driving-time and load/unload hours.
* **Notes:** Both the driving and load/unload hours also count toward the estimate's total labor hours.

***

### Factors (named multipliers)

* **What it governs:** A factor is a named multiplier that changes one or more of an item's **material cost**, **labor hours**, or **price**. A single factor carries a set of these targets and applies the same value to every target it names.
* **How it works:** Factors can be attached at three levels: the individual item, the item category, and the work area. Separately for material cost and for labor hours, the combined factor at each level starts at 1 and multiplies in:
  1. every **always-on** factor that targets that cost type, then
  2. every **user-selected** (toggled-on) factor that targets that cost type.
     Always-on factors are applied automatically and are not shown as toggles; the remaining factors are selectable in the calculator. A **material cost** factor scales the item's material cost; a **labor hours** factor scales its labor hours, so the labor cost follows.
* **Price factors:** A factor that targets **price** multiplies the line's retail price directly, *after* markup and the payment-method factor. The item, category, and work-area price factors all multiply onto the line. A price factor moves the line — including an item sold at a [fixed price](#fixed-price-items) — but it does **not** change true cost, labor hours, or which multiplier tier the job lands in.
* **Notes:** Factors are multiplicative — a factor of 1 does nothing, less than 1 discounts, and greater than 1 marks up. Item-category factors apply their always-on factors only (there is no per-estimate selection of category factors). A factor is ignored for any target it doesn't name, and when a level has no applicable factors for a target, its combined factor for that target is 1. Factors saved before targets existed still behave as before: an older labor factor counts as a **labor hours** factor and an older material factor as a **material cost** factor.

***

### Additional costs (flat per-unit add-ons)

* **What it governs:** An additional cost is a named flat amount that applies to either material or labor and is added when selected on an item.
* **How it works:** For an item with a given quantity, each selected additional cost (matching the cost type) contributes its amount multiplied by the item's quantity. Additional costs are **added** to the item's cost after that level's factors are applied — they are additive, not multiplicative.
* **Notes:** Only additional costs matching the cost type (material vs. labor) are summed in each pass.

***

### Material cost for a standard item

* **What it governs:** Material cost for a normal (non-sub-contracted) item, including its factors and additional costs.
* **How it works:**
  * Start with the item's per-unit material cost multiplied by its quantity.
  * Apply the item-level material factor, then add the item's material additional costs.
  * Multiply the result by the work-area material factor and the item-category material factor.
* **Notes:** Items with a quantity of 0 or less are skipped entirely. Because additional costs are added before the area and category factors multiply in, those factors also scale the additional costs.

***

### Auto-generated secondary items (e.g. dump/disposal fees)

* **What it governs:** A secondary item (such as a disposal or dump fee) automatically generated by a primary item.
* **How it works:** When a primary item is configured to generate a secondary item, the number of secondary items is the primary item's quantity divided by the configured "units per secondary item," rounded up. The secondary item's material cost is multiplied by that count, then by the **work-area material factor only** — no item or category factors and no additional costs are applied.
* **Notes:** Secondary item generation is skipped if the resulting count is 0 or less.

***

### Material cost for a sub-contracted item

* **What it governs:** Material cost for sub-contracted ("sub") items, which are priced separately and use a different markup downstream.
* **How it works:** Start with the sub item's per-unit material cost multiplied by its quantity, apply the item-level material factor, then add the item's material additional costs. **No work-area or category factors are applied** to sub-contracted items.
* **Notes:** Items with a quantity of 0 or less are skipped.

***

### Per-item labor cost and hours

* **What it governs:** Labor hours and labor cost for each item (both standard and sub-contracted).
* **How it works:**
  * Start with the item's labor hours per unit.
  * Apply the item-level labor factor, then the work-area labor factor, then the item-category labor factor.
  * The item's labor cost is those final hours multiplied by the average labor rate and the quantity, plus the item's labor additional costs.
* **Notes:** Items with a quantity of 0 or less are skipped. The resulting hours feed the estimate's total labor hours.

***

### True cost (cost to the company before markup)

* **What it governs:** The "true cost" — the company's raw cost before any markup — split into standard and sub-contracted buckets.
* **How it works:**
  * If a quality-control visit is included, its configured price is added as a flat amount.
  * **Standard true cost** = standard material cost + all labor cost + the quality-control visit price. (All labor — including the labor portion of sub-contracted items, plus base driving and load/unload labor — is in this bucket.)
  * **Total true cost** = standard true cost + sub-contracted material cost.
* **Notes:** Sub-contracted **labor** is part of the standard labor total, but sub-contracted **material** sits in its own bucket.

***

### Multiplier ranges (markup by job size)

* **What it governs:** A multiplier range maps a band of job cost to a markup. The selected range's markup is applied to the standard true cost.
* **How it works:** Each multiplier range covers a cost band with a minimum and maximum cost and a markup value. The system selects the first range whose band contains the standard true cost (both bounds inclusive; an open-ended top range has no maximum). That range's markup is then used to compute retail.
* **Notes:** There must be a range that covers the job's cost — if no range matches, pricing cannot complete. When configuring ranges (Settings → Price book), ranges within a branch must not overlap, the minimum must not exceed the maximum, and the lower markup must not exceed the higher markup.

***

### Retail price (markup + payment method + minimum floor)

* **What it governs:** The retail price, before any customer discount.
* **How it works:**
  * **Standard portion:** the standard true cost multiplied by the selected range's markup.
  * **Sub-contracted portion:** each sub-contracted item's cost multiplied by its markup — the item's own markup override if set, otherwise the branch's default sub-contractor markup.
  * These two portions are added together and multiplied by a **payment-method factor**: a cash factor for cash, the credit-card fee for credit, or the matching financing factor for 3-, 6-, or 12-month financing (all set in branch settings).
  * **Minimum retail floor:** for most jobs, the result is raised to at least the configured minimum retail price. This floor is skipped for fully sub-contracted jobs.
* **Notes:** The payment-method factor applies to both the standard and sub-contracted portions. Markup is not applied to labor separately, because labor is already inside the standard true cost. Any [fixed-price lines](#fixed-price-items) are added on top *after* the payment-method factor (it never touches them), and any [price factors](#factors-named-multipliers) add their uplift after that too.

***

### Fixed-price items

* **What it governs:** An item given a **Fixed Price (per unit)** in the price book, which sells at that exact price instead of being priced from cost.
* **How it works:**
  * The line's retail is the fixed unit price × quantity. The branch multiplier and the payment-method factor do **not** apply to it, and a **fixed sub-contracted item** sells at its fixed price rather than the sub-contractor markup (it's still reported as sub-contracted revenue). A [price factor](#factors-named-multipliers) and the customer discount still adjust the line. A fixed price of 0 is a free line — 0 is a real price, not "unset."
  * The item's material cost and labor hours are still recorded: the hours count toward the estimate's total labor hours, and the cost stays in the company's true cost (real money the company spends). But that cost is **kept out of the true cost that picks the multiplier tier**, so a fixed item can't push the rest of the job into a higher markup band.
  * A fixed item carries none of the job's shared overhead. That overhead is redistributed across the remaining cost-priced lines instead.
* **Notes:**
  * **Travel and quality-control visit:** on a job made up entirely of fixed-price and sub-contracted items — with no in-house, cost-priced item — no travel (fuel and driving/load-unload labor) and no quality-control visit are charged to the customer, because there's no marked-up line to carry them. The driving and load/unload hours are still logged for scheduling, and the trip and visit still count in the company's true cost. As soon as one cost-priced in-house item is on the job, travel and the QC visit are charged exactly as before.
  * **Minimum retail floor:** fixed lines count toward the branch minimum retail price. When a cost-priced line can carry the job up to the floor, the fixed lines stay at their set price; only when there's no cost-priced line to raise are the fixed lines themselves lifted to meet the floor.
  * **Tax:** a fixed line is taxed by its own item's **Taxable Item** flag, like any other line.

***

### Final price (apply customer discount)

* **What it governs:** The final price — what the customer pays before tax.
* **How it works:** The final price is the retail price reduced by the customer discount percentage (final price = retail price × (1 − discount %)). The discount defaults to 0.
* **Notes:** The discount is applied **after** the minimum retail floor, so the final price can fall below the minimum retail price. Tax is applied to the taxable part of the final price (see the tax rule below).

***

### Maximum discount (who can discount how much)

* **What it governs:** The largest discount a user can enter, based on role and B2B context.
* **How it works:** Users with permission to manage estimates can discount up to 100%. Other users are capped at the branch's configured maximum discount. A discount entry is always clamped to between 0 and the applicable maximum. The "Apply contractor prices" toggle sets the discount to the branch's configured B2B maximum discount (or 0 when turned off).
* **Inputs:** the branch's maximum discount and B2B maximum discount, and the user's role.

***

### Tax (a chosen rate, applied to the taxable part of the final price)

* **What it governs:** The sales tax amount saved on the estimate.
* **How it works:** Pricing itself doesn't calculate tax. Tax comes from the rate picked in the tax selector — a saved tax rate, a tax group, TaxJar (on branches that use it), or **No Tax** — and is the **taxable amount × the rate**, rounded to the cent. For a Calculator estimate, the taxable amount is the part of the **final price** (after the customer discount) that belongs to items marked **Taxable Item** in the price book. Estimates saved before items could be marked taxable are taxed on the whole final price.
* **Notes:** There's no rule based on the state or ZIP code of the property — an estimate is taxed only when a tax is selected. A new estimate starts with the branch's default rate (or TaxJar on branches that use it). The estimate keeps a saved copy of the rate's name and percentage, so later changes to the rate in settings don't change it on their own. See [Sales tax](/reference/billing/sales-tax) for the full rules, including estimates built from scratch and older estimates.

***

### Total labor hours

* **What it governs:** The total labor hours saved on the estimate.
* **How it works:** Total labor hours = the sum across all items of (final per-item hours × quantity) + driving-time hours + load/unload hours. The per-item hours already include all item, area, and category labor factors.
* **Notes:** This total includes the base driving and load/unload hours.

***

### Stored estimate totals

* **What it governs:** The key pricing numbers saved on each estimate.
* **How it works:** Saving an estimate stores: the **retail cost** (the retail price), the **final price**, the **true cost** (total true cost), the **tax amount**, the **labor hours**, and the **sub-contracted services retail cost**.
* **Notes:** The tax amount and sub-contracted retail cost default to 0 when not applicable.

***

### Per-line-item retail on the proposal

* **What it governs:** How the estimate's total retail is allocated down to individual line items on the customer-facing proposal.
* **How it works:** The calculation produces true-cost detail per item; the proposal then allocates retail across the lines:
  * Overhead (the part of standard true cost not directly tied to a line item) is spread across the standard line items in proportion to each line's true cost.
  * Each standard line's retail is its true cost plus its overhead share, multiplied by the range markup.
  * Each sub-contracted line's retail is its cost multiplied by its markup (its own override, or the default sub-contractor markup).
  * Each line is then adjusted by the payment-method factor and the discount.
  * Finally, the line items are scaled so their sum never exceeds the estimate's true retail total (scaling only reduces, never inflates). Repeated occurrences of an item split that item's cost evenly, and the unit price is the line total divided by quantity.
* **Notes:** This is a presentation allocation only — it does not change the stored retail cost or final price of the estimate.

***

### Deposit amount

* **What it governs:** The required deposit shown on the proposal, and the deposit invoice created automatically when a proposal is signed.
* **How it works:**
  * **On the proposal:** the deposit is the deposit percentage (10% by default) of the after-tax total (final price plus tax). If a maximum deposit amount is configured (greater than 0), the deposit is capped at that amount.
  * **On the auto-created deposit invoice:** the same percentage and cap are applied, but to the **pre-tax final price**, and the deposit line amount is rounded to the nearest cent. Tax on the deposit line is computed separately.
* **Notes:** The default deposit is 10%; a maximum deposit of 0 means no cap. A deposit invoice is not auto-created if the final price is 0 or less, if an invoice already exists for the estimate, if invoicing is turned off, or if automatic deposit invoices are turned off. Note that the proposal deposit is based on the after-tax total while the auto-created invoice deposit is based on the pre-tax final price — these are different bases.

***

### Item fields that drive pricing

* **What it governs:** The per-item catalog settings that affect price.
* **How it works:** The pricing-relevant settings on an item are:
  * **per-unit material cost** and **labor hours per unit**,
  * an optional **fixed unit price** (sells the item at that exact price per unit — see [Fixed-price items](#fixed-price-items)),
  * a **markup override** (overrides the default sub-contractor markup for sub-contracted items),
  * the **sub-contracted** flag (routes the item to the sub-contracted bucket and markup),
  * the **unit** (Sq.Ft., Big Sq., Dollars, Linear Feet, Each, or Hours — for display only; it does not change the math),
  * the item's **factors** and **additional costs**,
  * and **secondary-item generation** settings (whether it generates a secondary item, and how many primary units produce one).
* **Notes:** The markup override is optional. The unit is informational — the math is always quantity × cost regardless of unit.

***

### Items with no quantity are excluded

* **What it governs:** Items with a quantity of 0 or less.
* **How it works:** In every cost pass (material, labor, and sub-contracted), items with a quantity of 0 or less are skipped, and they are not saved with the estimate.
* **What this means for you:** A selected item left at quantity 0 adds nothing to the price and isn't kept.

***

### Branch pricing settings

* **What it governs:** The branch-level configuration values that every formula above reads (set under Settings → Branch Management).
* **The pricing-relevant settings include:** the base hourly rate, average work-day length, credit-card fee, gas cost, truck average MPG, load/unload hours, default sub-contractor markup, cash factor, financing factors (3, 6, and 12 months), minimum retail price, quality-control visit price, maximum discount, B2B maximum discount, deposit percentage (default 10%), and maximum deposit amount (default 0, meaning no cap).
* **Notes:** An existing estimate prices against the frozen copy of these settings captured when it was created, not the live values. If a financing factor is left unset, that financing option effectively prices to 0 — make sure all financing factors are configured.

***

### Rounding

* **What it governs:** Where pricing rounds vs. carries full precision.
* **How it works:** Pricing carries full precision through material cost, labor, true cost, retail, and final price — the stored retail cost, true cost, final price, and labor hours are not rounded. Rounding is applied only in specific places: driving distance (to the nearest mile), the count of generated secondary items (rounded up), the tax amount (to the nearest cent), and the deposit invoice line (to the nearest cent). Amounts shown in the app are formatted as currency for display, but the underlying stored values keep full precision.
