HADOOPT
TECHNOLOGIES
Schedule a Tech Consultation
Home
Services
Odoo ERP implementation Rollout, custom modules, migration and support. Web application development SaaS products, portals and internal platforms. Mobile application development Offline-first field apps and customer apps. AI development & automation LLM assistants, document processing, forecasting. Odoo version upgrades ↗ Move to a newer release, scoped and priced on its own site.
Products
OrgExp ↗ Budget, CAPEX and OPEX management.
Blog About Contact Schedule a Tech Consultation
Blog / Odoo 19: Complete Guide for Businesses
Odoo 19 6 min read

Odoo 19 Subscriptions: recurring plans, renewals and MRR

How Odoo 19 Subscriptions works: recurring plans, automatic invoicing and payment, renewals and upsells, close reasons, and MRR and churn reporting.

· ERP practice 22 Sep 2026

Odoo 19 Subscriptions is an Enterprise-only app (sale_subscription, OEEL-1) that turns a sales order into a recurring contract. A daily scheduled action raises each period's invoice and, where the customer has saved a payment method, charges it. Renewals, upsells and cancellations are tracked as MRR events. Set up your recurring plans and subscription products first; the reporting only makes sense if those are clean.

This is part 11 of our Odoo 19 guide. A subscription is a sales order underneath, so the quotation and product setup from part 7 and part 8 applies here too.

How subscriptions work in Odoo 19

There is no separate contract object. A subscription is a sale.order with a Recurring Plan and at least one subscription product. It moves through its own subscription states: Quotation, In Progress, Paused, Renewal Quotation, Renewed, Upsell and Churned. Because it is still a sales order, templates, pricelists, taxes, online signature and online payment all work as they do in Sales.

The app has its own menu: Subscriptions › Subscriptions (with Quotations, To Renew and Upsells views), Products, Reporting and Configuration. The customer portal shows each subscription with its invoices. Depending on the plan, customers can also renew, add products, pause or close from the portal.

Subscriptions › Configuration
  Settings              Consolidate subscriptions billing
  Recurring Plans       Monthly · Yearly  (defaults)
  Quotation Templates   template → Recurring Plan
  Close Reasons         retention message + button
Configuration menu of the Subscriptions app.

Recurring plans and subscription products

A Recurring Plan defines the billing period: a number and a unit of Weeks, Months or Years. So "every 3 months" is one plan, not a workaround. Monthly and Yearly exist by default. Each plan also sets:

  • Align to Period Start: bill everyone on the first day of the period rather than on each start date.
  • Automatic Closing: how many days an overdue subscription is kept before it is closed. The default is 15.
  • Self-service options: Closable (at a date or at the end of the period), Renew, Add Products, Pausable, and Optional Plans the customer may switch to.
  • The invoice email template used for recurring invoices.

On the product, tick Subscription Product and fill the Recurring Pricing table with one price per plan, for example a monthly price and a discounted yearly price. Accept One-Time lets the same product also be sold outright. Prorated Price controls whether partial periods (upsells mid-term, or calendar alignment) are charged pro rata.

Recurring invoicing and automatic payment

Each subscription has a next invoice date. A scheduled action (generate recurring invoices and payments) runs daily. It creates the invoice for every subscription due that day and, if a payment token is saved on the subscription, charges it through the payment provider. Without a token, the invoice goes out by email, and a separate reminder job nudges customers with no saved payment method.

Invoicing follows the product's invoicing policy. Lines on ordered quantities are billed in advance for the coming period (prepaid). Lines on delivered quantities are billed for what was delivered during the period (postpaid), which suits metered usage. The Consolidate subscriptions billing setting puts all of a customer's subscriptions due on the same day onto one invoice.

For Indian businesses, every recurring invoice is a normal GST invoice, with the usual HSN/SAC codes and place-of-supply logic. Recurring card and UPI debits are also subject to RBI's e-mandate rules. Confirm with your payment provider how tokenised auto-debit works for your customers before you promise "automatic payment" in the contract.

Renewals, upsells and closing a subscription

An upsell is a quotation linked to a running subscription, used to add products or quantities mid-term. It is priced pro rata to the next invoice date where prorating is on. Confirming it adds the lines to the parent subscription and the upsell itself is invoiced for the rest of the current period, so the customer keeps one contract and one billing date.

A renewal is a new quotation for the next term, typically at new prices or on a new plan. Once it is confirmed, the original subscription is marked Renewed and the new order carries the contract forward, keeping the link to the first contract for reporting. Subscriptions due soon show up under To Renew.

Closing asks for a close reason. Odoo ships reasons such as "Subscription is too expensive" and "I don't use it", plus protected system reasons for automatic closure and unpaid subscriptions. A close reason can carry a retention message and a button that the customer sees on the portal before confirming. Use it for "talk to us first" or "switch to the yearly plan" rather than letting self-service cancellation be one click.

Name the churn before you chase it. A close-reason list you actually maintain is worth more than any dashboard.

MRR and churn reporting

Every subscription carries its MRR, its recurring amount normalised to a month. Each change is logged as an event: New, Expansion, Contraction, Churn or Transfer. The Reporting menu has four views:

ReportAnswers
SubscriptionsWhat is running now, by plan, product, salesperson or customer
RetentionCohort view: of the subscriptions started in a period, how many are still active
MRR BreakdownHow MRR moved: new, expansion, contraction, churn
MRR TimelineMRR over time

These figures are only as good as the data behind them. If you migrate live contracts from spreadsheets, Tally or another billing tool, import them with their real start dates and next invoice dates. Otherwise every legacy customer shows as "New" MRR in the month you went live, which ruins the first year of growth charts.

A sensible rollout order

  1. Agree the plans you will actually sell (period, alignment, self-service rights).
  2. Create or convert subscription products with recurring prices per plan.
  3. Connect a payment provider that supports saved payment methods, and test a token charge.
  4. Rewrite close reasons and retention messages.
  5. Migrate live contracts with correct start and next invoice dates; reconcile the first MRR report against your old numbers.
  6. Turn on customer self-service (renew, pause, close) only after the first billing cycle runs cleanly.

That closes the sales section of the series. Next we move into operations, starting with inventory and warehouse management. If you are moving recurring billing into Odoo and want the migration planned properly, talk to us.

Questions we get asked

Is Odoo Subscriptions available in Community edition?

No. The Odoo 19 Subscriptions app, module sale_subscription, is licensed OEEL-1 and only available with Odoo Enterprise, including Odoo Online and Odoo.sh. Community users can record recurring revenue on CRM opportunities or create invoices manually, but automatic recurring invoicing, renewals, upsells and MRR reporting need the Enterprise Subscriptions app.

How does Odoo 19 generate recurring invoices?

Each subscription has a next invoice date. A scheduled action runs daily, creates invoices for all subscriptions due that day, and charges the saved payment token if there is one. Without a token, the invoice is emailed for manual payment. Lines on ordered quantities are billed in advance; lines on delivered quantities are billed after the period for actual usage.

How is MRR calculated in Odoo Subscriptions?

Odoo computes MRR on each subscription by converting its recurring amount to a monthly figure according to its plan, so a yearly plan contributes one twelfth each month. Changes are logged as New, Expansion, Contraction, Churn or Transfer events, which feed the MRR Breakdown and MRR Timeline reports under Subscriptions › Reporting.

What happens when a subscription payment fails in Odoo 19?

The subscription stays open while it is overdue, and customers without a working payment method receive reminders. If it remains unpaid beyond the plan's Automatic Closing period, 15 days by default, Odoo closes it automatically with a system close reason and it is counted as churn. You can reopen a churned subscription if the customer pays.

← Previous Setting up an online shop with Odoo 19 eCommerce Next → Inventory and warehouse management in Odoo 19
Keep reading
Odoo 19 Getting started with Odoo 19: what changed and where to begin 6 min read Odoo 19 Installing Odoo 19 from source, Docker or packages 7 min read Odoo 19 Odoo 19 hosting: Odoo Online vs Odoo.sh vs on-premise 6 min read