Skip to main content
TechUltra Solutions Pvt. Ltd. — AI-Enabled ERP Transformation
Free Consultation
Menu

Odoo 20 · detailed guide

What's new in Odoo 20 Sales, CRM & POS

Faster quoting, fairer lead sharing and a smarter till.

62 new features
5 apps covered
48 screenshots

Odoo 20 brings many practical changes to the apps closest to your customers. Sales gets dashboards, smarter templates and new commission options. CRM makes it easier to manage several sales teams and share out leads fairly. Point of Sale adds multi-currency payments, service fees and helpful tools for busy restaurants, while Rental and Subscriptions become more tightly connected to everyday sales work.

If you run a sales team, manage a shop or restaurant, rent out equipment or sell recurring services, this release has something for you. Below we cover the features we think matter most, how they are used, and the other notable additions in each app.

Last updated 14 October 2026

26 new in Odoo 20

Sales

26 features
01
ImprovedEnterprise

Payment-based commissions

Sales > Commissions > Commission Plans > Achievements Rules

Commission plans can base achievements on money the customer has actually paid. An achievement rule of type 'Amount Paid in Full' adds invoice amounts to a salesperson's achievements only once the invoice is paid, and the achievement is dated on the payment reconciliation. Sales managers who reward salespeople on collected revenue set this type in the Achievements Rules of a commission plan.

Why it matters Lets companies pay commissions based on customer payments actually received.

How to use it

  1. Go to Sales > Commissions > Commission Plans.
  2. Open or create a plan and go to Achievements Rules.
  3. Set the rule Type to Amount Paid in Full.
Odoo 20 · Sales
Commission plan achievement type list with new Amount Paid in Full option
02
NewCommunity

Charge overages

Sales > Orders > [order] > Create Invoice

For a service invoiced on ordered quantities, the delivered quantity can end up above the quantity sold, for example extra support hours. In that case the Create Invoice wizard shows an 'Invoice Overages' option. When it is ticked, the extra quantity is billed together with the regular invoice of the order. Users invoicing service orders can charge the extra work without creating a separate order.

Why it matters Lets businesses bill customers for service quantities delivered beyond what was ordered.

How to use it

  1. Sell a service with invoicing policy Ordered quantities and confirm the order.
  2. Set a delivered quantity higher than the ordered quantity.
  3. Click Create Invoice and tick Invoice Overages.
Odoo 20 · Sales
Create Invoice wizard with new Invoice Overages option for over-delivered services
03
NewCommunity

Dashboard

Sales > Orders > Quotations (or Orders)

The quotations and orders lists open with a small dashboard at the top. It shows counters for orders to confirm, to deliver and to invoice; clicking a counter filters the list to those orders. It also shows the number of sales orders and the revenue for a selected period, compared with the period before. Salespeople and sales managers see their workload and recent results as soon as they open the list.

Why it matters Helps sales teams see what to confirm, deliver or invoice plus revenue trends.

How to use it

  1. Go to Sales > Orders > Quotations or Orders.
  2. Click a counter in the dashboard to filter the list.
Odoo 20 · Sales
Quotations dashboard counters and revenue
04
ImprovedCommunity

Description-only sales order lines

Sales > Orders > Quotations; Sales > Configuration > Settings

A sales order line can consist of a description and a price only, with no product selected. Users add a line, type the description and the price, and leave the product empty. Companies that need every line to be linked to a product can enable the 'Mandatory Product' option in the Sales settings, which requires a product on each line.

Why it matters Lets salespeople add priced lines without a product, or enforce products when needed.

How to use it

  1. Open a quotation and click Add Line.
  2. Type a description and a price without picking a product.
  3. Optionally enable Mandatory Product in Sales > Configuration > Settings.
Odoo 20 · Sales
Sales settings with new Mandatory Product option controlling product-less order lines
05
ImprovedCommunity

Editable product variant price

Sales > Products > Product Variants

The Sales Price of an individual product variant can be edited directly, for example in the Product Variants list. Each variant can therefore carry its own price set by hand, apart from the template price and attribute extra prices. Users managing product catalogues with variants can adjust one variant's price without changing the others. The changed price applies to that variant alone.

Why it matters Lets teams set each variant's price directly without affecting other variants.

How to use it

  1. Go to Sales > Products > Product Variants.
  2. Click the Sales Price of a variant.
  3. Type a new price and save.
Odoo 20 · Sales
Product Variants list with Sales Price editable inline per variant
06
ImprovedCommunity

Editable margins

Sales > Orders > Quotations > [show Margin column]

On a sales order line, the Margin value can be typed in by the user. Odoo then recalculates the unit price of the line so that it produces the entered margin. The Margin column is an optional column of the order lines and has to be shown first. Salespeople who price by target margin can set the margin and let Odoo work out the price.

Why it matters Lets salespeople enter a target margin and get the matching unit price.

How to use it

  1. Open a quotation.
  2. Show the Margin column from the optional columns toggle.
  3. Edit the Margin value of a line.
Odoo 20 · Sales
Order line optional columns: Margin, Tax Excl., Tax Incl.
07
ImprovedCommunity

Fixed prepayment amounts

Sales > Orders > Quotations > Other Info > Prepayment

The prepayment asked from a customer when confirming a quotation online can be set as a fixed amount on the quotation, in addition to the percentage option. The field is found in the Other Info tab under Prepayment. Salespeople can request a specific deposit amount for an order rather than a share of the total. The percentage option remains available beside it.

Why it matters Lets businesses request a fixed prepayment amount instead of only a percentage.

How to use it

  1. Go to Sales > Orders > Quotations and open a quotation.
  2. Open the Other Info tab.
  3. Set a fixed amount under Prepayment.
Odoo 20 · Sales
Quotation Other Info tab with prepayment as percentage and fixed amount
08
NewEnterprise

Lazada

Sales > Marketplaces > Lazada > Shops > Connect New Shop

Odoo 20 includes a Lazada connector for sellers on the Lazada marketplace. It imports Lazada orders into Odoo, fetches the delivery slips for them and keeps stock levels synchronised between Odoo and the marketplace. Shops are connected from the Marketplaces menu in Sales. Sellers who run a Lazada shop can manage those orders and their stock from Odoo. Each shop is added with Connect New Shop.

Why it matters Lets sellers import Lazada orders, get delivery slips and sync inventory in Odoo.

How to use it

  1. Go to Sales > Marketplaces > Lazada > Shops.
  2. Click Connect New Shop.
Odoo 20 · Sales
Lazada Shops menu with Create Lazada Shop connection wizard
09
NewCommunity

Loyalty point expiration

Sales > Products > Discount & Loyalty > [loyalty program]

Loyalty programs have a 'Points Validity' setting expressed in days. Points that customers earn expire once that number of days has passed. The setting is found on loyalty card programs under Discount & Loyalty. Businesses running loyalty schemes can limit how long earned points stay usable. The validity is defined per loyalty program, so different programs can use different periods.

Why it matters Lets businesses set how many days earned loyalty points stay usable.

How to use it

  1. Go to Sales > Products > Discount & Loyalty.
  2. Open a Loyalty Cards program.
  3. Set Points Validity in days.
Odoo 20 · Sales
Loyalty program form with new Points Validity field in days
10
ImprovedEnterprise

Manager commissions

Sales > Commissions > Commission Plans > [plan] > Salespeople

On a commission plan, each salesperson line has a 'Sum of achievements' field. The sales and invoices of the people selected in that field are added to that salesperson's achievements. This covers cases such as managers who earn commission on their team's results, and commissions split between several people. It is set in the Salespeople part of the plan. Each salesperson line can have its own list.

Why it matters Lets companies reward managers based on their salespeople's combined results.

How to use it

  1. Go to Sales > Commissions > Commission Plans and open a plan.
  2. In Salespeople, fill Sum of achievements for a salesperson.
Odoo 20 · Sales
Commission plan: Manager Achievement
11
NewCommunity

Mark orders as fully invoiced

Sales > Orders > [order] > Actions > Close Invoicing

A confirmed sales order can be marked as fully invoiced with the 'Close Invoicing' action. The order then counts as invoiced and Odoo proposes nothing further to invoice on it. A manager can reverse this with the 'Reopen Invoicing' action. Users closing orders that will not be billed further can stop them appearing among orders to invoice. The action sits in the gear menu of the order.

Why it matters Lets teams stop further invoicing on an order, with managers able to reopen it.

How to use it

  1. Open a confirmed sales order.
  2. Open the Actions menu (gear).
  3. Click Close Invoicing.
Odoo 20 · Sales
Quotation actions: Close Invoicing, Save as template
12
NewCommunity

Periodic pricing

Sales > Products > Pricelists > [pricelist] > Daily Rates

A pricelist has a 'Daily Rates' button that opens a calendar of its date-based rules. The calendar shows which discounts or surcharges apply on which days. Users can also select days in the calendar to create rules for those dates. Businesses whose prices change by date, such as seasonal rates, can review and plan them visually. The button sits on the pricelist form.

Why it matters Lets businesses apply discounts or surcharges on specific periods or days.

How to use it

  1. Go to Sales > Products > Pricelists.
  2. Open a pricelist and click Daily Rates.
  3. Select days in the calendar to create rules.
Odoo 20 · Sales
Pricelist Daily Rates calendar
Odoo 20 · Sales
Pricelist rules with Validity column and Daily Rates button
Odoo 20 · Sales
Pricelist rule: Validity field
13
NewCommunity

Price rules per packaging type

Sales > Products > Pricelists > [rule] > Packaging

A pricelist rule can be restricted to a packaging, which acts as a unit of measure, for example a special price when a product is sold in a pack of 6. The Packaging field appears next to the minimum quantity on rules for products that have packagings. The Units of Measure & Packagings setting must be enabled to use it.

Why it matters Lets businesses price specific packagings, such as a six-pack, with minimum quantities.

How to use it

  1. Enable Units of Measure & Packagings in Settings.
  2. Go to Sales > Products > Pricelists and open a rule.
  3. Pick a Packaging next to the minimum quantity.
Odoo 20 · Sales
Pricelist rule with unit/packaging selector next to minimum quantity
14
ImprovedCommunity

Pricelist report improvements

Sales > Products > Pricelists > [pricelist] > Print

The printable pricelist report groups products by product category and shows each product's internal reference; exports also include the barcode. A Date field lets the user choose a day and see the prices that are valid on that date. Sales teams can produce price lists for customers that reflect a specific date. The report is opened with the Print button on a pricelist form.

Why it matters Helps teams share clearer price lists grouped by category, with barcodes and dated prices.

How to use it

  1. Go to Sales > Products > Pricelists and open a pricelist.
  2. Click Print.
  3. Add products and choose a Date.
Odoo 20 · Sales
Pricelist report with date picker, product category grouping and internal reference column
15
NewCommunity

Product images

Sales > Configuration > Settings > Display Product Images

The 'Display Product Images' setting in Sales shows the picture of each product beside its line on the quotation PDF and on the customer portal. Once enabled, customers see the product images when they view or download their quotation. It is switched on in the Sales settings. Internal users can check the result by opening a quotation and using the Preview button, which shows the customer view.

Why it matters Helps customers recognize products by showing pictures on order PDFs and the portal.

How to use it

  1. Go to Sales > Configuration > Settings.
  2. Enable Display Product Images.
  3. Open a quotation and click Preview.
Odoo 20 · Sales
Sales settings with new Display Product Images option for PDF and online quotes
16
ImprovedCommunity

Quotation sections

Sales > Orders > Quotations > [section]

Section lines on quotations have their own quantity and unit. Changing the quantity of a section scales the quantities of all products inside it. Section titles can run over several lines and include a description. A section and its lines can be saved as a template from the section's menu and reused in later quotations. Salespeople building repeated offers use this to speed up quoting.

Why it matters Lets salespeople scale grouped lines by section quantity and reuse sections as templates.

How to use it

  1. Open a quotation that has sections.
  2. Hover a section to see its quantity and unit.
  3. Use the section's kebab menu and choose Save as Template.
Odoo 20 · Sales
Section line showing its own quantity and unit (250 m²) that scales contained lines
17
ImprovedCommunity + Enterprise

Quotation templates

Sales > Orders > Quotations > New; Sales > Configuration > Quotation Templates

Quotation templates can be chosen directly when creating an order, from the arrow beside the New button. Templates support subsections and options such as Hide Prices and Hide Composition, and products can be added to them with the product catalog. Any quotation or sales order can be turned into a template with 'Save as template' in the Actions menu. Templates are managed under Sales > Configuration > Quotation Templates.

Why it matters Helps salespeople build quotes faster from templates, subsections and the product catalog.

How to use it

  1. Go to Sales > Orders > Quotations and click the arrow next to New.
  2. Edit templates in Sales > Configuration > Quotation Templates.
  3. Use Catalog in a template to add products.
  4. On a quotation, choose Actions > Save as template.
Odoo 20 · Sales
New button with quotation templates
18
ImprovedCommunity

Sales order email template

Sales > Orders > Quotations > [quotation] > Send

The default email used to send a quotation includes the customer reference in its subject and in its text. The customer reference is also shown beside the order number in the breadcrumb. This helps customers and salespeople link the quotation to the customer's own reference. It applies when the quotation has a Customer Reference filled in. The Send button on the quotation opens this email.

Why it matters Helps customers recognize orders by including their reference in quotation emails.

How to use it

  1. Open a quotation with a Customer Reference.
  2. Click Send to see the reference in the email.
Odoo 20 · Sales
Quotation breadcrumb showing customer reference beside order number
19
NewCommunity

Sales order line numbering

Sales > Configuration > Settings

A Sales setting adds numbers to the lines of sales orders. The line numbers are shown on the sales order form, on the PDF document and on the customer portal. Users and customers can then refer to a specific line by its number when discussing an order. The numbering is switched on once in Sales > Configuration > Settings and then applies to quotations and orders.

Why it matters Helps teams and customers refer to order lines by number on forms, PDFs and portal.

How to use it

  1. Go to Sales > Configuration > Settings.
  2. Enable line numbers.
  3. Open a quotation to see numbered lines.
Odoo 20 · Sales
Sales settings: Line Numbers, Mandatory Product, Display Product Images
20
ImprovedCommunity + Enterprise

Sales order portal page

Customer portal > Sales Orders > [quotation]

The customer portal page of a quotation or order has a left column with the total, the main actions such as sign and pay or download, and the salesperson. A header card above the lines shows the order number, dates and customer reference. Customers use this page to review and accept quotations and to follow their orders. Internal users can see it through Preview.

Why it matters Helps customers review, sign, pay and download orders from a clearer portal page.

How to use it

  1. Open a quotation and click Preview.
  2. Or go to the customer portal > Sales Orders and open an order.
Odoo 20 · Sales
Redesigned portal order page with total/actions sidebar and order header card
21
NewCommunity

Services & Material

Sales > Configuration > Settings > Services & Materials; Sales > Orders > Services & Materials

The 'Services & Materials' option in the Sales settings enables a list of re-invoiceable costs for each order, covering expenses, vendor bill lines and timesheets. From this list, users can re-invoice each cost either at a fixed price or at cost. It is useful for businesses that pass project or service costs on to customers. The list is opened from Sales > Orders > Services & Materials.

Why it matters Lets businesses re-invoice expenses, vendor bills and timesheets at fixed price or cost.

How to use it

  1. Go to Sales > Configuration > Settings and enable Services & Materials.
  2. Go to Sales > Orders > Services & Materials.
Odoo 20 · Sales
Sales settings with new Services & Materials re-invoicing option
22
NewCommunity

Single-use discount codes

Sales > Products > Discount & Loyalty > [Discount Code program]

Discount code programs have a 'Once per user' option. When it is ticked, each customer can use the discount code only one time. Marketing and sales teams can hand out a shared code while making sure no customer benefits from it more than once. The option is set per Discount Code program under Sales > Products > Discount & Loyalty and applies to that program only.

Why it matters Stops customers from reusing the same discount code more than once.

How to use it

  1. Go to Sales > Products > Discount & Loyalty.
  2. Open a Discount Code program.
  3. Tick Once per user.
Odoo 20 · Sales
Discount Code program form with new Once per user option
23
ImprovedCommunity

Stacked fields on sales order lines

Sales > Orders > Quotations > [show optional columns]

Optional values on sales order lines, such as Margin, Margin (%), Delivered (%), Tax Excl. and Tax Incl., are displayed under the main value within the same cell. Each value has a short label: M:, M%:, TE: and TI:. This keeps the order lines compact, as these values do not need their own columns. The values are enabled from the optional columns toggle of the order lines.

Why it matters Helps users read order lines by stacking margin, delivery and tax amounts under main values.

How to use it

  1. Open a quotation.
  2. Enable Margin, Margin (%), Tax Excl. and Tax Incl. in the optional columns.
Odoo 20 · Sales
Order lines with Delivered %, Margin and Margin % stacked under main values
24
NewEnterprise

TikTok

Sales > Marketplaces > TikTok Shop > Shops > Connect New Shop

Odoo 20 has a TikTok Shop connector (module sale_tiktok). It imports TikTok orders, fetches the delivery slips and synchronises stock. The setup sits under a Marketplaces menu in Sales, where shops are connected. Sellers who use TikTok Shop can process those orders in Odoo with the rest of their sales. Shops are added with Connect New Shop under Marketplaces > TikTok Shop > Shops.

Why it matters Lets sellers import TikTok Shop orders, get delivery slips and sync inventory in Odoo.

How to use it

  1. Go to Sales > Marketplaces > TikTok Shop > Shops.
  2. Click Connect New Shop.
Odoo 20 · Sales
TikTok Shops list under Sales Marketplaces with Connect New Shop button
25
ImprovedCommunity

Sales order creation from purchase orders

Sales > Orders > [upload customer PO file]

Sales orders can be created by uploading a customer's purchase order file (UBL) on the Quotations list. Odoo remembers corrections made afterwards: if a user changes the product matched to a customer's product code, the next import from that customer uses the corrected product. Sales staff who receive electronic orders spend less time fixing the same matches. The correction is stored per customer.

Why it matters Saves time on repeat UBL imports by remembering product corrections per customer.

How to use it

  1. Upload a customer's purchase order file on the Quotations list.
  2. Correct a wrongly matched product and save.
  3. Import another order from the same customer.
26
NewCommunity

Ship orders without Inventory

Sales > Orders > [confirmed order] > Ship

In databases without the Inventory app, a confirmed sales order that has a delivery line shows a ship button in its header. Clicking it records the delivery, can send the shipping confirmation email to the customer and tracks the delivery status of the order. Businesses that sell goods but do not use Inventory can still record shipments. The button sits in the order header.

Why it matters Lets businesses ship orders and record tracking without installing Inventory.

How to use it

  1. In a database without Inventory, confirm an order with a delivery line.
  2. Click the Ship button in the order header.

24 new in Odoo 20

Point of Sale

24 features
27
ImprovedEnterprise

Booking Kanban and pivot views

Appointments > Resource Bookings

In Odoo 20 bookings, which are appointment calendar events, have a Kanban view grouped by status and a pivot view, available beside the calendar, Gantt and list views. The Kanban lets staff follow reservations through their stages, while the pivot view is used to analyse them. The POS booking module, pos_appointment, uses the same Kanban for restaurant bookings, so restaurants taking table reservations through Odoo can review them the same way.

Why it matters Helps staff review and analyze reservations using Kanban and pivot views.

How to use it

  1. Go to Appointments and open the bookings.
  2. Switch to the Kanban or pivot view.
Odoo 20 · Point of Sale
Resource Bookings in new Kanban view; Kanban and pivot view buttons boxed
28
NewCommunity + Enterprise

Convert order lines into a combo

Point of Sale > Dashboard

In the Odoo 20 Point of Sale, when the separate lines of an order match a combo product, a suggestion appears under the order, for example one Happy Hour Menu, with an Apply button. Clicking it replaces the matching lines with the combo. When more than one combo fits the lines, the cashier chooses which one to use. This makes large table orders easier to handle and gives customers the combo price. It requires combo products whose choices include items also sold individually.

Why it matters Simplifies large table orders by turning matching order lines into combos.

How to use it

  1. Create a combo product whose choices include separately sold products.
  2. In the POS, add those products to an order.
  3. Click Apply on the combo suggestion.
Odoo 20 · Point of Sale
POS order suggesting T-shirt & Pants Combo with Apply button
29
ImprovedCommunity

Employee access levels

Point of Sale > Configuration > Point of Sales

When Log in with Employees is active on an Odoo 20 point of sale, employees are given one of the access levels Manager, Cashier, Restrictive or Supervised. Supervised is the most limited: a supervised employee can ring up sales, but an employee with a higher level must approve before the payment can be closed. Managers assign these levels per point of sale to control what each staff member is allowed to do at the register.

Why it matters Lets managers give new or trainee staff a very restrictive Supervised access level.

How to use it

  1. Go to Point of Sale > Configuration > Point of Sales.
  2. Open a shop.
  3. Tick Log in with Employees and set access levels.
Odoo 20 · Point of Sale
POS settings: employee access levels Manager, Cashier, Restrictive and new Supervised
30
ChangedCommunity

End of session

Point of Sale > Configuration > Settings > Accounting

Odoo 20 Point of Sale accounting works as follows. When a session is closed, its sales are posted as one global customer invoice in a closing journal. A Closing entries setting decides when payment journal entries are created: daily at a chosen hour, or at session closing. With the daily option, the payment entries are generated automatically at that time even if the session is still open. Accountants configure this in the Accounting part of the Point of Sale settings.

Why it matters Simplifies accounting by posting one global sale per session and payment entries at a set time.

How to use it

  1. Go to Point of Sale > Configuration > Settings.
  2. Scroll to Accounting > Closing entries.
  3. Choose daily at an hour, or at closing.
Odoo 20 · Point of Sale
POS settings: Closing entries generated daily at a set hour or at closing
31
NewCommunity

Multiple currencies

Point of Sale > Configuration > Payment Methods

An Odoo 20 point of sale can accept payment in more than one currency. Cash and bank payment methods have a Currencies field. When several currencies are added there, the payment screen lists the method once for each currency, converts the amount due, and records the payment in the currency used. A second currency must be activated first. This helps shops that take cash or bank payments from customers paying in a foreign currency.

Why it matters Lets shops accept payment in several currencies at one point of sale.

How to use it

  1. Activate a second currency.
  2. Go to Point of Sale > Configuration > Payment Methods.
  3. Open Cash and add currencies.
Odoo 20 · Point of Sale
POS payment method: currencies
32

Order search

In the Odoo 20 Point of Sale, the Orders overview can be searched using an invoice number or a receipt number. This helps staff find a past order when a customer brings an invoice or receipt. The source gives no menu path.

Why it matters Helps staff find past orders quickly by invoice or receipt number.
Odoo 20 · Point of Sale
POS Orders screen search offering Receipt Number search option
33
NewCommunity

Print preparation tickets per product

Point of Sale > Configuration > Printers > Kitchen Printer

Preparation printers in the Odoo 20 Point of Sale have a Split per product option. With it turned on, the kitchen receives a separate ticket for each product in the order rather than one ticket covering the whole order. Kitchens where each dish is prepared at a different station can hand out tickets per item. The option is set on the printer record under the Printers configuration of the Point of Sale.

Why it matters Helps kitchens organize work with a separate preparation ticket for each product.

How to use it

  1. Go to Point of Sale > Configuration > Printers.
  2. Open a preparation printer.
  3. Tick Split per product.
Odoo 20 · Point of Sale
Preparation printer form with new Split per product option
34
ImprovedCommunity

Receipt printing

Point of Sale > Configuration > Printers

In Odoo 20 the paper size of a POS printer can be set manually so receipts are laid out correctly on the paper actually used. The setting is on the printer record and is only shown in developer mode. Administrators activate developer mode, open the printer from the Point of Sale printers configuration and choose the paper size. This avoids receipts that are cut off or badly formatted when the printer's paper differs from the default.

Why it matters Ensures receipts print correctly by setting the printer paper size manually.

How to use it

  1. Activate developer mode.
  2. Go to Point of Sale > Configuration > Printers.
  3. Open a printer and set its paper size.
Odoo 20 · Point of Sale
POS printer form in developer mode with new Paper Size setting
35
NewCommunity

Service fees

Point of Sale > Configuration > Presets > Options

Odoo 20 lets a service fee be added to Point of Sale orders and to self-orders. The fee is configured on presets, such as Dine In, in the Options tab of the preset, so it applies to orders using that preset. The fee amount is also shown on invoices generated for these orders. Restaurants use this to charge a service fee for certain order types without adding it by hand each time.

Why it matters Lets businesses add service fees to POS orders and self-orders, shown on invoices.

How to use it

  1. Go to Point of Sale > Configuration > Presets.
  2. Open a preset such as Dine In.
  3. In the Options tab, set Service Fee.
Odoo 20 · Point of Sale
POS preset: service fee
36
NewCommunity

Simplified receipts

Point of Sale > Dashboard > Payment > Print

The Odoo 20 Point of Sale can print a simplified receipt. This receipt shows the subtotals and taxes of the order but leaves out the individual order lines. It is printed from the payment confirmation screen after a sale is completed, using the Print button. Shops use it when a short receipt with only totals and tax amounts is enough for the customer.

Why it matters Lets shops give receipts showing only subtotals and taxes, without listing each order line.

How to use it

  1. Complete a sale in the POS.
  2. Click Print on the payment confirmation screen.
Odoo 20 · Point of Sale
POS print dialog after payment offering Full or new Simplified Receipt
37
NewCommunity + Enterprise

Snooze products

Point of Sale > Dashboard > Open Register > long press product

In Odoo 20 a product can be snoozed so it is temporarily unavailable in the Point of Sale or on the self-ordering menu. During a session, staff long press the product and choose Snooze. The product then stays hidden from ordering for a limited time. This is used when an item runs out for a while, so customers and cashiers cannot order it until it is available again.

Why it matters Lets staff temporarily hide unavailable products from POS and self-ordering menus.

How to use it

  1. Open a POS session.
  2. Long press a product.
  3. Click Snooze and choose a duration.
Odoo 20 · Point of Sale
POS product info with Snooze button and unavailable-duration options
38
NewCommunity + Enterprise

WhatsApp and SMS self-order receipt

Point of Sale > Configuration > Presets > Self Ordering

In Odoo 20 customers who order through self-ordering can receive their receipt by WhatsApp or by SMS. The option is configured on a preset, such as Takeout, in its Self Ordering tab under the Point of Sale presets configuration. Customers then get the receipt on their phone instead of a paper copy. The Self Ordering tab of each preset holds the settings for how these receipts are offered.

Why it matters Lets self-ordering customers get their receipt by WhatsApp or SMS.

How to use it

  1. Go to Point of Sale > Configuration > Presets.
  2. Open a preset such as Takeout.
  3. Open the Self Ordering tab.
Odoo 20 · Point of Sale
Takeout preset Self Ordering tab with WhatsApp and SMS confirmation templates
39
ImprovedCommunity

Base unit price on product label

Products > Print Labels

In Odoo 20 printed product labels can show the price per base unit under the normal price. This works when the Product Reference Price option is enabled in the Point of Sale settings and the product has a base unit quantity and unit, such as 0.33 L. The label then prints a value like a price per litre in addition to the sale price. Labels are printed from the product with the Print Labels action, which helps shops display unit prices on shelves.

Why it matters Helps shoppers compare prices with per-unit prices, such as per litre, on product labels.

How to use it

  1. Enable Product Reference Price in Point of Sale settings.
  2. Set a base unit quantity and unit on a product.
  3. Print its labels with Print Labels.
40
ImprovedCommunity

Expired product notification

Point of Sale > (session) > select lot

In the Odoo 20 Point of Sale, when a cashier selects a lot or serial number whose expiration date has already passed, the POS displays a notification saying that the lot or serial is expired. This warns staff before an expired item is sold. It applies to products tracked by lots with expiration dates and requires the Product Expiry module. The check happens at the moment the lot is chosen during the sale.

Why it matters Helps cashiers avoid selling expired products or lots by warning them at selection.

How to use it

  1. Install Product Expiry and track a product by lots.
  2. Give a lot a past expiration date.
  3. Sell the product in the POS and select that lot.
41
NewEnterprise

GoFood delivery integration

Point of Sale > Products > Platform Orders > Providers > GoFood

Odoo 20 includes a GoFood connector for the Point of Sale. Delivery orders placed on GoFood arrive in the POS, and the restaurant menu is kept in sync with GoFood. The connector is built on the platform order framework used for food delivery providers in the POS, and is meant for Indonesia and Vietnam. To use it, the GoFood module is installed and the provider is configured with the restaurant's GoFood credentials.

Why it matters Lets restaurants in Indonesia and Vietnam receive GoFood orders in the POS with synced menus.

How to use it

  1. Install the GoFood module.
  2. Go to Point of Sale > Products > Platform Orders > Providers > GoFood.
  3. Enter the GoFood credentials.
42
NewEnterprise

GrabFood delivery integration

Point of Sale > Products > Platform Orders > Providers > GrabFood

Odoo 20 includes a GrabFood connector for the Point of Sale. Orders placed through GrabFood are received directly in the POS and the menu is synchronized with GrabFood. Prices and taxes are handled according to the country, and the connector serves eight Southeast Asian countries. Setup consists of installing the GrabFood module and configuring the provider with GrabFood credentials from the Platform Orders providers menu.

Why it matters Lets Southeast Asian restaurants receive GrabFood orders in the POS with synced menus.

How to use it

  1. Install the GrabFood module.
  2. Go to Point of Sale > Products > Platform Orders > Providers > GrabFood.
  3. Enter the GrabFood credentials.
43

Label printing

In Odoo 20 any label printer can be linked straight to the Point of Sale through a USB proxy. This lets shops use the label printer they already have for POS label printing. No menu path is given in the source for this setup.

Why it matters Lets shops connect any label printer directly through a USB proxy.
44
ChangedCommunity

Mercado Pago terminal

Point of Sale > Configuration > Payment Methods > Mercado Pago

The Odoo 20 Mercado Pago terminal integration for the Point of Sale uses Mercado Pago's Orders API. Through it the terminal handles QR code payments, refunds and cancellations, and it can also be used by companies in Chile. To set it up, the Mercado Pago POS module is installed and a payment method is configured with the company's Mercado Pago credentials. Cashiers then select that payment method at checkout to send the amount to the terminal.

Why it matters Lets businesses take QR payments, refunds and cancellations on Mercado Pago terminals, including in Chile.

How to use it

  1. Install Mercado Pago POS.
  2. Go to Point of Sale > Configuration > Payment Methods.
  3. Configure a method with Mercado Pago credentials.
45
ImprovedCommunity

Printer management

Point of Sale > Dashboard > Open Register > Menu > Printers

An Odoo 20 point of sale can be linked to several receipt printers. Each device chooses its default printer in a dialog, which can also be opened from the POS menu under Printers. The other printers act as fallbacks if the default one is unavailable. This suits shops with several registers or locations sharing one POS configuration. The printers are added through the Receipt Printers setting of the point of sale.

Why it matters Lets staff choose which of several linked printers to use at a point of sale.

How to use it

  1. Add two receipt printers in the POS Receipt Printers setting.
  2. Open the POS register.
  3. Go to the menu > Printers and pick a default.
46
NewCommunity

Reorganizing products in POS interface

Point of Sale > Dashboard > Open Register

In the Odoo 20 Point of Sale interface, product cards can be rearranged by drag and drop. During an open session, the user presses on a product card and drags it to a different place in the product grid. This lets shops put frequently sold items where cashiers can reach them quickly. The new order is used for the products shown in the register. Users need rights to edit products.

Why it matters Lets shops arrange POS products by drag and drop to speed up checkout.

How to use it

  1. Open a POS session.
  2. Press and drag a product card to a new place.
47
ImprovedCommunity + Enterprise

Self-ordering

Self-order (mobile) > Cart; Point of Sale > Dashboard

Odoo 20 self-ordering has three additions. Customers can write a note at checkout, and the note is shown on the kitchen display. Optional products are offered when ordering from a phone or a kiosk. Staff can also generate and print a QR code tied to a specific order, which customers scan to place their order and pay after their meal. The order-specific QR code requires mobile self-ordering with the Dynamic QR service mode.

Why it matters Lets self-order customers add kitchen notes, see optional products and pay later via order QR codes.

How to use it

  1. Set the POS to mobile self-ordering with Dynamic QR.
  2. In the POS, open a table, add a product and click Dynamic QR.
  3. Open the link on a phone and view the cart.
48
ChangedCommunity

Simplified inventory management

Point of Sale > (session) > product info

In Odoo 20 the Point of Sale can manage stock without the Inventory app. Each product has a single on-hand quantity and no transfers are needed. On a database without Inventory, a cashier can long press a tracked product during a session to open its information popup, where an Inventory section shows the on-hand quantity. This gives small shops basic stock visibility at the register without setting up full inventory operations.

Why it matters Lets shops track stock without the Inventory app, using one on-hand quantity per product.

How to use it

  1. Open a POS session on a database without Inventory.
  2. Long press a tracked product.
  3. Read the on-hand quantity in the Inventory section.
49

Static QR code payment

Odoo 20 Point of Sale supports payments made through static UPI QR codes. Customers can pay by scanning a fixed UPI QR code. The source does not give a menu path for configuring it.

Why it matters Lets shops accept payments through static UPI QR codes.
50

UrbanPiper integration

In Odoo 20 most UrbanPiper settings are handled from within the Point of Sale app, and UrbanPiper connects the POS to a wider set of food delivery platforms. No menu path is given in the source.

Why it matters Lets restaurants manage UrbanPiper settings within Point of Sale and reach more delivery platforms.

6 new in Odoo 20

Rental

6 features
51
ImprovedEnterprise

Rental order creation

Sales > Orders > Quotations

In Odoo 20 a rental product can be added to an ordinary sales order. As soon as the order contains a rentable line, a Rental period field appears under Expiration. An order counts as a rental order when both its start and return dates are filled in; clearing these dates turns it back into a normal sales order. Sales staff can therefore combine selling and renting from the Sales app.

Why it matters Lets sales teams handle rentals and sales in one order by adding or clearing rental dates.

How to use it

  1. Go to Sales > Orders > Quotations > New.
  2. Add a rental product.
  3. Fill the Rental period field under Expiration.
Odoo 20 · Rental
Quotation with rental product showing Rental period field under Expiration
52
NewEnterprise

Rental orders dashboard

Rental > Orders

The Odoo 20 rental orders list and Kanban views have a strip of counters at the top: Today, Pickups, Returns, Late, To Confirm and To Invoice. Each card shows how many orders fall in that group, and clicking a card filters the orders to that group. Rental staff use it to see at a glance what must be picked up, returned, confirmed or invoiced.

Why it matters Helps rental teams filter pickups, returns, late orders and pending tasks with one click.

How to use it

  1. Go to Rental > Orders.
  2. Click a card such as Returns or Late to filter the list.
Odoo 20 · Rental
Rental Orders list with new counter strip: Today, Pickups, Returns, Late, To Invoice
53
ChangedEnterprise

Simplified and unified pricelists

Rental > Products > Prices tab

In Odoo 20 rental, subscription and sales prices are all pricelist rules shown in the product's Prices tab, using the standard pricelist engine. A rental product keeps a Periodicity, in hours, days, weeks or nights, set in its Sales tab. Its rental price is the rule price multiplied by the number of periods in the rental. Managers maintain all prices in one place for each product.

Why it matters Lets businesses manage rental, subscription and sales prices together in one Prices tab.

How to use it

  1. Go to Rental > Products and open a rental product.
  2. Use the Prices tab for pricelist rules.
  3. Set Periodicity in the Sales tab.
Odoo 20 · Rental
Rental product form with unified Prices tab for pricelist rules
54
ChangedEnterprise

Working schedules

Rental > Configuration > Settings

In Odoo 20 the Rental settings include an Availabilities field, which is a working schedule, or resource calendar, set per company. It defines the days on which pickups and returns can take place. Rental managers use it to keep pickups and returns on the days the business is open. The field is found in the Pick up & Returns section of the Rental settings.

Why it matters Lets rental businesses limit pickups and returns to valid days using a working schedule.

How to use it

  1. Go to Rental > Configuration > Settings.
  2. In Pick up & Returns, set Availabilities.
Odoo 20 · Rental
Rental settings: Availabilities working schedule defines valid pickup and return days
55
ImprovedCommunity + Enterprise

Automatic price update

Rental > Orders

In Odoo 20, changing the pricelist or the rental period on a rental order recalculates the unit prices of the lines already on the order straight away. No separate button needs to be clicked to apply the new prices. Rental staff can therefore adjust dates or switch a customer's pricelist and immediately see the correct amounts on the quotation. It applies to rental quotations that already contain lines.

Why it matters Keeps rental order prices accurate by recalculating them instantly when the pricelist or period changes.

How to use it

  1. Go to Rental > Orders and open a quotation with lines.
  2. Change the Pricelist or the Rental period.
  3. Check the updated Unit Price on the lines.
56
ImprovedEnterprise

Strikethrough pricing

Website > Shop

On the Odoo 20 eCommerce shop and product pages, a rental product that has a pricelist discount displays its original price crossed out next to the discounted price per period. Shoppers can see both prices side by side and how much they save on the rental. This appears when a discount pricelist rule exists for the rental product on the pricelist used by the website.

Why it matters Helps online shoppers see rental discounts by showing original prices struck through.

How to use it

  1. Add a discount pricelist rule for a rental product on the website pricelist.
  2. Open the product page on the shop.

5 new in Odoo 20

CRM

5 features
57
ImprovedCommunity

Hidden address info

CRM > Pipeline

The lead and opportunity form does not show the address fields in its main area. The top of the form displays Contact, with the prompt to select or create a contact, plus Email and Phone, which encourages users to link a real contact record. The raw address fields remain available in the Extra Info tab, but only when developer mode is active. Sales users therefore manage addresses mainly through the linked contact.

Why it matters Expect lead address fields in the Extra Info tab, visible only in developer mode.

How to use it

  1. Go to CRM > Pipeline.
  2. Open an opportunity without a contact.
  3. Activate developer mode to see address fields in Extra Info.
Odoo 20 · CRM
Lead form Extra Info tab showing company address fields in developer mode
58
ImprovedCommunity

Lead distribution

CRM > Configuration > Sales Teams > team member > Lead Assignment tab

On each sales team member, the Lead Assignment tab has an Auto-Assignment Rules choice that controls how leads are distributed. The options are Always in rotation, In rotation with a limit, where a maximum number of leads per 30 days is set, and Out of rotation. Sales managers use these settings to decide which members receive automatically assigned leads and how many.

Why it matters Lets sales managers control who receives leads and cap how many each person gets.

How to use it

  1. Go to CRM > Configuration > Sales Teams and open a team.
  2. Open a team member.
  3. Choose a rule in the Lead Assignment tab.
Odoo 20 · CRM
CRM settings: Rule-Based Assignment
59
ImprovedCommunity + Enterprise

Lead generation

CRM > Pipeline > Generate; CRM > Lead Mining Requests

The Generate button in the CRM pipeline opens a screen with eight lead source options, including searches in a company directory, website forms, email replies, appointments, surveys and plugin integrations. Lead mining relies on Dun & Bradstreet data. Industries are grouped by divisions, and searching for individual people is not offered. Lead Mining Requests can still be opened from the CRM menu.

Why it matters Helps sales teams find and import new leads from many sources using Dun & Bradstreet data.

How to use it

  1. Go to CRM > Pipeline and click Generate.
  2. Pick Search in our directory, or open a Lead Mining Request.
  3. Open Industries to choose sectors.
Odoo 20 · CRM
CRM Generate menu with lead sources
60
NewCommunity + Enterprise

Pipeline switcher

CRM > Sales > My Pipeline (team dropdown)

The pipeline title acts as a dropdown. Users pick a sales team to see only that team's pipeline, or All Teams to see everything; sales managers also get a Manage Teams entry. The switcher works across the kanban, list, calendar, pivot, graph, map, cohort and forecast views of the pipeline. The dropdown sits next to the Generate button at the top of the pipeline, and the chosen team filters what is displayed.

Why it matters Lets users switch between sales team pipelines or view all teams at once.

How to use it

  1. Go to CRM > Sales > My Pipeline.
  2. Click the team dropdown next to Generate.
  3. Choose a team or All Teams.
Odoo 20 · CRM
CRM pipeline team switcher
61
NewEnterprise

Upsells from lead

CRM > Pipeline > lead > Subscriptions smart button

When the customer on a lead already has subscriptions, the lead shows a Subscriptions smart button. It opens those subscriptions as well as upsells or renewals created from the lead. Upsell and renewal quotations made from there automatically get the lead set as their opportunity, and the lead's expected and recurring revenue are updated from those quotations. Sales users open it from the lead form.

Why it matters Helps salespeople create upsell and renewal quotes from leads that update opportunity revenue.

How to use it

  1. Open a lead for a customer with subscriptions.
  2. Click the Subscriptions smart button.
  3. Create an upsell or renewal quotation from there.
Odoo 20 · CRM
Opportunity form with new Subscriptions smart button showing customer's subscriptions

1 new in Odoo 20

Subscriptions

1 features
62
NewEnterprise

Loyalty programs

Sales > Products > Discount & Loyalty > [program] > rule/reward

Loyalty programs work with subscriptions. A loyalty rule or reward can be marked Recurring. A recurring rule grants points again on each renewal invoice, and a recurring reward is granted once more on every renewal while the customer still has sufficient points, for example a discount during the first months or free products each period. The customer portal displays the loyalty details on the subscription.

Why it matters Helps businesses reward subscribers with points and rewards at every renewal.

How to use it

  1. Go to Sales > Products > Discount & Loyalty.
  2. Open or create a loyalty program.
  3. Open a rule or reward and tick Recurring in the Subscription section.
Odoo 20 · Subscriptions
Loyalty conditional rule dialog with new Subscription Recurring checkbox

in depth

The Sales, CRM & POS changes that matter most

Faster quotations

Save any quotation or sales order as a template, save sections as reusable templates, update a whole section's quantity in one action, and add from the product catalog with the unit of measure or packaging. Orders and invoices switch between tax-included and tax-excluded pricing.

Sales teams with repeatable bundles build quotes in minutes rather than line by line.

CRM enrichment on Dun & Bradstreet

Lead generation and contact enrichment move from Clearbit to the Dun & Bradstreet company database. Contacts also take multiple identifiers, such as a DUNS number.

Better company data coverage outside North America and Western Europe. Re-test your enrichment hit rate before renewing a separate data subscription.

Point of Sale order-and-pay by QR

Customers scan an order-specific QR code to order and pay after the meal; self-ordering notes reach the kitchen display; optional products appear on mobile and kiosk ordering; more delivery platforms connect through UrbanPiper.

Restaurants and multi-branch food chains take orders and payment with fewer staff steps.

keep exploring

Odoo 20 in other business areas

Odoo 20 Sales, CRM & POS questions

  • How many new Sales, CRM & POS features are in Odoo 20?

    62 across 5 apps, 10% of the 637 new features in the release by TechUltra's count. By app: Sales (26), Point of Sale (24), Rental (6), CRM (5), Subscriptions (1).

  • What are the biggest Sales, CRM & POS changes in Odoo 20?

    In Sales, quotation templates: helps salespeople build quotes faster from templates, subsections and the product catalog. In Point of Sale, multiple currencies: lets shops accept payment in several currencies at one point of sale. In Rental, rental order creation: lets sales teams handle rentals and sales in one order by adding or clearing rental dates.

  • How do we get the Odoo 20 Sales, CRM & POS features?

    If you run Odoo 16, 17, 18 or 19, they arrive with the upgrade to Odoo 20. A free written assessment lists your modules, the risks in your build and a fixed price. If you are new to Odoo, start directly on Odoo 20 with a fixed-price implementation, priced after a paid discovery week.

Sources: features, steps and the 48 screenshots are from TechUltra's Odoo 20 feature guide. Counted by TechUltra's Odoo team from the Odoo 20 source code and a live Odoo 20 database; industry packages are based on Odoo's official release notes. Localization changes are not included. The in-depth notes are from Odoo's Odoo 20 release notes.

ready when you are

Planning your move to Odoo 20?

Book a free 30-minute call with a TechUltra senior consultant for a process review or a clear upgrade path from Odoo 16, 17, 18 or 19.