Skip to main content
Sales Contract and Recurring Invoices — A build-to-order Odoo module that turns signed sales contracts into automatically gen — 1/1Illustrative preview

A build-to-order Odoo module that turns signed sales contracts into automatically generated recurring invoices

on the billing cadence and terms each agreement defines.

ECOSIRE designs, builds, installs, and supports it for your Odoo 17/18/19 instance.

What is Sales Contract and Recurring Invoices?

A build-to-order Odoo module that turns signed sales contracts into automatically generated recurring invoices on the billing cadence and terms each agreement defines. ECOSIRE designs, builds, installs, and supports it for your Odoo 17/18/19 instance. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $999.00 USD; request a quote for a scoped proposal.

Key Features

Dedicated `sale.contract` model linked to `res.partner`, product/service lines, billing frequency, start/end dates, and per-contract invoicing policy
Scheduled `ir.cron` automated action that scans active contracts daily and generates the due `account.move` invoices with no manual trigger
Configurable billing cadence per contract — monthly, quarterly, annual, or a custom day/month interval
`@api.depends` compute fields for `next_invoice_date`, `last_invoice_date`, and remaining-term so schedules stay correct after edits
Contract lifecycle states (`draft`, `running`, `paused`, `closed`) with server-side guards so paused or closed contracts never bill
Choice of draft-only generation or auto-post per contract, so finance keeps control where policy requires review
Full traceability: every generated invoice carries an `origin`/reference back to its source contract for revenue reconciliation
Auto-renew flag with configurable renewal interval and optional price escalation on renewal
Access control via `ir.model.access.csv` plus record rules (e.g. salesperson sees own contracts, accounting sees all)
QWeb report templates for a printable contract document and a per-contract billing schedule
List, form, and kanban views with filters/group-by on state, next invoice date, customer, and salesperson for pipeline visibility
Generated invoices are standard `account.move` records, so native tax, multi-currency, payment terms, and fiscal localization all apply
Optional prorated first/last period calculation for mid-cycle contract starts and terminations
XML-RPC/JSON-RPC API exposure so CRM, e-signature, or provisioning systems can create and read contracts programmatically

Built to order, done for you

No DIY setup — a working app, built, installed and supported by ECOSIRE.

  1. 1

    You order

    Start with a one-time build price. We scope it with you at kickoff.

  2. 2

    We build & install

    ECOSIRE builds, configures and installs it on your Odoo.

  3. 3

    Go live + support

    You go live in about one working week, with two weeks of go-live support. Defects in the code we deliver are fixed free of charge.

Technical Specifications

Odoo Compatibility
Odoo 17, Odoo 18, Odoo 19
Editions
Enterprise & Community
License
Licence confirmation required
Python Requirement
Python 3.10+
Database
PostgreSQL 12+

About this Product

Teams that bill the same customers on a repeating cadence — retainers, service agreements, maintenance contracts, memberships, equipment leases — usually end up managing invoices by hand or with a spreadsheet reminder. Odoo core gives you subscriptions only in the Enterprise edition, and even there the object model is a subscription plan, not a negotiated commercial contract with signed terms, escalation clauses, tiered price lines, and per-contract billing rules. On Community you have no recurring-billing engine at all beyond manually duplicating invoices. The result is missed billing runs, revenue that leaks when a cadence is forgotten, and finance chasing which contract a given invoice actually belongs to. This is exactly the gap where Odoo native runs out of road for contract-driven recurring revenue.

ECOSIRE builds a dedicated sale.contract model (technical naming finalized during scoping to avoid clashes) that links to res.partner, one or more product/service lines, a billing frequency (monthly, quarterly, annual, or a custom interval), a start date, an optional end date or auto-renew flag, and the invoicing policy that governs it. A scheduled automated action — an ir.cron job running a Python method — walks active contracts each day, computes the next_invoice_date via @api.depends compute fields, and generates the corresponding account.move (customer invoice) draft or posts it, according to the rule you choose per contract. Each generated invoice carries an origin/reference back to its contract so finance can trace revenue end to end, and contract state (draft, running, paused, closed) is enforced so a paused agreement never bills. We wire access control through ir.model.access.csv plus record rules so, for example, a sales user sees only their own contracts while accounting sees all, and we ship QWeb report templates for a printable contract document and a billing schedule.

Because it is built as a proper Odoo module — its own __manifest__.py, models, security, views (list/form/kanban in XML, with OWL components only where an interactive widget genuinely helps), and QWeb reports — it upgrades cleanly and integrates with the standard Accounting and Sales apps rather than bolting on beside them. Generated invoices are ordinary account.move records, so tax computation, multi-currency, payment terms, follow-ups, and your fiscal localization all keep working. Where you need external systems to create or read contracts, we expose the model over Odoo's XML-RPC/JSON-RPC API so a CRM, e-signature tool, or provisioning system can drive billing programmatically. The build targets your exact edition and version, and we account for Community-vs-Enterprise differences (for instance, whether we lean on native subscription primitives on Enterprise or implement the full recurrence engine on Community).

Delivery is build-to-order: nothing is downloaded and switched on today. After a short scoping call we confirm the contract fields, billing rules, invoice-posting policy, and any integrations you need, then hand back a fixed quote and timeline. Typical delivery is one working week from confirmed scope, ending with UAT on a staging copy of your database, a rollback plan, production install, documentation, and training. Pricing starts from $999 (indicative, single-company base scope); multi-company billing, deeper fiscal-localization requirements, extra integrations (e-signature, CRM, payment automation), and migration of existing contracts and open recurring schedules increase the quoted scope.

What you get

  • Installable source code for the module built to your exact Odoo edition and version (17.0, 18.0, or 19.0)
  • Production installation plus configuration of billing rules, cadences, cron scheduling, and access rights on your instance
  • Technical documentation covering the data model, cron logic, security rules, and integration points
  • End-user guide plus a live training session for your sales and accounting teams
  • UAT on a staging copy of your database with a documented rollback plan before go-live
  • Post-go-live support window for defect fixes and questions
  • Git repository handover with full commit history and tagged release
  • Optional data migration of existing contracts and open recurring schedules (scoped separately when required)

Who this is for

Finance / Accounting Manager

Owns the billing cycle and wants recurring invoices generated on time, posted under a clear policy, and traceable back to each signed contract so month-end reconciliation stops relying on spreadsheets and memory.

Operations lead at a service or subscription business

Runs retainers, maintenance agreements, or memberships and needs contracts, renewals, and pauses managed inside Odoo so billing reflects the real commercial agreement without manual duplication.

Odoo administrator / internal IT

Maintains the Odoo instance and wants a properly structured module — its own manifest, security, and views — that upgrades cleanly across versions and exposes an API instead of ad-hoc customizations bolted onto core.

CFO / Business owner on Odoo Community

Has no native recurring-billing engine on Community and wants contract-driven invoicing without paying to move the whole business to Enterprise just for one capability.

How Sales Contract and Recurring Invoices Compares

CriterionECOSIRECustom BuildCompetitorOdoo Native
Fit to your billing rulesBuilt to your exact cadence, escalation, and posting policyFully bespoke but you specify and manage everythingFixed feature set; you adapt to its assumptionsEnterprise subscriptions only; Community has none
Odoo version supportBuilt for your 17.0 / 18.0 / 19.0 targetWhatever you build and maintainDepends on vendor's release cadenceFollows core release
Contract traceabilityEvery invoice references its source contractOnly if you design it inVaries; often plan-based not contract-basedSubscription-linked on Enterprise; none on Community
AutomationScheduled `ir.cron` generates due invoices unattendedYou build the cron and edge casesUsually automated within its own modelManual duplication on Community
Source code & ownershipFull source and git repo handed overYou own it by definitionOften encrypted or licensed, not ownedCore code, not yours to alter safely
Delivery modelBuild-to-order, one working week, UAT + rollbackYour own timeline and teamInstant download but genericAlready present but limited
Support after go-liveIncluded support window + optional upgradesYour team maintains itVendor ticket queue, variable SLACommunity forums / your own admin
Total cost profileFrom $999 indicative, fixed quote after scopingHighest — full dev cost and riskLow sticker price, hidden fit gapsIncluded, but Enterprise licensing for subscriptions

Frequently Asked Questions about Sales Contract and Recurring Invoices

Is this something I can download and install today?

No. This is a build-to-order module. ECOSIRE designs, builds, installs, and supports it for your specific Odoo instance after you request a quotation. It is not an existing marketplace download that is live right now.

How long does delivery take?

Typical delivery is one working week from confirmed scope. After the scoping call we agree the contract fields, billing rules, and integrations, then give you a fixed timeline. Larger scope — multi-company, migrations, or several integrations — can extend that, and we tell you before you commit.

How does pricing and scoping work?

Pricing starts from $999 as an indicative figure for a single-company base scope. We hold a short scoping call, confirm exactly what you need, then send a fixed quote and timeline. You approve the fixed quote before any build work begins — the from-price is a starting point, not a final number.

Does it work on Odoo Community or only Enterprise?

We build for your edition. On Community, where there is no native recurring-billing engine, we implement the full recurrence and invoice-generation logic in the module. On Enterprise we can align with native subscription primitives where that is cleaner. It supports Odoo 17.0, 18.0, and 19.0.

What about support and updates after go-live?

Every build includes a post-go-live support window for defect fixes and questions. Because you receive the full source and git repository, you own the code. We also offer ongoing support and version-upgrade engagements separately if you want us to maintain it across future Odoo releases.

Will the generated invoices behave like normal Odoo invoices?

Yes. Invoices are standard `account.move` records, so native tax computation, multi-currency, payment terms, follow-up reminders, and your fiscal localization all apply. Each invoice also references its source contract so finance can trace revenue back to the agreement.

Can it connect to our other systems?

Yes. The contract model is exposed over Odoo's XML-RPC/JSON-RPC API, so an external CRM, e-signature tool, or provisioning system can create contracts and read their billing status. Specific integrations are confirmed and quoted during scoping.

Request a quote

Sales Contract and Recurring Invoices

A build-to-order Odoo module that turns signed sales contracts into automatically generated recurring invoices on the billing cadence and terms each agreement defines. ECOSIRE designs, builds, installs, and supports it for your Odoo 17/18/19 instance.

  • Dedicated `sale.contract` model linked to `res.partner`, product/service lines, billing frequency, start/end dates, and per-contract invoicing policy
  • Scheduled `ir.cron` automated action that scans active contracts daily and generates the due `account.move` invoices with no manual trigger
  • Configurable billing cadence per contract — monthly, quarterly, annual, or a custom day/month interval
  • `@api.depends` compute fields for `next_invoice_date`, `last_invoice_date`, and remaining-term so schedules stay correct after edits

Request a Quotation

Tell us about your Sales Contract and Recurring Invoices requirements and we'll send pricing, licensing options and a tailored proposal — usually within one business day.

No payment now. This sends a quote request to our team — we'll follow up by email with pricing and next steps.