---
title: Add an enquiry
order: 2
updated: 2026-07-12
---

# Add an enquiry

The *Add Enquiry* screen captures a new customer request — who asked, when, how they reached you, and exactly what they want with quantities, prices, discounts, and tax. The same form is used for every enquiry regardless of the channel it arrived on, and everything you enter here becomes the starting point for the quotation you later send. This page walks through every field, the pricing helpers built into each product row, and what happens the moment you save.

## Before you start

- The **customer** must already exist in your records. If they don't, you can add one without leaving the form (see [Add a customer or product on the fly](#add-a-customer-or-product-on-the-fly)). See [Customers](/docs/records/customers).
- The **contact person** you'll attribute the enquiry to must exist under that customer. See [Customer contacts](/docs/records/customer-contacts).
- The **products** the customer is asking for should exist as a *Product Category* (product head) and *Product Code*. See [Product codes](/docs/records/product-codes).
- You need the *Add enquiry* permission. Without it the server refuses the save with a "You don't have permission to add an enquiry" message even if the form lets you fill it in.

## Open the Add Enquiry form

1. Open *Sales* / the *Enquiry Bank* area from the sidebar.
2. Choose *Add Enquiry*. The page heading reads *Add Enquiry*.

The form has two parts: a **header** (who, when, how) at the top, followed by one or more **product rows**. A new form always opens with today's date pre-filled and one empty product row ready to fill.

## Fill in the header

The header is two rows of fields plus a live running total on the right.

### Customer Name

Pick the customer this enquiry belongs to. Type to filter the list; results load as you type. This field is **required**.

The small pencil icon next to the label opens the *Customers* data-entry screen in a pop-up so you can add a new customer without losing the form — see [Add a customer or product on the fly](#add-a-customer-or-product-on-the-fly).

Changing the customer **clears the contact person** you had chosen, because a contact person belongs to exactly one customer.

### Contact Person Name

Pick the person at that customer who raised the enquiry. The list only shows contact persons that belong to the customer you selected above, so choose the customer first. This field is **required**.

### Date of Enquiry

The date the customer's request came in. It **defaults to today**. Click the field to type a date or use the calendar picker (with a year jump in the header). Required. The date is stored at midday so it never drifts to the previous or next day across time zones. Dates display in `dd/mm/yy` form across the app.

### Enquiry Number

An **optional** free-text reference — the customer's own RFQ/enquiry number, if they gave you one. Leave it blank if there isn't one; it is not the quotation number (that is generated automatically when you send a quotation). There is no format requirement.

### Mode of Enquiry

How the request reached you. **Required.** Pick one of `Mail`, `Whatsapp`, `Verbal`, `Portal`, or `Other`. The server only accepts one of these five exact values, so this is not a free-text field.

### Folder

Only appears **if your firm has at least one enquiry folder set up**. When shown, it lets you file the enquiry into a folder for grouping/filtering later. Optional — leave it on *No Folder* to keep the enquiry unfiled. If your firm has no folders, the field is hidden entirely. See [Enquiry folders](/docs/enquiry-bank/folders).

### Total (live, not saved)

On the right of the second row sits a running *Total* that adds up every product row. It is a **display-only** figure — it is calculated in the browser and is never stored on the enquiry.

- **Click the label or the amount** to toggle between *Total (excl. Tax)* and *Total (incl. Tax)*.
- **Hover the info icon** for an *Amount Breakdown*: gross (before discount), discount amount and effective discount %, total excluding tax, tax (GST), and total including tax.

## Add products

Below the header is the product table. Each row is one line item the customer wants. The column labels read *Product Category*, *Product Code*, *Product Quantity*, *Unit*, *Unit Price*, *Discount (%)*, and *Tax*.

Click *Add Product* to append another row. Use the row's controls to reorder (move up / move down) or *Remove* it. A confirmation modal (*Confirm Removal*) protects against accidental deletes.

### Product Category

The product head — the family the item belongs to. **Required.** Type to search. The pencil icon on the column label opens the *Products* data-entry screen in a pop-up so you can add a category/code without leaving the form.

Changing the category **clears that row's Product Code and Unit** (and the notes preview), because codes and units belong to a specific category.

### Product Code

The specific catalogue code within the chosen category. **Required.** This field stays **locked until you pick a category**, then it lists only the codes under that category.

Selecting a code pulls in that code's saved defaults automatically:

- **HSN code** — filled from the code and shown (read-only) inside the *Make* pop-up.
- **Tax** — set to the code's default GST rate.
- **Unit** — if the code allows exactly one unit, that unit is auto-picked and locked.
- **Notes preview** — the code's standard description appears in the read-only panel on the left of the expanded row.

These defaults only overwrite the row when *you* change the code — they won't clobber values you've already typed on an existing row.

### Product Quantity

How many the customer wants, in the chosen unit. The stepper won't go below `0`. To save, the quantity must be **greater than `0`** — the form blocks a save and lists the offending row otherwise. (The server stores whatever number it receives, so the "must be > 0" rule is enforced by the form, not re-checked as a range on the backend — but the field is always a number.)

### Unit

The unit of measure for the quantity (e.g. pieces, metres, kg). **Required.** It stays **locked until a Product Code is chosen**. If the chosen code permits only one unit, that unit is auto-selected and the field is locked to it; if the code permits several, you pick from that allowed set; if the code restricts nothing, you can search all units. See [Products](/docs/records/products) for how a code's allowed units are configured.

### Unit Price

The per-unit selling price you intend to quote, in `₹` (two decimals, stepped by `0.01`, minimum `0`).

When you pick a code and the price is still `0`, the app **auto-suggests a likely selling rate** based on your firm's own history for that product (and, where known, this customer, contact person, make, and quantity). It only fills in when the field is still empty, and it **never overwrites a price you typed**. If nothing confident can be suggested, the field simply stays `0` for you to enter manually.

If the suggestion detects a standing **rate contract** with this customer for the product, a toast offers to *Attach PO* — one click writes a "Your ref PO … dated … attached" line into the row's description and attaches the customer's previous PO documents to this enquiry.

### Discount (%)

A per-line discount percentage. Range `0`–`100`, default `0`. It reduces that line's amount before tax.

### Tax

The GST slab for the line, chosen from `0%`, `5%`, `12%`, `18%`, or `28%`. It is pre-filled from the code's default rate. If the product code is marked as *always the same tax rate*, this field is **locked** to that default and can't be changed on the row.

### Per-line total (info tooltip)

The info icon at the end of the row shows that line's maths: total amount, the discount amount for the shown discount %, the amount after discount, and the amount with tax for the shown GST %.

## The expanded row: notes, make, and analytics

Click the chevron on a row (or it opens as you work) to reveal the lower half of the row.

### Product notes (read-only preview)

The left panel shows the **product code's standard description/spec** as saved in your records — a reference of what the code already covers. It is read-only here; edit it under [Product codes](/docs/records/product-codes) if it's wrong. If the code has no saved notes it reads "No product notes available".

### Description (rich text)

The right panel is a rich-text editor for this line's **custom description** — anything the customer asked for beyond the code's standard spec (special finish, tolerance, a "your ref PO …" note, etc.). It is **optional**; a line whose code already says everything can be left blank. The analytics helpers and the rate-contract toast write into this editor. On save, the description is HTML-sanitised on the server — any injected scripts are stripped and logged as a security event.

### Make (manufacturer) and HSN

The factory icon opens a small pop-up with two things:

- *HSN Code* — read-only, filled from the product code.
- *Make selector* — search and add one or more manufacturers the customer specified. It is **multi-select** (added makes show in a small table with a remove button), and the list is **restricted to the makes allowed for the chosen category**. It stays disabled with a *"Choose a category first"* hint until a category is set; changing the category prunes any makes that the new category doesn't allow.

Make is **optional** — the factory icon turns red as a reminder when a row has no make chosen, but you can still save without one.

### Pricing analytics

The chart icon opens the *Product Pricing Analytics* modal — a per-line pricing-intelligence dashboard drawn from your firm's own history for this product. It needs the **customer, category, and code** set on the row first; otherwise it shows a "set the customer and product code first" prompt.

Tabs include *Cost*, *Rel Cost* (related codes), *Assm Cost* (only when the code has an assembly cost), *Price Rec* (prices received), *Rel Enq* (related enquiries), *Won (This)* / *Won (Others)*, *Lost (This)* / *Lost (Others)*, and *Trends*. From these tabs you can push a value straight back into the row without retyping:

The *Won* and *Lost* tabs each carry a **product-code selector** at the top. It starts on the code you opened the modal for, so you see that code's own win/loss history first. Clear it (the **✕**) to widen the tables to **every code in this category (product head)** — useful when you want the whole category's pricing picture rather than one code. In this widened view each table shows **one representative row per code** (with a **Code** column so you can tell them apart) rather than a long list that a single busy code could fill. Switching to another tab and back resets the selector to the opened code.


- **Apply a rate** to *Unit Price*.
- **Apply a rate and description** (from a past quote) — fills the price and replaces the description.
- **Apply purchase + markup** — fills the price at the purchase cost plus your firm's markup.
- **Apply an order reference** — fills the price and appends a "Your ref PO … attached" line to the description.
- **Attach a past order's PO files** to this enquiry's attachments.
- **Open the source enquiry or order** for context (enquiries open in a stacked pop-up; orders open in a new tab).

## Attachments on a new enquiry

The Add form has no separate file-upload box. Files only get attached here **by reference** — when you use the analytics *Attach PO files* action or accept the rate-contract toast, the referenced PO documents are staged onto the enquiry and saved with it. After the enquiry exists you can manage files freely from the enquiry itself — see [Attachments and notes](/docs/enquiry-bank/attachments-and-notes).

## Save

Click *Save Enquiry* at the bottom.

If anything required is missing, a *Please fix the following* modal lists every issue before anything is sent — for example a missing customer, contact person, date, or mode, or a product row missing its category, code, or unit, or with a quantity that isn't greater than `0`.

When the form is valid it posts to the server, which independently re-checks everything (assume-nothing policy): it confirms your *Add enquiry* permission, validates the shape and that every customer / contact person / code / unit / make / folder id is a real ObjectId, sanitises each description against XSS, and verifies every attachment id resolves to a *ready* file in your firm. It also **forces the new enquiry's status to `pending`** regardless of what the browser sent. On success you get an *Enquiry saved successfully* toast and land back in the *Enquiry Bank*, where the new enquiry appears immediately. There is **no draft button** on this form.

## Add a customer or product on the fly

Two pencil icons let you create missing records without abandoning the form:

- The pencil next to *Customer Name* opens the *Customers* screen in a pop-up.
- The pencil next to the *Product Category* column label opens the *Products* screen in a pop-up.

Add the record there, close the pop-up, and pick your new entry in the form.

## Common questions

### What if the product the customer wants is not in my list?

Add the product head and code first — use the pencil next to *Product Category* to open the *Products* screen in a pop-up, or go to your records area. Then come back and pick it. See [Product codes](/docs/records/product-codes).

### Why is the Product Code (or Unit) field greyed out?

*Product Code* is locked until you choose a *Product Category*. *Unit* is locked until you choose a *Product Code*, and stays locked when the code allows only a single unit (it's auto-picked for you).

### Why did a price appear on its own?

When you pick a code and the price is still `0`, the app suggests a likely selling rate from your firm's history. It only fills an empty price and never overwrites what you typed — clear it or type over it if you disagree.

### Why is the Tax dropdown locked?

The product code is set to *always use the same tax rate*, so the line is locked to that rate. Change the code's tax setting under [Product codes](/docs/records/product-codes) if it needs to differ.

### Do I have to pick a make?

No. Make is optional. The factory icon just turns red as a reminder when a row has none; you can still save.

### Can I save a draft and come back later?

There is no draft button on this form. Save the enquiry with whatever you have, then edit it later from the *Enquiry Bank*. See [Edit or copy an enquiry](/docs/enquiry-bank/edit-copy-enquiry).

### The Folder field is missing — why?

The *Folder* field only appears if your firm has at least one enquiry folder configured. Set folders up first — see [Enquiry folders](/docs/enquiry-bank/folders).

### Is the running Total saved on the enquiry?

No. The header *Total* is a live, browser-side figure to help you sanity-check the numbers. Only the per-line quantities, prices, discounts, and tax rates are stored; the totals are recomputed wherever they're shown.

### What happens after I save?

The enquiry shows up immediately in the *Enquiry Bank* with a `pending` status. From there you can open it to [generate a quotation](/docs/enquiry-bank/generate-quotation), [edit or copy](/docs/enquiry-bank/edit-copy-enquiry) it, mark it lost, or delete it. See [The enquiry bank list](/docs/enquiry-bank/enquiry-bank-list) and [View an enquiry](/docs/enquiry-bank/view-enquiry).
