---
title: Generate a quotation
order: 5
updated: 2026-07-21
---

# Generate a quotation

A quotation is the priced techno-commercial document you email to a customer against an enquiry. The whole flow lives in one modal: you compose the PDF (subject, terms, and which price columns show), preview it, then choose recipients and send it as an email. Everything you type is re-checked and re-resolved on the server, so the PDF that actually ships always matches what you previewed — not whatever a forged request might ask for.

The modal has **two stages**. Stage one is headed *Generate Quotation* (compose + preview). Once you preview the PDF it advances to stage two, headed *Send Quotation* (recipients + send). A back-and-forth summary of the quotation *number* and the firm-wide wording lives in [Document templates](/docs/settings/document-templates) — this page covers the send flow itself.

## Before you start

- The enquiry must already exist with at least one product — the price columns and the auto-subject are built from those products. See [Add an enquiry](/docs/enquiry-bank/add-enquiry).
- The contact person you want to email should have a valid email address on their profile. Customers themselves carry no email; their contact persons do.
- At least one **valid** outgoing email account must be reachable for the *Quotation Send* use-case — a firm account or your own personal account, depending on the firm's sending policy. See [Email accounts and sending policy](/docs/settings/document-templates#email-accounts-and-sending-policy).

## Open the quotation flow

There are three ways in; all open the same modal.

1. **From the enquiry.** Open the enquiry from the *Enquiry Bank*, open the options menu (top right), and choose *Send Quotation*. On an enquiry that is already **queued** the same entry instead reads *Approve & Send* ("Review queued & dispatch").
2. **From a queued row in the list.** With the *Show queued only* filter active, a queued row shows a *Send Mail* action in its *Actions* column. This shortcut only appears when the queued filter is on, the row is queued, **and** you hold the *Send Offer* permission.
3. **From the stacked enquiry preview.** The pop-out enquiry view (opened via a quotation-number search or a linked reference) exposes the same *Send Quotation* action.

Who sees the *Send Quotation* menu entry:

- On a **non-queued** enquiry it appears if you can either send (*Send Offer*) or queue (*Queue Offer*).
- On a **queued** enquiry it appears only if you can send (*Send Offer*) — it becomes the *Approve & Send* action.

If you only hold *Queue Offer* (not *Send Offer*), you can compose and queue a quotation for a senior to approve, but the *Send Immediately* button is replaced by *Queue for Approval*.

## Stage one — compose the quotation

The heading reads *Generate Quotation*. This stage has a subject field, a terms editor, and a columns menu.

### PDF subject

*PDF Subject* is the line printed near the top of the quotation PDF (after the customer block). Its starting value is chosen in this order:

- a **saved draft subject** if you saved one earlier on this enquiry — the field shows a small `(using saved draft)` hint; otherwise
- an **auto-generated** subject `Proposal for supply of …` followed by the enquiry's product-head names joined in plain-English "Oxford" style (e.g. `A, B and C`) — shown with an `(auto-generated)` hint.

Edit it freely. The placeholder is `Proposal for supply of …`. On save/send the server trims it and caps it at `500` characters. If you clear it, the PDF falls back to the firm's default PDF subject template from [Quotation Personalisation](/docs/settings/document-templates#quotation-personalisation).

The subject box is **read-only while the enquiry is queued** (see [Queued enquiries and locking](#queued-enquiries-and-locking)).

### Terms & Conditions

A rich-text editor (bold, lists, etc.) for the terms printed under the price table. Its starting value is, in order:

- a **saved draft** of terms for this enquiry; else
- the **customer's saved default terms** (`Terms` on the customer record, itself seeded from the firm default); else
- empty.

Legacy plain-text terms (one rule per line) are shown correctly — each line becomes its own paragraph. On save/send the HTML is sanitised server-side and capped at `20000` characters. The editor is **read-only while the enquiry is queued**.

### Choose the PDF columns

The slider icon at the top-right of stage one opens a multi-select menu that toggles which columns appear in the quotation's price table. Tick or untick each; the choice rides along with this send and is stored in the draft.

The price table prints its columns left to right in a fixed order — `Sr`, `Product`, `Qty`, `Unit Price`, `Disc %`, `Discounted Price`, `Amount`, `Tax %`, `Tax Amount`, `Total` — and each toggle simply decides whether its column appears.

| Column | What it shows | Default |
|---|---|---|
| *Sr No.* | Row number (`Sr`) | On |
| *Quantity* | Quantity and unit (`Qty`) | On |
| *Unit Price* | The base price entered on the line, before any discount | On |
| *Discount* | The discount percentage (`Disc %`) | On |
| *Discounted Price* | The unit price *after* the discount is applied | On |
| *Amount* | Quantity × discounted price — the line value **before** tax | On |
| *Tax* | The line's GST rate (`Tax %`) **and** the tax money on the line (`Tax Amount` = Amount × Tax %) | Off |
| *Total* | `Amount` + `Tax Amount` when the tax columns are on; the same figure as `Amount` when they are off | On |
| *Grand Total Row* | A summed total row at the bottom of the table | Off |

The `Product` column always prints and has no toggle.

- **The *Tax* column is special.** Turning it on adds two columns: `Tax %` (each line's GST rate) and `Tax Amount` (the tax money on that line). With *Tax* on, both the per-line `Total` and the *Grand Total* row are rendered **inclusive of tax**, and the grand-total label reads `Grand Total (incl. tax)`.
- **The *Grand Total Row* has a dependency.** It can only be enabled when *Total* is on, **or** *Amount* is on, **or** *Discount* is off. If none of those hold, *Grand Total Row* is force-disabled (the menu greys it out). The stored per-enquiry columns are re-validated to booleans on the server, so an invalid combination can't be forced through.
- **Charges suppress the grand-total row.** If the enquiry carries additional charges, the PDF prints its own charge-inclusive totals strip instead of the plain *Grand Total Row*.

#### Columns that switch themselves off

When the menu builds the **starting** tick state for a quotation, it drops columns that would print nothing useful on *this* document:

- **No discounts anywhere → no discount columns.** If every line on the quotation has a discount of `0`, *Discount* and *Discounted Price* start unticked — even if your saved defaults have them on. Otherwise every `Disc %` cell would just read `—` and `Discounted Price` would repeat `Unit Price` verbatim.
- **Tax off → *Amount* off.** With the tax columns hidden, `Total` already shows exactly the same figure as `Amount`, so *Amount* starts unticked. Tick *Tax* back on and *Amount* comes back on its own.

Both rules only affect the **default** ticks. Tick any of those columns back on yourself in the menu and your choice stands — it is saved with the quotation and is what the PDF prints.

**Per-user defaults.** Unless this enquiry already has a saved column layout, the menu seeds from *your* personal column defaults (set under *Settings → Personalisation → Quotation Columns*), then applies the two rules above. Those defaults are per-user, not firm-wide, and only pre-tick the menu — you can still override them for any single quotation here. See [Personalisation](/docs/settings/personalisation).

### Save Draft

The *Save Draft* button appears only when there are unsaved changes, the enquiry is not queued, and you hold the *Edit* permission. It persists the current subject, terms, and column layout to the enquiry's quotation draft so the next person (or your next visit) starts from the same place. Saving a draft does **not** send anything and does **not** consume a quotation number.

Server-side, saving a draft requires the *Edit* permission and is refused if the enquiry is already order-arrived (unless you have the "edit already-arrived order" permission) or is queued (unless you can queue/unqueue).

### View Quotation PDF

*View Quotation PDF* renders a live preview and opens it in the file viewer. The preview:

- resolves the quotation number by **peeking** — it shows the number the *next* send would use but never increments the firm counter or writes anything to the enquiry;
- applies the same logo layout, opening/closing text, and column rules the real send will use;
- reads back the resolved email subject so stage two starts pre-filled.

Once the preview is generated the modal advances to stage two (*Send Quotation*). Generating a preview needs only the *View* permission.

## Stage two — send to the customer

The heading switches to *Send Quotation*. What you see here depends on your permissions.

### Email subject

*Email Subject* is the subject line of the email that carries the PDF (distinct from the PDF's own subject line). It is pre-filled from the firm's email-subject template with the enquiry's details substituted, or from the value read back off the preview. Edit it per send if you like; it is trimmed and capped at `500` characters server-side and re-resolved against the enquiry's tokens before dispatch.

### Send to (hybrid recipient choice)

This picker appears **only** when the firm's quotation recipient mode is *Hybrid* and you can send. It lets you choose, for this one email, between:

- *Contact person* — the enquiry's contact-person email; and
- *Fixed mailbox* — the firm's configured fixed address.

In the firm's other recipient modes there is no picker: *Contact person* mode always addresses the contact person (you can still adjust CC/BCC), and *Fixed mailbox* mode always routes to the fixed address and ignores any client-supplied "To" override. The recipient mode itself is set in [Quotation Personalisation](/docs/settings/document-templates#quotation-personalisation).

### Send from

*Send from* picks the outgoing email account for this send. The list is resolved server-side for the *Quotation Send* use-case and shows only **valid** accounts you are permitted to use, each prefixed `[Firm]` or `[Personal]`. If exactly one account qualifies it is auto-selected. If none qualify, the button is disabled and a hint asks you to add a firm or personal account.

The chosen account is **re-verified server-side** at send time — if it isn't in your allowed set for quotation sends, the send is rejected. Which accounts are allowed (fixed / firm-any / user-own / hybrid) is governed by the firm's sending policy — see [Email accounts and sending policy](/docs/settings/document-templates#email-accounts-and-sending-policy).

### Recipients (CC & BCC)

The *Recipients* button at the top-left of stage two (visible only when you can send) opens the *Manage Recipients* modal. Use it to add extra CC and BCC addresses for this one send:

- **Contact-person list.** If you hold the contact-person view permission and the enquiry is linked to a customer, the modal lists that customer's contact persons with per-row *CC* and *BCC* toggles. Rows whose contact person has no valid email are disabled. Without that permission, the list is hidden and you use the custom-email field instead.
- **Custom email.** Add any address not on record (a partner, a one-off colleague). It is validated for a basic email shape before it's accepted.
- **Per-list cap.** You can add up to `30` custom addresses to CC and `30` to BCC in the modal. The server independently accepts at most `50` override addresses per list and re-validates every one.
- **Firm defaults are read-only here.** Addresses in the firm's default CC/BCC lists are shown as greyed chips labelled "Always included (firm defaults)" — they are always sent automatically and can't be removed from this screen; trying to re-add one is blocked with a hint. Edit those under firm settings.

On send, the server **merges** firm defaults with your per-send additions, dedupes case-insensitively, and drops any address already on the To line (so the primary recipient is never CC'd back to themselves). CC is visible to recipients; BCC is hidden. A small "Going out to" summary chip shows the resulting CC/BCC counts (split into firm-default vs. this-send) before you send.

### Send Immediately

Visible when you hold *Send Offer*. It is disabled until an email account is selected. On click the quotation is **queued for delivery** (a background worker sends the actual email), and you get a *Quotation queued for delivery* toast.

Before queuing, if you changed anything in stage one, the modal silently saves the draft first — because the shipped PDF's column layout is read from the saved draft, not from the send request, so this keeps the sent PDF identical to your preview.

The server enforces, in order:

- you hold *Send Offer* (else `403`);
- the enquiry exists and its PO has **not** already arrived (else "Cannot send: PO already arrived");
- there is **no** dispatch already `QUEUED` or `PROCESSING` for this enquiry (else "A dispatch is already queued or in progress");
- the chosen account is permitted for quotation sends;
- the resolved recipient has a **valid** email — an enquiry whose contact person has no valid email, or a fixed mode with no valid fixed mailbox, is rejected with a clear message;
- the email subject is non-empty after token resolution.

Only then does it lock in the quotation number: a **fresh** enquiry atomically consumes the next firm counter value; a **re-send** of an already-numbered enquiry keeps the base number and bumps only the revision. The number, the recipients, the PDF, and a snapshot of the enquiry's ready attachments are recorded against the enquiry.

### Queue for Approval

Shown instead of *Send Immediately* when you can queue but not send (*Queue Offer* without *Send Offer*). It saves your draft (if changed) and marks the enquiry **queued**, so a senior user can later open it and *Approve & Send*. You get a *Quotation queued — a senior user can now approve and send* toast, and the enquiry's subject/terms lock until it is approved or unqueued. Queuing is refused if the enquiry is already queued or its PO has already arrived.

## Quotation number and personalisation

The quotation number itself — its date prefix, zero-padded counter, revision suffix, joiner, and the firm-wide counter reset — is built from a single firm-wide format, and it is only committed when a quotation is actually sent (previews just peek). To change how the number reads, or to reset the counter, see [Quotation number format](/docs/settings/document-templates#quotation-number-format).

The auto-subject, PDF opening/closing paragraphs, terms fallback, recipient mode, firm CC/BCC defaults, logo layout, and the email subject and body all come from the firm's [Quotation Personalisation](/docs/settings/document-templates#quotation-personalisation) template. Those settings are firm-wide, and any change applies only to sends made *after* you save it.

## After you send

The email is dispatched by a background worker, so it leaves a moment after you click. Open the enquiry's options menu → *Logs* → *Send History* to see every quotation and follow-up sent for that enquiry, each with a status:

- *Queued* — accepted, waiting for the worker.
- *Processing* — the worker is sending it now.
- *Sent* — delivered to the mail provider.
- *Failed* — the send failed; the row shows the error, and a user with *Send Offer* can retry it.

From *Send History* you can also re-download the exact PDF and attachments that were sent. Each new send is recorded, so an earlier quotation stays in the history for reference even after you send a revision.

## Queued enquiries and locking

Queuing an enquiry freezes its quotation so it can be reviewed before it goes out. While an enquiry is queued:

- its *PDF Subject* and *Terms & Conditions* fields are **locked** (read-only), with an amber "This enquiry is queued — subject and terms are locked" banner;
- the options-menu send entry reads *Approve & Send* instead of *Send Quotation*.

To edit again, choose *Unqueue* from the options menu (needs *Queue Offer*). Unqueue is blocked while a dispatch is actually in progress (`Queued`/`Processing`) — you must let that finish (or let it fail) first. A `Failed` or already-`Sent` job does not block unqueue.

## Find a quotation by number

To jump to an enquiry or order from a quotation number, open the *Enquiry Bank* options menu → *Search* → *Search Quotation Number*. The lookup is deliberately forgiving: it canonicalises both what you type and every stored number (lowercased, alphanumeric-only, leading zeros stripped), so `2026-10234-R01`, `10234r1`, `10234 r 01`, and `202610234R01` all resolve to the same record. A unique match jumps straight there; several plausible matches are listed with customer, enquiry number, and sent date so you can pick.

## Common questions

### Why did my preview number not "use up" a quotation number?

Previews only **peek** the next number — they never increment the firm counter or write to the enquiry. A number is committed only when you actually send. So you can preview as many times as you like.

### The PDF I sent looks different from my preview — why?

The sent PDF's column layout is read from the enquiry's saved draft, so the modal auto-saves your latest subject/terms/columns just before sending to keep them in sync. If you edited outside this flow, or a colleague changed the firm template after you previewed, re-open and preview again before sending.

### Can I send the same quotation to several people?

Yes. Use *Recipients* to add every CC and BCC before sending. Firm-default CC/BCC addresses are always included automatically on top of what you add.

### Why can't I edit the subject or terms?

The enquiry is queued, which locks those fields for review. Choose *Unqueue* (needs the queue permission) to edit again, then re-queue or send.

### I only see "Queue for Approval", not "Send Immediately".

You hold the *Queue Offer* permission but not *Send Offer*. Compose and queue the quotation; a senior user with send rights will *Approve & Send* it. If you believe you should be able to send, ask an administrator to grant *Send Offer*.

### "No email accounts available" — what now?

No **valid** account is reachable for the *Quotation Send* use-case under the firm's policy. Ask an admin to add and verify a firm account, or add a personal account in your profile, then re-open the send screen. See [Email accounts and sending policy](/docs/settings/document-templates#email-accounts-and-sending-policy).

### How do I change which price columns show every time?

Set your personal defaults under *Settings → Personalisation → Quotation Columns*. Those pre-tick the columns menu on every new quotation; you can still override per send. See [Personalisation](/docs/settings/personalisation).

### Why are *Discount* and *Discounted Price* unticked even though my defaults have them on?

Because no line on this quotation carries a discount. When every line's discount is `0`, both columns are left out of the starting set — a `Disc %` column of dashes and a `Discounted Price` that merely repeats `Unit Price` add nothing to the PDF. Tick them back on in the columns menu if you want them printed anyway; your choice is respected and saved with the quotation.

### Why did the *Amount* column disappear?

*Amount* starts unticked whenever the *Tax* columns are off, because `Total` then shows the identical figure. Turn *Tax* on and *Amount* returns automatically — or simply tick *Amount* yourself and it stays on.

### What if the customer asks for a revised quotation?

Generate a fresh quotation against the same enquiry. A re-send keeps the base number and bumps the revision suffix (e.g. `R01` → `R02`), and the previous send stays in *Send History*. After sending, you can keep chasing the customer with a [Customer follow-up](/docs/enquiry-bank/follow-up).
