Odoo Subscriptions turns a sales order into a recurring contract — automatic renewal, automatic invoicing, prorated upgrades and downgrades, and a live MRR/churn dashboard sitting on top of the same database as your accounting. What it doesn’t do out of the box: metered usage on top of a flat plan, multi-currency billing that doesn’t drift, and revenue recognition that actually matches what your accountant needs to close the month. That’s the part we build.
Subscription contracts live in the same database as Sales, Invoicing and Accounting — a renewal isn’t a separate system pretending to talk to your ERP, it’s a sales order that repeats itself on schedule.
Define pricing per plan — monthly, quarterly, annual, or custom periods — with per-product recurring prices and automatic tax application at each cycle.
Contracts renew and invoice themselves on the scheduled date with no manual trigger. Renewal quotations, invoice generation and payment collection all run on cron, not on someone remembering.
Mid-cycle plan changes prorate automatically — the customer is credited or charged the difference for the remaining period, calculated against the existing invoice cycle rather than restarting it.
Native reporting breaks down MRR into new, expansion, contraction and churned revenue, with cohort and forecast views — the numbers a SaaS or services business actually needs to run the board meeting.
Failed automatic payments trigger a configurable retry schedule and reminder emails before a contract is flagged “to renew” or closed — the mechanism exists natively, tuning the sequence is where most installs stop short.
Customers can view active plans, upgrade or downgrade, update payment methods and see invoice history from the portal — without a support ticket for every plan change.
Odoo ships with Stripe, PayPal and Adyen connectors for automatic recurring payments. Regional gateways — especially in India — usually need the tokenised-mandate flow wired in by hand.
If your payment provider isn’t on Odoo’s default connector list, tell us which one — tokenised recurring-charge APIs follow a similar shape across gateways, and we’ve likely built something close already.
Usage counters (API calls, seats, transactions, whatever your product meters) recorded against the contract and billed on top of the flat plan at cycle close — built as server actions since Odoo’s native model is flat-fee first.
Custom retry cadence, reminder copy and grace-period logic before a failed-payment contract gets suspended — matched to your actual tolerance for chasing customers, not the default one-size schedule.
Tokenised mandate setup for Indian UPI Autopay and e-NACH, alongside Stripe for international customers — so one subscription engine can bill both markets correctly.
Pricing and invoicing per customer currency with exchange-rate handling that doesn’t silently drift between renewal cycles.
Recurring invoice schedules mapped to deferred-revenue accounting entries, so what the MRR dashboard shows and what the P&L recognises actually agree.
Plan comparison, add-on selection and usage visibility added to the customer portal beyond the default upgrade/downgrade/cancel options.
The scenario below is a representative pattern we design for — not a specific client engagement.
A subscription business runs flat monthly plans in Odoo, plus a per-seat add-on tracked in a separate spreadsheet because the native plan model doesn’t bill variable usage. Every month, finance manually adjusts invoices to add the seat overage, and the MRR dashboard shows a number nobody trusts because it only reflects the flat-fee portion.
The fix is a metered-usage layer bolted onto the existing subscription model: seat count recorded against the contract, billed automatically at cycle close, and rolled into the same MRR reporting. The spreadsheet disappears; the dashboard number becomes the number finance actually uses.
Tell us your plan structure, payment gateway and whatever’s currently tracked outside Odoo. We’ll scope a fixed-price configuration — billing, dunning, currency and reconciliation included.