This module enables contracts management with recurring invoicing functions. Also you can print and send by email contract report.
It works for customer contract and supplier contracts.
Contracts are shown in portal.
auto_awesome What this module does
AI-generated from the code · Odoo 19.0Create customer and supplier contracts with recurring lines that automatically generate draft invoices on a schedule, and let customers view their contracts in the portal.
This module adds a full contracts area to Odoo for both customer and supplier agreements. Each contract has a reference, responsible user, partner, invoicing contact, payment terms, fiscal position, currency, tags and notes, and it can be created from a reusable contract template that copies its lines and settings.
Contract lines carry a product, quantity, price, discount, unit of measure and recurrence (daily, weekly, monthly, quarterly, semesterly or yearly, with an interval). You choose pre-paid or post-paid invoicing, and Odoo computes the next invoice date, the next period start and end, and a monthly recurring amount per line. Validation rules block inconsistent dates, such as a next invoice date before the line start, an end date before the last invoiced date, or a missing next invoice date.
A scheduled job generates the invoices for contracts whose next invoice date has arrived, creating customer invoices or supplier bills with the contract reference and origin. A button also lets you invoice a contract immediately, and a wizard can invoice several contracts at once. If a scheduled run fails for a contract, the error is stored on the contract, posted in the chatter and a to-do activity is created for the responsible user; it clears on the next successful run.
Contracts appear under Accounting menus for customers and suppliers, with a configuration menu for templates and tags. Partners show contract counters and a button to open their contracts. Users can print a contract report, send it by email, preview it in the portal, and follow a modification history that notifies the customer. Generated invoice lines keep a link to the contract line they came from.
Depends on
Required by other modules
Menus it adds
Models and fields (10)
- res.partner · extends an existing modelcontract_ids (Contracts), sale_contract_count (Sale Contracts), purchase_contract_count (Purchase Contracts)
- contract.tag · new modelname, color (Color Index), company_id (Company)
- contract.line · new modelactive (Active), sequence, partner_id, product_id, contract_id (Contract), currency_id, monthly_recurring, create_invoice_visibility
- account.move.line · extends an existing modelcontract_line_id (Contract Line)
- contract.contract · new modelcode (Reference), date, name, note (Notes), active, tag_ids (Tags), user_id (Responsible), date_end, group_id (Group), partner_id, currency_id (Currency), invoice_count, payment_term_id (Payment Terms), modification_ids (Modifications), contract_line_ids (Contract lines), fiscal_position_id (Fiscal Position), invoice_partner_id (Invoicing contact), manual_currency_id, contract_template_id (Contract Template), commercial_partner_id (Commercial Entity), contract_line_fixed_ids (Contract lines (fixed)), invoice_generation_error, create_invoice_visibility, invoice_generation_error_date
- contract.template · new modelname, company_id (Company), journal_id (Journal), partner_id (Partner), pricelist_id (Pricelist), contract_type, generation_type, line_recurrence (Recurrence at line level?), contract_line_ids (Contract template lines), pricelist_id_domain
- contract.modification · new modeldate, sent, contract_id (Contract), description
- contract.template.line · new modelname (Description), uom_id (Unit of Measure), discount (Discount (%)), quantity, sequence, company_id, date_start, partner_id, price_unit (Unit Price), product_id (Product), contract_id (Contract), currency_id, is_canceled (Canceled), display_type, price_subtotal (Sub Total), specific_price, allowed_uom_ids, automatic_price (Auto-price?), is_recurring_note (Recurring Note), recurring_interval, note_invoicing_mode, recurring_rule_type, recurring_invoicing_type
- contract.recurring.mixin · new modeldate_end, date_start, last_date_invoiced, recurring_interval (Invoice Every), recurring_next_date (Date of Next Invoice), recurring_rule_type (Recurrence), next_period_date_end (Next Period End), next_period_date_start (Next Period Start), recurring_invoicing_type (Invoicing type), recurring_invoicing_offset (Invoicing offset)
- contract.manually.create.invoice · new modelinvoice_date, contract_type, contract_to_invoice_ids, contract_to_invoice_count
Text generated by AI (DeepSeek) from reading the Odoo 19.0 code on GitHub; it may contain mistakes, so check the code before deciding. The module is very large and only part of the code was read. View the code on GitHub
Availability by version
Reviewed: 2026-11-03Confirmation status: 8 confirmed, 1 with no information of 9 versions.
Sources · Odoo 13.0
Confirmed on 2026-11-03 in branch 13.0 of OCA/contract.
terminal Installation and usage
OCA documentation · Odoo 19.0Configuration
Source · Odoo 19.0To view discount field in contract line, you need to set Discount on lines in user access rights.
Contracts can be viewed on the portal (list and detail) if the user logged into the portal is a follower of the contract.
Usage
Source · Odoo 19.0- Contracts are in Invoicing -\> Customers -\> Customer and Invoicing -\> Vendors -\> Supplier Contracts
- When creating a contract, fill fields for selecting the invoicing parameters:
- a journal
- a price list (optional)
- And add the lines to be invoiced with:
- the product with a description, a quantity and a price
- the recurrence parameters: interval (days, weeks, months, months last day or years), start date, date of next invoice (automatically computed, can be modified) and end date (optional)
- auto-price, for having a price automatically obtained from the price list
- #START# - #END# or #INVOICEMONTHNAME# in the description field to display the start/end date or the start month of the invoiced period in the invoice line description
- pre-paid (invoice at period start) or post-paid (invoice at start of next period)
- The "Generate Recurring Invoices from Contracts" cron runs daily to generate the invoices. If you are in debug mode, you can click on the invoice creation button.
- The Show recurring invoices shortcut on contracts shows all invoices created from the contract.
- The contract report can be printed from the Print menu
- The contract can be sent by email with the Send by Email button
- Contract templates can be created from the Configuration -\> Contracts -\> Contract Templates menu. They allow to define default journal, price list and lines when creating a contract. To use it, just select the template on the contract and fields will be filled automatically.
- Contracts appear in portal to following users in every contract:
No verified information in OCA: Installation.
Installation instructions, the distribution package, dependencies and configuration steps are not shown because they have not yet been verified in the module documentation for any version.
Data imported from GitHub: this sheet reflects the latest catalog review, not a live lookup. Always check the module documentation and staging before installing in production.