# Quotes

Quotes live under **Sales → Quotes**. Unlike the old storefront-only quote requests, you can write one yourself: press **New quote**.

## The quotes list

25 quotes per page, with search, a **Status** filter, an **Origin** filter, and sortable **#**, **Status**, **Total**, **Created** and **Valid until** columns.

| Column | Description |
| --- | --- |
| # | The quote number, or **Draft** when it has none yet |
| Customer | Contact name over the email address |
| Status | Status badge |
| Origin | **Written by you** or **Storefront request** |
| Total | Quoted total |
| Created | When the quote was created |
| Valid until | The date the offer expires |

Open a quote by clicking the row, the underlined number, or the eye icon. Select rows with the checkboxes for the bulk **Cancel** and **Delete drafts** actions; both ask for confirmation.

### Quote statuses

| Status | Meaning |
| --- | --- |
| Draft | You are still writing it. No number, nothing sent. |
| Requested | A storefront request that has not been priced and sent yet |
| Sent | The customer has it and can accept or decline |
| Accepted | The customer accepted (terminal) |
| Signed | An accepted quote that carries a drawn signature — the same state as Accepted, labelled differently |
| Declined | The customer declined |
| Expired | The valid-until date passed |
| Cancelled | You cancelled it (terminal) |

Only **Draft** and **Requested** quotes can be edited. Everything else is frozen and shows a banner explaining why; to change a sent quote, press **Duplicate** and edit the copy.

## Writing a quote

### Customer

Pick a **Contact** to fill in the email and name, or type an **Email** and **Name** directly for a one-off. Once a contact is selected, the **Billing address** and **Work address** selects list that contact's addresses; the work address is what a site visit or delivery uses.

### Details

- **Document type** picks which number series and prefix the quote will use. Leave it on **Default** unless you keep separate series.
- **Valid until** is the expiry date. Leave it empty and sending fills it in from **Sales settings → Quotes → Default validity (days)**.
- **Introduction** is the text printed above the lines. **Sales settings → Quotes → Default introduction** pre-fills it.
- **Internal note** is never shown to the customer.

### Lines

Each line has a **Line** title, an optional **Description** printed underneath, a **Kind** (Product, Labour, Material, Other), a **Unit**, a **Qty** that accepts up to 3 decimals with a dot or a comma (`64,5` m²), a **Unit price** in major units (`45.00` or `45,00`), and a **Tax class**. The line total appears on the right.

Typing at least two characters in **Line** suggests entries in two groups: **From your library** (lines you used before) and **From the catalog** (your products, by name). Picking a catalog product fills in the title, the product's unit, its price and its VAT class; when the product has no price or VAT class of its own, the unit price is cleared and the tax class falls back to the default. On a quote the line also stays linked to that product, so converting the quote to an order sells that product. You can still type any line by hand.

Use **Add line** to add one and the trash icon to remove one. While the quote is still editable, the totals block underneath shows a live preview of the subtotal, a row per VAT rate, and the total, recalculated as you type. Once the quote is sent, this block shows the exact figures stored at that moment — the ones the customer was actually quoted — not a recomputation.

### Scope

**Scope** items are grouped bullet points printed under the lines — typically an *Included* and an *Excluded* group. Press **Add group** to start a group, **Add item** to add a line to it. Item text autocompletes from your scope library.

### Photos

Up to 8 photos from the media library are printed on the quote. Press **Add photos**, pick them, and press **Use selected**.

## Sending a quote

**Send** asks for confirmation and spells out the consequence: the quote gets its number, the prices are locked in, and the customer receives the PDF with an accept link. If the email cannot be sent the quote stays where it was — but the number it was given is not reused. Number series never have gaps and never reuse a number.

What the customer sees depends on **Sales settings → Quotes → Acceptance**:

- **One click** — an Accept and a Decline button.
- **Drawn signature** — a signature pad they draw in. Accepting produces a second PDF with the signature printed on it, and the quote shows **Signed** with the date.

**Resend email** sends the same PDF and link again without changing anything.

## After acceptance

An accepted quote follows **Sales settings → Quotes → When a quote is accepted**: a draft invoice, or an order if you run the Webshop module. You can also press **Create invoice** or **Create order** on the quote itself. Converting a second time to the same target is refused.

An order made from a quote keeps the quoted prices, even if the product's price changed since, and keeps decimal quantities as they are (64.5 m² stays 64.5 m²). Stock is reserved for each line linked to a catalog product, including the components of a made-to-measure configuration. Only a real stock shortfall refuses the conversion. A line that cannot take stock for another reason (the product was drafted or deleted, or its way of selling was switched off) is still converted, without stock, and the order's timeline shows "Stock not reserved for {name} ({code})". See [Orders → Timeline](/docs/selling/orders#timeline).

**Open PDF** and **Open signed PDF** open the stored document. **Cancel quote** is available while the quote is Draft, Requested or Sent; **Delete** only exists while the quote is a draft.
