Skip to content
DevMarket
Odoo ModulesWordPress PluginsWordPress ThemesShopify ThemesApp TemplatesScripts & UtilitiesBlogSell on DevMarket

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.
The contracts, one contract and the invoices it created.
The contracts, one contract and the invoices it created.
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

FeatureWhat it does
ContractsA partner, lines (product, quantity, price, discount, taxes) and a period: every n days, weeks, months or years.
Customer invoices and vendor billsA contract creates either; a vendor contract is the rent or the internet bill.
Scheduled actionCreates the invoices that are due each day and catches up the missed periods.
Post and sendThe invoices can be posted automatically and emailed to the customer.
Price increaseA percent applied to the prices every n months (12 for a yearly increase).
ControlStart, pause, resume, close, and create the invoice now.
RevenueThe amount of an invoice, per month and per year, with totals in the list.
TraceabilityEach invoice shows its contract; the contract lists its invoices and keeps a log.
ArabicEverything is translated and works right to left.

Requirements

ItemDetails
Odoo19.0 (Community or Enterprise)
Apps neededInvoicing (account)
LicenseOPL-1 (Odoo Proprietary License v1.0)

Install

  1. Unzip the package. Inside is taqnix_recurring_invoices.zip; unzip it to get the folder taqnix_recurring_invoices.
  2. Copy the folder into one of the addons_path folders of your Odoo server and restart Odoo.
  3. Log in as an administrator, activate Developer mode, open Apps and press Update Apps List.
  4. 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.
The contracts with their monthly and yearly recurring revenue.
The contracts with their monthly and yearly recurring revenue.
A running contract: schedule, price increase, recurring amounts and the log of the invoices.
A running contract: schedule, price increase, recurring amounts and the log of the invoices.
FieldMeaning
EveryThe period: for example 1 month, 3 months, 1 year.
Next invoiceThe date of the next invoice; it moves on by one period at each invoice.
Ends onAfter the last period the contract closes by itself. Empty: it goes on.
Post the invoicesOtherwise the invoices stay in draft for you to check.
Send the invoices by emailCustomer invoices only, once posted, to the email of the partner.
Price increaseThe 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.
The invoices of a contract.
The invoices of a contract.
An invoice created by a contract: the period is in the description.
An invoice created by a contract: the period is in the description.
The vendor contracts: rent and internet.
The vendor contracts: rent and internet.

Pause, close and the rest

A paused contract: the scheduled action skips it.
A paused contract: the scheduled action skips it.
ButtonWhat it does
StartThe contract runs from its start date.
Create the invoice nowCreates the next invoice immediately and moves the date.
Pause / ResumeNo invoice while paused; when resumed, the missed periods are created.
CloseEnds the contract.
Back to draftReopens a closed contract.
A yearly contract: 4 licences a year, 1,200 per month recurring.
A yearly contract: 4 licences a year, 1,200 per month recurring.

Who can do what

WhoCan
Accounting readersSee the contracts.
Billing usersCreate and run contracts.
AdvisorsAlso delete contracts.

Arabic and right to left

The contracts in an Arabic interface.
The contracts in an Arabic interface.

Limits

LimitDetail
Fixed linesA contract repeats the same lines; usage-based billing is not computed.
Company currencyInvoices are in the currency of the company.
Catch-upUp to 24 missed periods are created per run.
EmailThe 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 action

Troubleshooting

ProblemWhat to do
No invoice was createdThe 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 sentThe partner needs an email, the invoices must be posted, and outgoing mail must be configured.
Too many invoices after a late startSet 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.