Odoo 19 eCommerce (the website_sale module, Community) turns your product catalogue into a shop on the Odoo Website. Orders land in Sales as ordinary sales orders, so stock, invoicing and accounting work exactly as they do for quotes. Most of the setup work is in four places: which products are published, the checkout steps, payment providers, and delivery methods. For B2C, the one setting to change on day one is the tax display: Odoo shows prices tax-excluded by default.
This is part 10 of our Odoo 19 guide. It builds on the products and pricelists in part 8; the website pages themselves are covered in part 32.
Publishing the product catalogue
A product appears in the shop only when it is published and can be sold. Beyond that, the eCommerce-specific fields on the product are the eCommerce categories (separate from internal product categories, so the shop menu can follow how customers browse rather than how accounts are posted), extra images, a ribbon such as "New" or "Sale", and optional and accessory products for cross-selling in the cart.
Variants appear as selectors on the product page, using the attribute display types you chose in the product setup. Combo products appear as configurable bundles. The eCommerce settings also offer Product Reference Price (a price per unit such as ₹/kg), Comparison Price (a struck-through reference price) and a Google Merchant Center feed.
With Inventory installed, Product Availability lets you show stock levels and decide per product whether to Sell when Out-of-Stock. It is on by default. Turn it off for anything you cannot restock quickly, or you will be refunding orders.
Website › Configuration › Settings shop settings Website › eCommerce › Products › Products publish, categories, ribbons Website › eCommerce › Products › Pricelists Website › Configuration › eCommerce › Payment Providers Website › Configuration › eCommerce › Delivery Methods
The Odoo 19 checkout: steps and customer accounts
Out of the box the checkout has three steps: Order (the cart), Address (with delivery method) and Payment. A fourth, Extra Info, exists but is off by default. Switch it on in the website editor if you need a PO number, a delivery note or a GSTIN confirmation from the buyer.
Key settings on the shop's settings page:
- Customer Accounts at checkout: Optional (the default), Disabled (buy as guest) or Mandatory (no guest checkout).
- Add to Cart: stay on the product page, or go straight to the cart.
- Abandoned carts: a recovery email sent after a delay you set (10 hours by default).
- Prevent Sale of Zero Priced Product, which replaces the buy button with a contact button for price-on-request items.
- Orders Assignment: the salesperson and sales team that own web orders.
Payment providers for an Odoo shop
Payment providers are shared by eCommerce, online quotations and invoices. Each is a Community module you activate and configure with your merchant credentials. In India the usual choice is Razorpay, which supports UPI alongside cards. Stripe, PayPal, Adyen, Mollie and others cover international sales. Some providers support express checkout, where the customer pays with a wallet straight from the cart.
Two special providers are worth knowing about. Wire Transfer shows your bank details and leaves the order to be confirmed when the money arrives. Cash On Delivery is offered only on delivery methods where you have allowed it. Test every provider in its test mode with a real order, a failed payment and a refund before going live.
Payment fees and settlement timing are set by the provider, not by Odoo. Record provider payouts through the provider's journal so bank reconciliation stays sane (see part 21).
Delivery methods and shipping connectors
A delivery method is either a Fixed Price or Based on Rules (weight, volume, quantity or price bands), optionally free above an order amount. Methods can be limited by country, state or ZIP prefix, so "Tamil Nadu next-day" and "rest of India" can be separate lines with separate prices.
Carrier connectors calculate live rates and print labels. Shiprocket, relevant for Indian sellers, is an Enterprise module, as are most carrier connectors. Click & Collect (Community) lets customers pick up from a store or warehouse.
If your shipping is complicated, start with a few rule-based methods by zone and weight, and add a connector once you know your volumes. A wrong live-rate integration is harder to debug than a simple table.
B2B vs B2C: prices, taxes and access
The same shop can serve consumers and trade customers, but you have to decide how prices appear.
| Decision | B2C | B2B |
|---|---|---|
| Display Product Prices | Tax Included, so the price shown is the price paid, as Indian consumers expect | Tax Excluded, since buyers compare net prices and claim input credit |
| Shop access | All users | Often Logged in users only |
| Sign up | Free sign up | On invitation, via Portal Access Management |
| Prices | Public pricelist, promotions | A pricelist assigned per customer on the contact form |
Display Product Prices is set per website and defaults to Tax Excluded. If you genuinely need both behaviours, the clean option is two websites on one database (for example a retail shop and a trade portal), each with its own tax display, access rule and pricelists.
Pricelists can be tied to a website, restricted by country group, made selectable by the visitor, or applied with an E-commerce Promotional Code. A logged-in customer with their own pricelist sees their prices automatically.
Decide who the shop is for before you design it. The tax display, the login rule and the pricelists all follow from that one answer.
What to configure first
- Clean product data: names, images, eCommerce categories, HSN codes and taxes.
- Set tax display, customer accounts and shop access for your audience.
- Activate one payment provider in test mode, then live.
- Create two or three delivery methods by zone.
- Place test orders through to invoice and delivery, including a return.
- Later: abandoned-cart emails, product comparison, wishlists, merchant feeds, carrier connectors.
If your shop sells plans rather than one-off products, the next post covers subscriptions and recurring revenue in Odoo 19. For an end-to-end shop launch, including payments and GST, see our Odoo implementation service.
Questions we get asked
Is Odoo eCommerce free in the Community edition?
Yes. The Odoo 19 eCommerce module, website_sale, is LGPL and included in Community with the Website app. It covers the product catalogue, cart, checkout, customer accounts, pricelists, payment providers such as Razorpay and Stripe, and rule-based delivery methods. Some extras, including most carrier connectors such as Shiprocket and the website sales dashboard, require Enterprise.
How do I show prices including GST on an Odoo 19 website?
Open the Website settings and set Display Product Prices to Tax Included. The setting is per website and defaults to Tax Excluded. Your product taxes stay as they are; only the displayed price changes, so shoppers see the GST-inclusive amount they will pay. Check that every published product has the correct GST tax before switching.
Which payment gateways work with Odoo 19 in India?
Odoo 19 includes a Razorpay payment provider, a Community module that supports UPI and cards, which is the usual choice for Indian shops. Stripe, PayPal and other international providers are also available. You can add Wire Transfer and Cash On Delivery, the latter enabled per delivery method. Each provider needs your own merchant account and credentials.
Can one Odoo shop serve both B2B and B2C customers?
Partly. Pricelists assigned per customer give trade buyers their own prices on the same shop. However, tax display, shop access and sign-up rules are set per website, so B2B buyers wanting tax-excluded prices and consumers wanting tax-included prices cannot both be satisfied by one website. Running two websites on one Odoo database solves that.