OdooWiki OCA HUB

Mexico foreign trade invoicing compliance

l10n_mx_cfdi_comex folder_open OCA/l10n-mexico open_in_new
Localization License: GPL-3

This module adds Mexican foreign trade (COMEX) compliance on top of CFDI invoicing.

Features

  • Pedimento management linked to inventory lots (import path)
  • Tariff code (fracción arancelaria) on products
  • Import details on invoice lines for Mexican companies
  • Pedimento numbers in CFDI concept InformacionAduanera / NumerosPedimento
  • Pedimento propagation from landed costs to lots
  • Complemento Comercio Exterior 2.0 on customer invoices: Exportacion=02 plus satcfdi cce20.ComercioExterior (Emisor/Receptor/ Destinatario domicilios, mercancías, TipoCambioUSD, TotalUSD)
  • Reuses the standard invoice Incoterm field (invoice_incoterm_id / account.incoterms) for SAT c_INCOTERM; no duplicate Incoterm field

PAC notes

  • Stamp / XML-issue PACs can stamp sealed CFDIs that include CCE.
  • Facturama Multiemisor cannot map CCE; l10n_mx_cfdi switches to FacturamaWeb when the complement is present.

auto_awesome What this module does

AI-generated from the code · Odoo 19.0

Adds Mexican foreign trade (COMEX) compliance to Odoo: manage customs pedimentos, link them to lots and landed costs, set tariff codes on products, and issue CFDI invoices with the Comercio Exterior 2.0 complement.

This module helps Mexican companies that export or import goods comply with SAT foreign trade rules. It adds a new "Pedimentos" menu under Inventory > Operations where you register customs declarations (pedimento number, customs office, date). Each pedimento number must follow the official format (e.g. 15 48 3009 0001234) and cannot be duplicated.

On products you can set a Tariff Code (fracción arancelaria) from the SAT catalog. On inventory lots you can assign a pedimento, and when you validate a landed cost that has a pedimento, it is automatically copied to the lots of the related receipts.

On customer invoices and credit notes a new "COMEX / CCE" tab appears. Tick "Comercio Exterior (CCE)" to enable the complement; Odoo then requires a pedimento key, an Incoterm, a USD exchange rate, at least one product line with a USD value, and a tariff code on each product. It also checks that issuer and receptor addresses are complete. Invoice lines gain extra columns for customs quantity, unit, unit value and USD value. The total in USD is computed automatically from the lines. When the complement is enabled, the invoice is stamped with Exportacion=02 and the Comercio Exterior 2.0 data. For invoices without CCE, pedimento numbers linked through lots are added to the CFDI concept as InformacionAduanera.

Depends on

baseaccountsalesale_stockstock_landed_costsl10n_mx_cfdi_accountl10n_mx_catalogs_comex

Menus it adds

Pedimentos
Models and fields (6)
  • stock.lot · extends an existing modell10n_mx_cfdi_pedimento_id (Pedimento)
  • account.move · extends an existing modell10n_mx_cfdi_cce_enabled (Comercio Exterior (CCE)), l10n_mx_cfdi_cce_total_usd (Total USD), l10n_mx_cfdi_cce_observaciones (Observaciones CCE), l10n_mx_cfdi_cce_clave_pedimento (Clave de pedimento), l10n_mx_cfdi_cce_destinatario_id (Destinatario CCE), l10n_mx_cfdi_cce_motivo_traslado (Motivo de traslado), l10n_mx_cfdi_cce_tipo_cambio_usd (Tipo cambio USD), l10n_mx_cfdi_cce_certificado_origen (Certificado de origen), l10n_mx_cfdi_cce_num_certificado_origen (Número certificado de origen), l10n_mx_cfdi_cce_numero_exportador_confiable (Número exportador confiable)
  • product.template · extends an existing modell10n_mx_cfdi_tariff_code (Tariff Code)
  • account.move.line · extends an existing modell10n_mx_cfdi_pedimento_ids (Pedimentos), l10n_mx_cfid_import_details (Import details), l10n_mx_cfdi_cce_unidad_aduana (Unidad aduana), l10n_mx_cfdi_cce_valor_dolares (Valor dólares), l10n_mx_cfdi_cce_cantidad_aduana (Cantidad aduana), l10n_mx_cfdi_cce_no_identificacion (No identificación CCE), l10n_mx_cfid_import_details_required (Import details required), l10n_mx_cfdi_cce_valor_unitario_aduana (Valor unitario aduana)
  • stock.landed.cost · extends an existing modell10n_mx_cfdi_pedimento_id (Pedimento)
  • l10n_mx_cfdi.pedimento · new modeldate (Fecha), name (Nombre), number (Número de Pedimento), lot_ids (Lotes), customs_id (Aduana)

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-03
Confirmed (verified in repository and branch) Estimated (unverified) No information

Confirmation status: 1 confirmed, 8 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.0

Install the module from the Apps menu after its dependencies are installed (l10n_mx_cfdi_account, l10n_mx_catalogs_comex, and stock/sale stack).

Install l10n_mx_catalogs_comex and l10n_mx_cfdi_account before this module.

Configure tariff codes on product templates and create pedimentos from Inventory > Operations > Pedimentos.

For CCE exports, keep partner addresses complete and use the standard invoice Incoterm field. Prefer Banxico USD rates for Tipo cambio USD.

SAT catalog imports for c_INCOTERM, c_ClavePedimento, and c_UnidadAduana are not shipped as full data tables yet; codes are entered as Char fields (Incoterm reuses account.incoterms.code). See ROADMAP.

Import pedimentos

Assign a pedimento to a landed cost before validation to copy it to the related lots. When invoicing products received with pedimentos, import details are appended to invoice lines and pedimento numbers are sent in the CFDI concepts (independent of CCE export).

Export — Comercio Exterior 2.0

  • Set the product Tariff Code (fracción arancelaria).
  • Ensure issuer and customer partners have street, ZIP, country, and state (SAT domicilio fields).
  • On the invoice Other Info tab, set Incoterm (standard Odoo field).
  • On the COMEX / CCE tab, enable Comercio Exterior (CCE) and fill:
  • Clave de pedimento (default A1)
  • Tipo cambio USD (MXN per 1 USD)
  • Optional certificado de origen / observaciones / destinatario
  • On invoice lines (optional columns), set Valor dólares and customs quantity / unit / unit value as needed.
  • Generate the CFDI as usual. The builder sets Exportacion=02 and attaches the CCE complement.
info

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.