Sale order templates solve the problem of sales reps building the same quotation structure from scratch every time. A template defines the default lines, optional product sections, validity period, and payment terms. Applying it to a new quotation populates all of those fields instantly.
Enabling the Feature#
Sales → Configuration → Settings → Quotations & Orders → Quotation Templates
Toggle on. This adds a Quotation Template field to the sale order form and a new menu at Sales → Configuration → Quotation Templates.
Creating a Template#
Sales → Configuration → Quotation Templates → New
| Field | Purpose |
|---|---|
| Template Name | Internal label (e.g., "Standard Software Project") |
| Quotation expires after | Days before the customer link expires |
| Confirmation Mail | Email template sent when customer confirms online |
| Payment Terms | Overrides the partner's default payment terms |
Template Lines#
Add products in the Lines tab. Each line can be a regular product line or a note/section header. Sections let you organise the quote visually and appear in the PDF as section headers.
Optional Products#
The Optional Products tab lists products the customer can add from the portal with an Add to Order button. These do not become confirmed order lines until the customer clicks "Add" and confirms the quote.
Applying a Template to a Quotation#
Select the template in the Quotation Template field on a new sale order. Odoo populates all template lines, optional products, payment terms, and expiry date. Existing lines are replaced unless you confirm the "Keep existing lines?" dialog.
Automating Template Use by Sales Team#
Assign a default template to a sales team: Sales → Configuration → Sales Teams → [Team] → Quotation Template. All new quotations created by users in that team default to the team's template.
Template and Pricelist Interaction#
Template line prices update from the product form when the template is resaved - they are not snapshots. If the product's price changes, the next quote using the template picks up the new price. Use pricelists for controlled pricing rather than hardcoding prices on template lines.
Common Mistakes#
- Hardcoding prices in templates - prices update from the product form; use pricelists for price control
- Forgetting confirmation mail - set the Confirmation Mail field to "Sale Order Confirmation" if customers should receive an automatic email on acceptance
- Optional products not showing on portal - verify the portal sharing link is active and the customer's email is on the partner record
- Template lines overwriting customisation - when changing the template on an order that already has customised lines, Odoo prompts for confirmation; warn sales reps

