Promotions and Coupons for Odoo

coupons promotions sales discounts.jpg

Promotions and Coupons

There are two types of discounts that are supported in Odoo: Promotions and Coupons. They behave in slightly different ways and can be used for different purposes. You can enable the functionality for both by going to the Sales module>Configuration>Settings and checking the Coupons & Promotions box, as shown below.

promotion and coupon configuration.png

Once enabled, you can access both from the Products menu of the Sales App.

promotion products.png


When creating a new promotion, there is a variety of different settings to consider.

Click “Create” from the list of promotions to get started and give your promotion a name. You can set up a promotion to apply to everyone that comes to your site or calls in, or you can limit usage to specific groups, specific users, or even specific price lists via the Edit Domain button. Once all of your filter criteria are entered, the records will display the number of users eligible for the promotion. You can see the list of those users by clicking on the records link, but if you need to modify the filtering logic, you’ll need to use the Edit Domain button again.

promotion and coupon edit domain button.png

The promotion can apply to all active products on your site, or you can limit it to specific groups of products or even a single product. You can also require that multiple quantities of a product be added to the cart or a minimum dollar amount criterion is met in order to qualify for the promotion.

NOTE: At this time only the default currency is supported for meeting the minimum dollar amount requirement, so if you have two sites that span currencies a dollar discount will be converted at the current rate. I.E., if your default currency is Canadian dollars and you offer $5CAD off, on the US site it will be ~$3.50 off.

promotion product filtering.png

You can control how the discount code is displayed in the shopping cart by modifying the discount’s Product Name. Since all discounts are considered service products, they’re easily customizable. From the Promotion window, click on Reward Line Product link to be taken to the relevant product page and you can make the changes you need there.

promotion reward line product.png

A promotion can be configured so that it gets applied automatically to a cart once the conditions are met, in which case no code is needed. You can also set up the promotion to require the user to enter in a code, in which case you will need to specify the code name. This field will not be case sensitive and anything the user enters will be automatically capitalized.

promotion with a code.png

You can limit promotion usage to a single order per user, allow them to use it a pre-set number of times, or configure infinite usage. You can also specify start and end dates for which the promotion is valid and the date that will be considered is the date and time the coupon is applied.

promotion validity date range.png

As of right now we only support the Current Order option for promotions.

promotion rewards applicability.png

A promotion can be set up as a discount or as a free product. The built-in functionality in Odoo for Free Shipping is not fully operational, however free shipping can still be offered as a discount if set up as a Free Product. We’ll explain how in a bit.

promotion reward types.png

Promotion: Discount

A promotion can be set up for a fixed dollar amount, in which case it’s important to make sure you properly configure the minimum purchase amount above to avoid possible orders where the customer gets the entire content of their cart for free.

promotion discount dollar amount.png

A promotion can also be set up for a percentage discount on either the entire order, the cheapest item in the cart or on a specific product. You can configure a maximum threshold to cap the possible discount to a dollar amount or leave this as 0 to create a discount with no limit.

promotion discount percentage on specific product with max limit.png

Promotion: Free Product

If you elect to offer a free product as your promotion, you can select the product from a list as well as specify how many of that product is being given away.

promotion free product.png

You can offer a free product with the purchase of another product, BOGO, and in this instance if they purchase 4 of the items qualifying for the freebie, then with the code they’ll be able to receive 4 of the free items at no charge.

If you’re looking to offer Free Shipping as a product, select the shipping method you’d like to offer from the product search by selecting Services and Delivery in your search criteria. In this example customers who meet the promotion criteria and apply this code will receive free domestic shipping. All other shipping options will still need to be paid for.

promotion shipping as free product.png

You’ll want to leave the quantity as 1 for free shipping promotions.

promotion shipping as free product quantity of 1.png

A user can only enter a single promotion code in the shopping cart, however if their order qualifies for an Automatically Applied promotion as well, the two will be stacked. If a customer enters a different code in the cart, the previous one will be removed and the new one will be applied in its place.


Unlike promotions, coupons are stackable, meaning more than one can be used in a single shopping cart. A user can also add coupons on top of an automatic promotion and a promotional code, so it’s important to be aware of active promotions when generating coupons.

Coupons in Odoo are treated as one-time-use vouchers and several can be generated for each coupon program.

Creating a Coupon Program

You can create a coupon that is applicable to any product, or limit it to a single category, brand or a specific product.

You can configure it to be applicable to a single item or require that a purchase meet a minimum quantity for a product to be valid. You can also specify a minimum dollar amount for the order or leave it at $0 if you so choose.

Note: just like with the promotions, only the default currency is currently supported when considering the minimum dollar setting.

coupon conditions.png

Validity allows you to configure the amount of days that a coupon voucher will be valid for from the date of creation. You can leave this set to 0 if it’s meant to never expire, though setting some end date is usually a good idea.

coupon validity duration.png

Similarly to promotions, you can configure your coupon to be redeemed for a Discount or a Free Product. Free shipping is again not functioning as needed, but can be configured using the Free Product setting.

coupon reward type options.png

If choosing to offer a discount with the coupon, you can select either Percentage or a Fixed Amount.

Percentage setting can be configured to discount the order, the cheapest product or a specific product, along with a configurable maximum amount that can limit the total discount, if needed.

coupon percentage discount on order without max.png

If you choose the Fixed Amount option, the only thing you have to set is how much you want the discount to be. Similarly to a promotion, you may want to consider your Minimum Purchase setting for the coupon when setting this amount to avoid $0 balance orders.

coupon fixed amount discount.png

If you selected Free Product, you’ll get a single entry to configure the product you’d like to offer for free. Just like under promotions, you can select a shipping method if you’d like to set up a coupon for free shipping.

coupon free product for free shipping.png

Once your coupon program is configured, you can create the actual coupons by clicking on the Generate Coupon button at the top.

coupon generation.png

When generating coupons you can create a certain number of them to share out manually, or you can generate coupons for a particular customer or company.

coupon generation types and quantities.png

If you choose company, it will generate a coupon for each contact in that company, unless you limit your criteria further.

coupon generation for specified customers.png

In the following example, the Company 1960 has 4 active contacts and therefore 4 separate coupons will be generated, one for each. There is currently no email template to send these coupons to their respective users, so if you choose this option you will need to share the codes manually.

coupon generation filtered for specific company contacts.png

You can view all the coupons currently created for a given coupon program by going to the Coupons tab at the top.

coupon generated view.png

Here you can see the coupons we created in the above example along with any additional coupons currently active for this program. If a coupon has been used, you’ll see an updated state and the Order Reference for the Sales Order it was used in.

coupon generated status and info.png

The state of a coupon program along with any sales numbers associated with the coupons within the program will be shown on the other two tabs from the Coupon page. There you can close an active coupon program or view all the orders that have been placed with the generated coupons.

Note: If you close a coupon program any coupons generated within it will become inactive, even if their expiration date hasn’t passed yet.

Real World Example

The following is a sample configuration for a promotion that gives all customers 10% off their order when they enter the code TESTPROMO if the cart contains a minimum of $100 in items, pre-tax.

sample promotion setup from legion.png

On the website itself, once one or more items have been added and the user views the shopping cart, they’ll see an “ADD A COUPON” button. Once clicked a window will pop up to allow the user to enter in the code.

ecommerce cart add a promotion code.png

If the cart contents meet the promotional criteria, once the code is entered the cart will reflect the discount and will list the promotional code used as an item in the cart.

ecommerce cart with applied promotion code.png

If the promotional criteria has not been met, an error will be displayed immediately in the popup window.

ecommerce cart minimum not met error.png

Shopping Cart Behavior

  • As mentioned previously, you cannot combine promotions with codes, though an automatically applied promotion can be stacked with one that requires a code.
  • If a coupon or a promotion is configured for a particular user or company, the user will be required to log into their account in order to use it. If they are not logged in, they’ll be prompted to do so.
  • If a user attempts to use the same promotion that’s already applied to the cart a message will appear to inform that that the code has already been applied.
  • If a promotion was a one time use and has already been used on a previous order, a message will pop up to inform the user and it will not be applied.
  • If a coupon is currently applied to a cart or order, it cannot be used by a different user or in a different session, however if it’s removed from the cart, it automatically becomes available for use elsewhere.
  • If a promotion or a coupon has expired, the user will be notified, and it will not be applied.
  • In cases where a promotion or a coupon gift the customer with a free product, but the product hasn’t been added to the cart yet, the item will be automatically added once the code is applied.
  • If a promotion or a coupon is for a gift with a specific purchase of one specific item and the items are not yet in the cart, adding the code will add both items with the proper code applied. If more than one product will qualify for the free gift, since we cannot make the selection for the customer, an error will be displayed stating that the applicable item is not in the cart yet.
  • It is important to keep all active promotions and coupons in mind when creating new ones. A customer cannot check out if their shopping cart totals $0 or less, so you will need to configure all promotions to prevent that possibility.