# Price Lists, Tax and Inventory Reports

Price lists decide what a particular customer pays; tax rates decide what is added (or already included) on an order; the reports say what sold, what earned, and what is sitting on the shelf. Every order line says which price it took, so nobody has to wonder later.

## What you'll need

- **Manage Inventory Settings, Locations & Stores** (`inventory:config:manage`) to open **Price lists & tax** and to change the tax settings. The seeded **Manager** role has it.
- **View Sales & Purchase Orders** (`inventory:orders:read`) to open **Inventory reports**. The seeded **Member** role has it.
- Products with prices — see [Products, Stock and the Reorder Plan](/help/inventory/products-and-stock).

## Price lists

**Inventory → Setup → Price lists & tax** (`/inventory/pricing`), **Price lists** tab. With no lists, everyone pays the catalog price (the variant's **Price**).

### How a line's price is chosen

For each line of a new order, in this order:

1. **A price typed on the line** is used as it is. So is a price carried from an estimate or from a deal's product lines.
2. Otherwise, **the customer's price list**. Only active lists in the order's currency count. A list assigned to the contact directly wins over one assigned to their company, which wins over one assigned through a contact tag; when several lists sit at the same step, the higher **Priority** wins.
3. Within that list: the fixed price for the SKU with the highest **From qty** the line's quantity reaches (a volume tier), or, on a percentage list, the catalog price moved by the list's percent. A SKU a fixed-price list does not name sells at the catalog price.
4. With no list, **the catalog price**.

This applies wherever an order line is priced without a typed price: the **New order** form, a line added with **Edit lines**, a deal's **Products** card, and an agent taking an order. An agent asked for a known customer's price gets the same answer, tiers included, from its `inventory_get_price` tool. Orders from a connected store keep the store's prices.

### Create a price list

1. Click **New price list**.
2. Enter a **Name** (`Wholesale`), the **Currency** (a list applies to orders in its currency) and an optional **Description**.
3. Choose **Prices**:
   - **Fixed prices per SKU** — click **Price** for each row and enter the **SKU**, the **Price** and **From qty**. Several rows for one SKU make volume tiers: from 1 at 9.00, from 10 at 7.50, from 50 at 6.00.
   - **% on the catalog price** — enter the **Percent**: `-15` is 15% off, `10` is a 10% markup.
4. Set a **Priority** — higher wins when several lists apply at the same step.
5. Assign it: add **Contacts**, **Companies** (every contact at the company gets the list) and **Contact tags** (comma-separated; any contact carrying one of them gets the list).
6. Leave **Active** ticked and click **Save**.

The list's row shows its prices, who it is assigned to, its priority and whether it is active. Deleting a list leaves orders already priced from it as they are.

<!-- SCREENSHOT: inventory/price-list-form.png — The Price list panel for a fixed-price list named Wholesale: three rows for one SKU at From qty 1, 10 and 50, one company and the tag "trade" assigned, Priority 10 -->

### Where you see which price applied

- **The New order form**: when you leave a SKU box, the line says the price and its source — for example *7.50 each — volume tier (Wholesale). Leave the price blank to use it.*
- **The order**: under each line's price, *catalog price*, *price list*, *volume tier* or *price list %*.
- **A deal's Products card**: a blank **Price (auto)** is filled with the price the deal's contact would be quoted.

## Tax

Tax on orders typed in the app, created by agents, or made from deals and estimates follows **Inventory → Setup → Inventory Settings → Tax**. Orders from a connected store keep the store's tax.

### Turn on automatic tax

1. In **Inventory Settings → Tax**, set **Tax** to **From your tax rates, by where the order ships**. The other choice, **Typed on each order**, uses the **Tax** figure entered on the order.
2. Optionally tick **Prices already include tax** (tax is taken out of the price, and the total does not grow) and **Tax shipping too, where the matching rate is marked as applying to shipping**.
3. Click **Save settings**.

Until **Tax** is set to use your rates, the **Tax rates** tab says the rates are not applied yet.

### Add a tax rate

1. On **Price lists & tax**, open the **Tax rates** tab and click **New tax rate**.
2. Enter a **Name** (`HST Ontario`) and the **Rate %**. For a combined tax printed as its parts, add **Parts** (for example GST 5% + PST 7%); the rate becomes their sum.
3. Enter the **Country** (two letters, such as `CA`) and, optionally, a **Region** (such as `ON`). Blank region covers the whole country.
4. Optionally enter a **Tax code** — the rate then applies only to products carrying the same **Tax code** on their **Details**.
5. Tick **Shipping is taxed at this rate too** where it applies.
6. Tick **The default — used when no other rate matches the destination** on one rate. Making a rate the default clears it from any other.
7. Click **Save**.

A rate with no country that is not the default never applies; its row says *nowhere — set a country or make it the default*.

<!-- SCREENSHOT: inventory/tax-rates.png — The Tax rates tab with three rates: a country-and-region rate with parts listed under its name, a country-wide rate, and a default rate reading "anywhere no other rate covers" -->

### How a rate is matched

For each taxable line, among the **Active** rates:

1. A rate for the order's country **and** region.
2. Else a rate for the country with no region.
3. Else the default rate — for a destination no other rate names, and for an order with no shipping address.

A rate with a **Tax code** counts only for products carrying that code, and wins over an equally specific rate without one. A product with **Taxable** off pays no tax. Shipping is taxed when **Tax shipping too** is on and the rate matched for the destination is marked for shipping. An order-level discount is spread over the lines before tax, so tax is charged on what the customer pays.

The destination is the order's shipping address. Orders created on the **New order** form, from a deal or an estimate, or by an agent carry no shipping address today, so they take the default rate — set one.

### When no rate matches

The order is left untaxed and says so in an amber notice: *No tax rate covers … so the order is untaxed. Add a rate for it, or a default rate, on Price lists & tax.* Add the rate, then **Dismiss** the notice. The order's **Tax** row reads *(from your tax rates)* when rates were used, and *— included in prices* when prices include tax.

## Inventory reports

**Inventory → Orders → Inventory reports** (`/inventory/reports`). Four reports, each opening with one sentence that answers its question, over one table. **CSV** downloads the table (every report but **Turnover**). Figures come from the ledger and the orders; revenue stays in each order's own currency and is never converted.

| Report | The question | Controls | Columns |
|---|---|---|---|
| **Sales & margin** | What sold, and what it earned after cost of goods | A date range (the last 30 days by default) and **Every channel** or one channel | **Units**, **Shipped**, **Returned**, **Orders**, **Revenue**, **Cost of goods**, **Margin**, **On hand**, **Sell-through** |
| **Not moving** | Stock that has not sold in a while, and the cash it holds | **No sale in 30 / 60 / 90 / 180 days** or **in a year** | **On hand**, **Value at cost**, **Last sold** |
| **ABC** | Which items matter most | — | **Class**, **On hand**, **Value at cost** |
| **Turnover** | How many times stock turns, and how long today's shelf lasts | A date range | **Cost of goods sold**, **Stock value, start → now**, **Days on hand** |

- **Sales & margin** counts every order placed in the range except cancelled and draft ones. **Margin** shows only where a product sold in the inventory currency; it turns amber under 15%. **Sell-through** is units sold ÷ (units sold + on hand).
- **Not moving** counts a sale or a use in a build as movement; *never* means the product has never sold.
- **ABC** ranks products by a year's consumption value (units used × unit cost): the items making the first 80% are **A**, the next 15% **B**, the rest — and anything that never sold — **C**. The same classes drive cycle counts — see [Stock counts](/help/inventory/products-and-stock#stock-counts).
- **Turnover** is cost of goods sold ÷ the average of the opening and closing stock value. The opening value is today's value less what moved since the period began, so it is an estimate where stock arrived without a cost.

Margins, values and turnover all depend on costed stock — see [Costing](/help/inventory/products-and-stock#costing-average-or-fifo).

<!-- SCREENSHOT: inventory/reports-sales.png — Inventory reports on Sales & margin for the last 30 days: the one-sentence summary, the table with one margin in amber, and the CSV button -->

## Troubleshooting

- **A customer gets the catalog price despite a list.** The list is inactive, is in another currency than the order, or does not name that SKU (a fixed-price list). A list assigned to the contact directly also beats one assigned to their company or tag, whatever the priorities.
- **A volume tier did not apply.** Tiers compare each line's own quantity with **From qty**; two lines of five do not reach a tier at ten.
- **An order is untaxed.** **Tax** is still *Typed on each order*, the product's **Taxable** is off, or no rate matches and there is no default.
- **Margin shows —.** The product sold in another currency than the inventory currency, or its stock has no cost yet.

## Next steps

- [Sales and Purchase Orders](/help/inventory/orders)
- [Products, Stock and the Reorder Plan](/help/inventory/products-and-stock)
- [AI Assistance and Agent Tools](/help/inventory/ai-assistance)
