This module adds support for French Letters of Change. This module supports:
- Direct letter of change (in French : Lettre de change directe or LCR directe),
- Accepted letter of change (in French : Lettre de change acceptée ; I call it paper letter of change),
- Promissory note (in French : Billet à ordre),
It supports cash discounts debit orders and Dailly convention.
This module has 2 main features:
- for Accepted Letter of Change, generate a paper letter of change as PDF following the official layout NF K 11-030-1.
- generate of LCR (or BOR) CFONB files to send to your bank.
This module follows the specifications published on the CFONB website, section Espace documentaire \> Instruments de paiement \> Effet de commerce (document version of September 2002).
auto_awesome What this module does
AI-generated from the code · Odoo 19.0Adds a French bill of exchange payment method (LCR, accepted letter of change, promissory note) to Odoo. Users can print the official paper letter of change PDF and generate the CFONB bank file to send to their bank.
This module adds a new inbound payment method called 'Lettre de Change Relevé' (code fr_lcr) that can be selected on customer invoices and on debit orders.
On a customer invoice, when this payment method is used, a 'Bill of Exchange Bank Account' field appears so you can choose which of the customer's French IBAN accounts will be debited. Odoo automatically pre-selects the first French IBAN found on the customer. When you post the invoice, Odoo checks that a bank account is set (for accepted and non-accepted letters of change) and that it is a valid French IBAN.
For accepted letters of change, a 'Print Bill of Exchange' button appears on the posted invoice. It generates a PDF following the official NF K 11-030-1 layout, filled with the invoice amount, dates, customer address, company address, RIB details and SIREN, and stores it as an attachment on the invoice.
On the payment method configuration, you set the bill of exchange type (non-accepted LCR, accepted letter, promissory note), the default collection option (due date, fixed delay, cash discount, value cash discount), and optionally the Dailly convention options and convention type.
On debit orders, these settings are pre-filled and can be adjusted while the order is in draft. When you confirm the order, Odoo requires a collection option, and for cash discount options it requires a future value date. Payment lines must be in EUR and use a valid French IBAN. The generated bank file is a 160-character-per-line CFONB text file with a header line, one line per payment, and a total line.
Depends on
Models and fields (6)
- account.move · extends an existing modelfr_lcr_attachment_id (Bill of Exchange Attachment), fr_lcr_attachment_name (Bill of Exchange Filename), fr_lcr_partner_bank_id (Bill of Exchange Bank Account), fr_lcr_attachment_datas (Bill of Exchange File), payment_method_line_fr_lcr_type
- account.payment · extends an existing model
- account.payment.line · extends an existing model
- account.payment.order · extends an existing modelfr_lcr_dailly (Dailly Convention), fr_lcr_value_date (Value Date), fr_lcr_dailly_option (Dailly Option), fr_lcr_collection_option (Collection Option)
- account.payment.method · extends an existing model
- account.payment.method.line · extends an existing modelfr_lcr_type (Bill of Exchange Type), fr_lcr_dailly (Dailly Convention), fr_lcr_convention_type (Convention Type), fr_lcr_default_dailly_option (Default Dailly Option), fr_lcr_default_collection_option (Default Collection Option)
Text generated by AI (DeepSeek) from reading the Odoo 19.0 code on GitHub; it may contain mistakes, so check the code before deciding. View the code on GitHub
Availability by version
Reviewed: 2026-11-03Confirmation status: 2 confirmed, 7 with no information of 9 versions.
Sources · Odoo 18.0
Confirmed on 2026-11-03 in branch 18.0 of OCA/l10n-france.
terminal Installation and usage
OCA documentation · Odoo 19.0Installation
Source · Odoo 19.0This module requires 2 Python libs:
- pypdf version 3.10 or above,
- unidecode (any version).
In order to have the SIREN of the company and of the customer set in the CFONB file (optional field) and printed on the paper letter of exchange, the OCA module l10n_fr_siret must be installed. The installation of the module l10n_fr_siret is optional (because the SIREN field in the CFONB file is optional).
Configuration
Source · Odoo 19.0To configure this module, you need to create a new payment mode linked to the payment method Lettre de Change Relevé that is automatically created when you install this module.
Once you selected this payment method, you will have a new section Bill of Exchange on the payment mode where you will have to configure:
- the LCR type: Lettre de change non acceptée (LCR directe), Lettre de change acceptée or Billet à ordre,
- the Default Collection Option,
- if you have a Dailly Convention,
- in case you have a Dailly convention, you will be able to configure the Default Dailly Option and the Convention Type.
Usage
Source · Odoo 19.0This module adds a new field Bill of Exchange Bank Account on customer invoices to select the bank account of the customer that will be debited by the letter of exchange. This bank account must be a french IBAN.
If you configured the payment mode for Accepted Letter of Change, you will have a button Print Bill of Exchange on customer invoices to get the letter of change as PDF.
This module uses the standard workflow of debit orders as implemented in the OCA module account_payment_batch_oca. A debit order linked to a payment mode with the payment method Lettre de change relevé has a few additionnal constraints:
- all payment lines must be in euro currency,
- the bank accounts on the payment lines must be french IBANs,
- if the payment order is configured with cash discount, you must configure the value date on the payment order (new field added by this module).
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.