Recurring billing is a classic: customers pay every month, and accounting sleeps soundly. But in 2025, more and more businesses are adding a usage-based layer: call minutes, GB of data, prints, kWh, scans, API calls, kilometers, car washes… In short, you invoice what the customer actually consumes. The goal of this article: to show how Odoo orchestrates this cleanly, with out-of-bundle management, integration of meters (OVH and others), and end-to-end automation.
Yes, modules & connectors already exist to automatically bring back monthly consumption: a typical case is telephony (OVH), but also printing, energy/IoT, SaaS, etc. You schedule a monthly (or daily) sync, aggregate, and presto, the variable lines land in the Odoo subscription. Depending on your version, a migration or adaptation may be needed: more on that below.
3 typical pricing models
- Fixed + overage
A monthly price + variable lines (e.g. €19.90 + €0.02/SMS, €2/GB).
Out-of-bundle usage handled by tiers, thresholds and caps (fair use), with clear rounding rules. - 100% usage-based (pay-as-you-go)
No fixed fee: the invoice reflects actual consumption.
Alert thresholds and caps to avoid surprises; any overage is charged at the agreed rate. - Prepaid with decrementing
The customer buys a pack (credits, minutes, pages), then it is decremented.
When it runs out: switch to out-of-bundle (standard rate), automatic top-up, or blocking — according to your rule.
Odoo architecture: the standard building blocks… and where to add value
- Subscriptions: offer templates, renewals, prorated invoicing if starting/stopping/upgrading mid-month (optional and explained to the customer).
- "Usage" products: unit prices, clear units of measure (GB, minute, page, kWh…).
- Usage collection: via API (connector), CSV import, IoT, or timesheets/helpdesk.
- Out-of-bundle: thresholds/fair use, tiers, caps, rounding and pricing rules, blocking or top-up scenarios.
- Automation: a scheduled job that consolidates the month's usage and adds the lines to the subscription.
- Invoicing & collection: automatic invoices, SEPA, online payments, gentle payment follow-ups.
- Monitoring: MRR, churn, ARPU, alerts on consumption thresholds, dashboards.
Application design (concrete recommendations)
- Robust identifiers: link each meter to a service ID (line number, IMEI, delivery point, API key).
- Billing window: normalize periods and time zones (clear cutoff: e.g. last day at 23:59:59).
- Rounding rules: up (telecom), down (printing), or banker's (energy) — documented.
- Tiers and UoM: lock units and rates (e.g. GB vs MB) to avoid conversion surprises.
- Log & anti-duplicates: hash of files/events, import journal, explicit rejections.
- Traceability: keep who, when, how much for each monthly aggregate (auditable).
- Tests: edge-case scenarios (pack exhausted, mid-month upgrade, volume discount, silent meter…).
Collecting usage data (connectors & migrations)
- Existing connectors: telephony (e.g. OVH), printing, IoT/energy, SaaS.
To plan depending on your context: Odoo 16/17/18 compatibility, dependencies, security, API quotas. - Module migration: audit (license, dependencies), ORM/views/security adaptation, regression tests, packaging.
- Alternatives: scheduled SFTP/CSV, webhook, event queue (RabbitMQ/Redis) → buffer → Odoo aggregator.
Auguria's advice: start with a collection POC on a sample (3 to 5 customers, 1 month). Validate the aggregation, rounding and out-of-bundle rules before scaling up.
Express example (telco-like, OVH)
- Product: "Mobile Pro Plan" (€19.90/month)
- Consumption: Data (€2/GB) + SMS (€0.02)
- Automation: at the end of each month, Odoo retrieves usage (API), calculates overages, applies your out-of-bundle rules, creates the invoice and collects payment.
Result: a clear invoice, a reassured customer and a calm finance department.
KPIs and dashboards (the ones that really move things forward)
- MRR (monthly recurring revenue): by offer, by segment, by channel.
- ARPU (average revenue per user): track the impact of overages and packs.
- Churn (cancellation rate): correlate with threshold alerts and invoice readability.
- Overage rate: # of customers exceeding their plan vs total; ideal for tuning the tiers.
- Prepaid penetration: share of customers on packs, top-up frequency.
- Cash-in: average collection time (SEPA/card), disputes, credit notes.
Points of attention (lessons learned)
- Poorly framed out-of-bundle usage: set caps and alerts (email/SMS) to avoid "painful invoices".
- Inconsistent units: lock the UoM (GB ≠ MB!) and test conversions.
- Misaligned windows: align the usage period and the billing period.
- Chatty connector: put in place anti-duplicates (hash/external ID + date) and controlled replays.
- Unexplained prorated invoicing: avoid jargon, explain in plain language the fraction of the month invoiced.
- Lack of auditability: source every variable line (proof of usage) — it's your best friend in case of a dispute.
Quick FAQ
Yes. We configure taxation by country and the tax-included/excluded display rules. Variable lines follow the same logic as the flat fee.
We audit, migrate or rebuild the adapter; in the meantime, we can secure things with a scheduled CSV flow.
Transparency + preventive alerts + configurable cap per customer. And readable invoices (rounding and tiers made explicit).
Conclusion
The monthly plan remains a safe bet — readable, predictable, reassuring. Usage-based billing brings accuracy and control. With Odoo, we combine both, without the out-of-bundle sting. If you invoice "by the meter", Odoo spares you convoluted Excel sheets… and your customers say thank you.
Want to see it applied to your business (telecom, energy, printing, logistics, SaaS, services)? We'll prepare a demo with your units, your rules — and your out-of-bundle management.