22. Price Lists & Pricing Tiers (Pro)¶
Set every number your shop charges in one place, so every new quote picks it up without anyone retyping a price.
Note: Price Lists and Pricing Tiers require an active Pro subscription.
22.1 Why Price Lists Exist¶
A price list is the rate card your quotes are built from — material per square foot, edge profiles per linear foot, cutouts, backsplash, fabrication, installation, delivery, and anything else you charge for.
Without one, every quote is a fresh negotiation with your own memory. With one:
- Granite goes up $4 a square foot — you change it once and every quote written from tomorrow onward is correct.
- A salesperson cannot quietly quote last year's edge price, because the price comes from the list, not from their head.
- You can keep more than one rate card — retail, wholesale, a builder program — and attach the right one to the right customer.
Open it from More > Financial > Price Lists.
Who can open it
Viewing pricing requires the pricing.view permission; creating and editing price lists requires financial.manage_price_lists.
22.2 Creating a Price List¶
- Go to More > Financial > Price Lists.
- Tap New Price List.
- Fill in the settings:
| Field | Description |
|---|---|
| Name | Required. How you will recognize it — "Retail", "Wholesale", "Builder 2026" |
| Description | Optional. A note about when this list should be used |
| Status | Active (available for use), Draft (in preparation), Inactive (disabled) |
| Rounding | Round calculated values to the nearest cent or the nearest dollar |
| Default Tax Rate | Picked from your active tax rates. Applied to items from this list; can still be changed per quote |
| Payment Terms | Default terms carried onto quotes — "Net 30", "50% upfront" |
| Expiration Days | How many days a quote stays valid after it is sent (1–365) |
| Set as default | Use this price list for new quotes when nothing more specific applies |
- Choose what the new list starts with:
| Option | What you get |
|---|---|
| Copy from System Defaults | Pre-populated with the standard pricing set. The usual choice |
| Copy from Existing Price List | An exact copy of another of your lists, ready to adjust |
| Start Empty | A blank list you will fill in yourself |
- Tap Create. The app opens the new list so you can start editing prices.
Building a second rate card
To create a builder or wholesale card, choose Copy from Existing Price List, pick your retail list, then adjust only the lines that differ. Far faster than starting from the system defaults twice.
22.3 What Lives Inside a Price List¶
Opening a price list shows one tab per pricing category:
| Tab | What you set there |
|---|---|
| Settings | Tax, quote expiration, rounding, default slab size, minimum square footage, payment defaults, and this list's price adjustment |
| Materials | Material types, brands and colors, each with its price (per square foot or per slab), cost, and slab size |
| Splash | Backsplash pricing |
| Fab & Install | Fabrication and installation rates, with optional material-specific rates |
| Mitered | Mitered edge pricing |
| Edges | Finished edge profiles — price per linear foot, flat rate, and which profile is the Default |
| Appliance | Appliance edge pricing |
| Curves | Corner and curve pricing |
| Cutouts | Sink, cooktop and other cutout types with their prices |
| Other | Anything else you bill — removal, seams, delivery, hourly work, flat fees |
A few behaviours that apply across the tabs:
- Every tab has a Reset to Defaults action that restores the standard set for that category. Prices you added yourself are not part of the standard set.
- An empty tab offers to create the defaults for you in one tap.
- Items on the Other tab can be marked hidden on quote, price editable on quote, or no discounts — small badges on the row show which flags are on.
- Items can be priced per area, per linear unit, each, per hour, or as a flat rate.
Most of the Settings tab is company-wide
Tax, rounding, quote expiration, slab size, minimum square footage and the payment defaults on the Settings tab apply to your whole company, not just to the price list you happen to have open. The exception is Price Adjustment — a discount (−) or surcharge (+) that applies only to the list you are editing.
22.4 Managing Your Price Lists¶
The Price Lists screen shows one row per list:
| Column | Meaning |
|---|---|
| Name | With a DEFAULT badge on the list used for new quotes |
| Rev | Current revision number — how many times prices have changed |
| Status | Active, Draft, or Inactive |
| Created | When the list was created |
| Tax Rate | The list's default tax rate, name and percentage |
| Expires | Quote validity in days |
Tap a row to edit its prices. The ⋮ menu on each row offers:
| Action | What it does |
|---|---|
| Revision History | The full log of price changes — see 22.5 |
| Edit Items | Opens the pricing tabs |
| Edit Settings | Reopens the settings form (name, tax, terms, expiration) |
| Create Revision | Duplicates the list as a new revision you can edit without touching the original |
| Set as Default | Makes this the list new quotes start from |
| Activate / Deactivate | Flips the status between Active and Inactive |
| Move to Trash | Soft delete — recoverable |
| Delete Permanently | Unrecoverable. Requires typing DELETE to confirm |
Use the trash icon in the header to switch between your live lists and the trash, where deleted lists can be Restored or removed for good.
Permanent deletion takes the prices with it
Deleting a price list permanently also removes its price overrides, material prices, edge profile prices, cutout prices, and the references quotes hold to it. The confirmation dialog spells this out and makes you type DELETE. Prefer Move to Trash unless you are certain.
The default price list cannot be moved to the trash while quotes or clients still point at it. Set another list as default first.
22.5 Revisions and Revision History¶
Every price list carries a revision number, and the app manages it for you.
Any time a price changes, the app takes a snapshot of the whole list first, then increments the revision. Nothing is lost — the "before" state is always recoverable in the history, and every quote records which revision it was written against.
Changing a company-wide default price bumps the revision on every active price list, because that change reaches all of them.
To read the history:
- Open the ⋮ menu on a price list and choose Revision History.
- Each entry shows the revision number, the date and time, why the snapshot was taken, and who made the change.
- Expand an entry to see each individual change as
old value → new value, with the item type and the field that moved. Decreases show in green, increases in red.
An entry with no changes listed simply means the snapshot was taken without a price actually moving.
Create Revision vs. just editing
Editing prices in place bumps the revision on the same list, and existing quotes will flag as out of date. Create Revision duplicates the list instead, leaving the original untouched — useful when you want to prepare next season's pricing while this season's quotes are still going out.
22.6 Copying a Change to Your Other Price Lists¶
If you run more than one price list, they drift apart fast. After you add, edit or delete an item in one list, the app asks whether the same change should be applied to your other lists.
- Add, edit or delete an item (an edge profile, a cutout type, a service, and so on).
- When the "propagate" prompt appears, tick the other price lists that should get the same change.
- Confirm.
Items are matched by name across lists. If a target list has no item with that exact name, the app tells you which lists were missing it and offers to create it there.
22.7 When a Quote's Prices Go Stale¶
Every quote remembers which price list revision it was built from. When you reopen the price details for a project and the price list has moved on since, the app stops and asks what you want to do.
- A Prices Out of Date dialog opens automatically, listing each price that changed between the revision stored on the quote and the current one.
- Every change is shown as
old → new, with increases in red and decreases in green, and every change starts ticked. - Untick anything you want to keep at the old price.
- Tap Apply Selected Updates.
What happens to each line:
| Your choice | Result |
|---|---|
| Left ticked | The quote takes the current price list price |
| Unticked | The old price is locked onto the quote as an override, so it will not move again |
| Keep Current Prices | Nothing changes — the quote stays on the old revision and will ask again next time |
There is a second checkpoint at acceptance: if you accept a quote whose price list has changed since it was written, the app warns you before letting the acceptance through. That warning is deliberate — accepting locks the numbers you are about to be held to.
Only price fields are compared
The comparison looks at price fields — per square foot, per linear foot, per unit, flat rate, minimum charge, trip charge, base and unit prices. Renaming an item or changing a description does not make a quote stale.
22.8 Pricing Tiers¶
A price list answers "what do we charge?" A pricing tier answers "who is asking?" Tiers let one price list carry several price bands — retail, builder, wholesale — instead of maintaining separate lists that fall out of sync.
Creating tiers¶
- Go to Settings > Pricing Tiers.
- Tap Add Tier.
- Fill in:
| Field | Description |
|---|---|
| Tier Name | Required. E.g. "Retail", "Builder 1", "Builder 2" |
| Description | Optional. Who this band is for |
| Set as default | Used when a client has no tier of their own |
| Active | Inactive tiers stay on record but are no longer offered anywhere |
- Tap Save. Drag the handle on each row to reorder the list — the order you set is the order tiers appear everywhere else.
Setting per-tier prices¶
Tier prices are set on the material, not on the tier:
- Open a material for editing.
- Find the Price per Tier card.
- For each tier, fill in a price per sq ft, a price per slab, or both.
- Tap Save.
Leave a tier's fields blank to fall back to the material's normal price. You only need to fill in the tiers that actually differ — a builder rate on your ten fastest-moving colors is a perfectly good place to start.
Colors can carry their own tier prices too, and a color's tier price wins over the material's.
22.9 Which Tier a Quote Uses¶
The app works down this chain and uses the first tier it finds:
- A tier chosen directly on the drawing
- The project's pricing tier
- The client's default pricing tier
- The tier on the client's account
- Your company default tier
- If none of the above — the material's normal price
In practice you set it in one of two places:
- On a client — open the client for editing and pick a Default Pricing Tier. Leave it on the default option to inherit the company setting. Every quote for that client then uses that band automatically.
- On a project — set the tier on the project when one specific job is priced differently from the rest of that client's work.
Tier or separate price list?
Use a tier when the same catalog is sold at different rates to different customers — same materials, different margin. Use a separate price list when the catalog itself differs, or when terms, tax and expiration need to differ too.
22.10 Edge Pricing Lives on Two Axes¶
The most common pricing mix-up
Edge pricing exists in two different places, and changing the wrong one is the single most frequent source of "my edge price did not update" reports.
Axis 1 — the edge profile (the Edges tab of the price list). Each finished profile carries a price per linear foot and an optional flat rate added once per profile per job. When an edge on a drawing is assigned a specific profile, that profile's price is what the quote charges.
Axis 2 — the material. Each material record has its own Edge Finish Price / ft field, stored alongside the material's price per square foot and cutout price.
The edge line on a quote comes from the edge profile. Editing the material's Edge Finish Price field does not change what the profile charges — if the edge price on a quote is wrong, the fix is on the Edges tab of the price list the quote is using.
And one more thing about the Default star¶
The Default marker in the Edges tab does not mean "the profile new drawings start with". It means: the linear price charged for an edge that is marked finished but has no profile of its own. That is the price behind the "Edge Finish" line on a quote.
- Marking a different profile as Default changes that price. It does not change what appears in the drawing tool.
- The Default is transferable, not removable — marking a new one clears the old. There is no "no default" state.
- Unfinished never appears in the Edges tab, by design. It is a drawing state, not a billable profile, and it costs nothing.
22.11 Discount Presets¶
Instead of typing the same discount over and over, save it once.
- Go to Settings > Discounts.
- Tap + and fill in:
| Field | Description |
|---|---|
| Name | What the discount is for — "Valpak $300", "Repeat customer", "Cash discount" |
| Type | Percentage or Fixed amount |
| Value | The number. A percentage cannot exceed 100 |
| Active | Inactive presets stay on record but are no longer offered on quotes |
- Tap Save.
Active presets then appear in the discount dialog of a quote's price details panel — pick one instead of typing the number by hand, and the quote records which preset was used.
22.12 Company Pricing Settings¶
A few pricing defaults live at the company level, above any single price list. Reach them from More > Company > edit your company > Pricing Settings:
| Setting | Description |
|---|---|
| Default Markup | Percentage applied to material and labor |
| Waste Factor | Percentage of extra material assumed on every job |
| Taxes enabled | Master switch for tax on your documents |
| Tax Name | The label printed on quotes and invoices — "Sales Tax", "GST", whatever your state calls it |
| Tax rates by category | Per-category rates, which also feed the QuickBooks integration |
The Tax Name is display text only: it changes what your customer reads on the document, not what is charged. The amount always comes from the tax rate itself. Manage the rates from Settings > Tax Rates — see 7.3 Tax Rates.
Related: Drawing Tool — Price Details · CRM & Clients · Billing & Invoicing · Settings