This module provides electronic invoicing for Mexico:
- Generation of electronic invoices compliant with the CFDI 4.0 standard.
- Customization of fiscal documents according to user needs.
- Centralized management of electronic invoices within Odoo.
- Tracking and recording of issued and received fiscal documents.
auto_awesome What this module does
AI-generated from the code · Odoo 19.0Generates and manages Mexican CFDI 4.0 electronic invoices, credit notes and payment receipts directly from Odoo invoices and payments, including cancellation and bulk download of fiscal files.
This module connects Odoo accounting with the Mexican SAT electronic invoicing system (CFDI 4.0). On customer invoices (account.move) you get a CFDI tab where you set the issuer, receiver, CFDI use, payment method and payment form. A button generates the stamped CFDI; the XML and PDF are attached to the invoice and posted in the chatter.
- If the company option "Create CFDI on post" is enabled, the CFDI is created automatically when an invoice is confirmed.
- Credit notes (refunds) can generate type "E" CFDIs; they must be reconciled with the original invoice or have related CFDIs and a relation type set.
- Customer payments can generate type "P" payment receipts, automatically when the payment is fully reconciled and the invoice uses PPD payment method.
- A wizard "Crear CFDI al Público en General" creates a generic public invoice.
- A wizard "Cancelar CFDI" cancels stamped documents with a cancellation reason and optional replacement.
- A wizard "Descargar CFDIs" downloads a ZIP of selected invoice CFDI files.
- Addenda templates can be attached to partners and are appended to the stamped XML.
- Invoice lines show CFDI-specific unit price, subtotal and discount values.
- Validation blocks CFDI generation when issuer, receiver RFC, tax regime, zip, CFDI use, payment method/form, product code or unit of measure are missing.
- The invoice report is replaced by a CFDI-specific layout for Mexican companies.
Depends on
Required by other modules
Models and fields (14)
- ir.ui.view · extends an existing modell10n_mx_edi_addenda_flag (Is an addenda?)
- account.tax · extends an existing model
- res.partner · extends an existing modell10n_mx_edi_addenda (Addenda), l10n_mx_edi_addenda_doc (Addenda Documentation), l10n_mx_edi_addenda_name, l10n_mx_edi_addenda_is_readonly
- account.move · extends an existing modelissuer_id (Emisor), cfdi_posted (CFDI Posted), cfdi_use_id (Uso de CFDI), receiver_id (Receptor), cfdi_required (Requiere CFDI), payment_form_id (Forma de pago), cfdi_document_id (CFDI), related_cert_ids (Documentos), l10n_mx_cfdi_auto (CFDI Automatico), payment_method_id (Método de pago), cfdi_document_name (Folio CFDI), cfdi_document_state (CFDI Status), l10n_mx_cfdi_enabled (CFDI Habilitado), cfdi_document_relations (Related CFDIs), cfdi_data_in_attachments (CFDI data in attachments), cfdi_document_relation_type (Relation Type)
- account.payment · extends an existing modelcfdi_use_id (Uso de CFDI), payment_form_id (Forma de pago), cfdi_document_id (CFDI), related_cert_ids (Documentos), l10n_mx_cfdi_auto (CFDI Automatico), cfdi_document_state (CFDI Status), l10n_mx_cfdi_enabled (CFDI Habilitado)
- account.move.line · extends an existing modelcfdi_discount, cfdi_subtotal, cfdi_price_unit
- res.config.settings · extends an existing modell10n_mx_cfdi_auto (Create CFDI on post)
- account.move.reversal · extends an existing model
- l10n_mx_cfdi.document · extends an existing modelrelated_invoice_id (Factura relacionada), related_payment_id (Pago relacionado)
- account.payment.register · extends an existing modelpayment_form_id (Forma de Pago)
- account.partial.reconcile · extends an existing model
- l10n_mx_cfdi_account.document_cancel · new modelsingle_cancel, certificate_ids (Certificados), cancel_reason_id (Razón), related_invoices (Facturas Relacionadas), simulate_operation, requires_replacement, replacement_certificate_id (Reemplazo)
- l10n_mx_cfdi_account.dl_cfdi_files_wizard · new modelzip_file, invoice_ids (Facturas), cfdi_document_ids (CFDI Documents)
- l10n_mx_cfdi_account.generic_invoice_create · new modeldate (Fecha), year (Año), meses_id (Mes), move_ids (Facturas), issuer_id (Emisor), cfdi_use_id (Uso de CFDI), periodicity_id (Periodicity), payment_form_id (Forma de Pago), fiscal_regime_id (Régimen Fiscal), payment_method_id (Metodo de Pago)
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: 2 confirmed, 7 with no information of 9 versions.
Sources · Odoo 19.0
Confirmed on 2026-11-03 in branch 19.0 of OCA/l10n-mexico.
terminal Installation and usage
OCA documentation · Odoo 19.0Installation
Source · Odoo 19.0Prior to using this module, create a PAC account with one of the supported PACs and complete the PAC connection steps in l10n_mx_cfdi Configuration (CFDI > PAC Settings, issuers / Registrar, series as needed).
Usage
Source · Odoo 19.0Use this module after the PAC connection, issuers, and series are configured in l10n_mx_cfdi (see that module's Configuration).
Customers
- In the Invoicing app, go to Customers > Customers.
- Create or open a customer with the correct VAT (RFC) and fiscal name.
- On the CFDI tab, set:
- Fiscal regime
- Default CFDI usage
- Default payment method
- Default payment form
Products
- Go to Customers > Products (or open a product from Inventory).
- Open an existing product or create a new one and enter the general information.
- On the CFDI tab, set the SAT product code and unit of measure.
Invoices
- Go to Customers > Invoices and create a new record.
- Select the customer. The fiscal data on the partner CFDI tab is required for stamping.
- Add products that have a SAT product code.
- Open the CFDI tab and set the payment method and payment form.
- Confirm the invoice; it is stamped with the Mexican authority through the configured PAC.
- Use Send to deliver the invoice to the customer.
Import CFDI
- Attach the vendor bill XML file in the chatter.
- Click the Load from file button.
Payments
If the invoice payment method is PPD, the payment is included in the CFDI lines when you register a payment.
No verified information in OCA: Configuration.
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.