Recurring Invoices & Contracts for Odoo 19 Community documentation
A guide to recurring invoices: contracts, the schedule, the invoices, pause and close, the price increase and access rights.
Documents version 1.0.0Updated Oct 23, 2026
Start here
In plain words: Hosting, support, rent, a licence: the same invoice every month, typed again by somebody who has to remember. Recurring Invoices & Contracts turns it into a contract: the lines, the period and the customer (or the vendor), and the invoice is created, posted and even sent on its date. You also see the monthly recurring revenue of all your contracts.
Tip: Missed a few periods because the contract was started late or the server was off? The scheduled action catches them up.
What you get
| Feature | What it does |
|---|---|
| Contracts | A partner, lines (product, quantity, price, discount, taxes) and a period: every n days, weeks, months or years. |
| Customer invoices and vendor bills | A contract creates either; a vendor contract is the rent or the internet bill. |
| Scheduled action | Creates the invoices that are due each day and catches up the missed periods. |
| Post and send | The invoices can be posted automatically and emailed to the customer. |
| Price increase | A percent applied to the prices every n months (12 for a yearly increase). |
| Control | Start, pause, resume, close, and create the invoice now. |
| Revenue | The amount of an invoice, per month and per year, with totals in the list. |
| Traceability | Each invoice shows its contract; the contract lists its invoices and keeps a log. |
| Arabic | Everything is translated and works right to left. |
Requirements
| Item | Details |
|---|---|
| Odoo | 19.0 (Community or Enterprise) |
| Apps needed | Invoicing (account) |
| License | OPL-1 (Odoo Proprietary License v1.0) |
Install
- Unzip the package. Inside is
taqnix_recurring_invoices.zip; unzip it to get the foldertaqnix_recurring_invoices. - Copy the folder into one of the
addons_pathfolders of your Odoo server and restart Odoo. - Log in as an administrator, activate Developer mode, open Apps and press Update Apps List.
- Remove the “Apps” filter, search Recurring Invoices & Contracts and press Install.
# or from the command line ./odoo-bin -c odoo.conf -d YOUR_DATABASE -i taqnix_recurring_invoices --stop-after-init
A contract
In plain words: Invoicing → Customers → Recurring invoices → New (or Vendors → Recurring bills). Choose the partner, the lines and the schedule, then press Start.
| Field | Meaning |
|---|---|
| Every | The period: for example 1 month, 3 months, 1 year. |
| Next invoice | The date of the next invoice; it moves on by one period at each invoice. |
| Ends on | After the last period the contract closes by itself. Empty: it goes on. |
| Post the invoices | Otherwise the invoices stay in draft for you to check. |
| Send the invoices by email | Customer invoices only, once posted, to the email of the partner. |
| Price increase | The percent and the number of months between two increases. |
The invoices
In plain words: Each period creates one invoice dated on the period, with the period in the description of the lines and the contract as origin. The Invoices button of the contract lists them.
Pause, close and the rest
| Button | What it does |
|---|---|
| Start | The contract runs from its start date. |
| Create the invoice now | Creates the next invoice immediately and moves the date. |
| Pause / Resume | No invoice while paused; when resumed, the missed periods are created. |
| Close | Ends the contract. |
| Back to draft | Reopens a closed contract. |
Who can do what
| Who | Can |
|---|---|
| Accounting readers | See the contracts. |
| Billing users | Create and run contracts. |
| Advisors | Also delete contracts. |
Arabic and right to left
Limits
| Limit | Detail |
|---|---|
| Fixed lines | A contract repeats the same lines; usage-based billing is not computed. |
| Company currency | Invoices are in the currency of the company. |
| Catch-up | Up to 24 missed periods are created per run. |
| The standard invoice email of Odoo is queued; its sending follows your outgoing mail settings. |
For developers
In plain words: Skip this chapter if you only use the module.
contract = env['taqnix.recurring.contract'].create({'partner_id': partner.id, 'start_date': '2026-01-01',
'line_ids': [(0, 0, {'product_id': product.id, 'quantity': 1, 'price_unit': 100})]})
contract.action_start(); contract._generate() # or wait for the scheduled actionTroubleshooting
| Problem | What to do |
|---|---|
| No invoice was created | The contract must be Running, with a next date on or before today. |
| “The invoice … could not be created: see the log” | Open the server log: a missing account, journal or tax is the usual cause. |
| The email is not sent | The partner needs an email, the invoices must be posted, and outgoing mail must be configured. |
| Too many invoices after a late start | Set the next date of the contract to the first date to invoice before starting. |
Updating and removing
Replace the folder with the new version, restart Odoo and run -u taqnix_recurring_invoices. Contracts and the invoices they created are kept.
Support
Installation help and bug fixes are included for 6 months, with lifetime updates. Contact us through the marketplace page where you bought the module or write to support@taqnix.com with your Odoo version and a screenshot.