Este módulo proporciona la configuración utilizada por la facturación electrónica para México:
- Integración multi-PAC mediante satcfdi (Finkok, Diverza, Prodigia, Comercio Digital, SW Sapien, MYSuite, Facturama).
- Gestión local de CSD para el sellado de CFDI cuando el PAC utiliza stamp().
- Carga de CSD Multiemisor de Facturama al registrar el emisor (requerido antes de issue()).
- Gestión de diferentes series y emisores de CFDI para la misma compañía.
Matriz de capacidades CFDI × PAC
| Flujo | Finkok | Diverza | Prodigia | Com. Digital | SW Sapien | MYSuite | Facturama | |------|:------:|:-------:|:--------:|:------------:|:---------:|:-------:|:---------:| | Ruta | issue() | issue() | stamp() | stamp() | issue() | stamp() | issue() Multiemisor / Web | | Ingreso (I) | Sí | Sí | Sí | Sí | Sí | Sí | Sí | | Egreso (E) | Condicional | Condicional | Condicional | Condicional | Condicional | Condicional | Condicional | | Pago (P) | Condicional | Condicional | Condicional | Condicional | Condicional | Condicional | Condicional | | Traslado / Carta Porte | Sí | Sí | Sí | Sí | Sí | Sí | Sí | | Pedimentos en conceptos | Sí | Sí | Sí | Sí | Sí | Sí | Sí | | Complemento CCE completo | Condicional | Condicional | Condicional | Condicional | Condicional | Condicional | Condicional | | Cancelación (API) | Condicional | Sí | No | No | Sí | No | Sí | | Cancelación con acuse | Condicional | Desconocido | No | No | Desconocido | No | Condicional |
Leyenda
- Sí: soportado de extremo a extremo mediante este módulo + satcfdi para ese PAC.
- Condicional:
- Egreso: requiere un reembolso totalmente conciliado (amount_residual == 0).
- Pago: auto-sellado solo para pagos entrantes conciliados en facturas PPD; el sellado manual requiere datos válidos del CFDI de pago.
- Cancelación Finkok: requiere FIEL de la compañía mediante l10n_mx_sat (firmante).
- Acuse de cancelación Facturama: puede estar vacío; el módulo muestra el estado/mensaje cuando el PAC omite el acuse.
- CCE completo: construido por l10n_mx_cfdi_comex (Exportacion=02 + cce20.ComercioExterior). Los PAC de sellado (Prodigia, Comercio Digital, MYSuite) y los PAC de emisión de XML (Finkok, Diverza, SW) pueden sellar XML sellado con CCE (la aceptación en vivo del PAC no se ha vuelto a probar exhaustivamente aquí). Facturama Multiemisor no soporta CCE; cuando CCE está presente, el módulo cambia a FacturamaWeb (mismo usuario/contraseña; CSD del perfil de la cuenta).
- No:
- La API de cancelación no está expuesta en satcfdi para Prodigia, Comercio Digital y MYSuite (supports_cancel=False).
- Desconocido: la disponibilidad del acuse depende de la respuesta del PAC (Diverza / SW Sapien).
- Ruta: Finkok, Diverza, SW Sapien y Facturama utilizan issue(); Prodigia, Comercio Digital y MYSuite utilizan sellado local con CSD + stamp(). Facturama es Multiemisor por defecto (Registrar carga el CSD); FacturamaWeb se utiliza automáticamente para Comercio Exterior.
- Los pedimentos en conceptos no son el complemento CCE completo; el adaptador de Facturama mapea NumerosPedimento.
Traducción automática al español (DeepSeek) de la descripción original de OCA, que está en inglés.
auto_awesome Qué hace este módulo
Generado por IA a partir del código · Odoo 19.0Permite a las empresas mexicanas crear, timbrar, descargar y cancelar facturas electrónicas CFDI a través de varios proveedores PAC, y almacena en Odoo el XML, PDF, UUID y los datos de verificación del SAT resultantes.
Este módulo añade a Odoo un espacio de trabajo CFDI (factura electrónica mexicana) completo, independiente de las pantallas de facturación estándar.
Qué pueden hacer los usuarios: - Registrar emisores de CFDI con su RFC, nombre fiscal, logotipo y archivos de certificado digital (CSD), y activarlos para el timbrado. - Configurar uno o varios servicios PAC (proveedor de certificación) con credenciales, modo sandbox y timbres disponibles, y ver si cada proveedor admite la emisión y la cancelación. - Gestionar series de CFDI (secuencias de numeración) y registrar compras de timbres (recargas) con cantidad, precio y total. - Crear documentos CFDI de tipo Income, Expense, Payment o Transfer, con serie y folio asignados automáticamente desde la serie cuando se dejan vacíos. - Publicar (timbrar) un documento, lo que lo envía al PAC, almacena el UUID, XML, PDF, firmas, números de certificado, fecha de firma, códigos de impuesto y una URL de verificación del SAT con código QR. - Cancelar un documento con un motivo de cancelación, opcionalmente un UUID de sustitución, y almacenar el acuse de cancelación. - Consultar el estado actual de un CFDI ante el SAT a través del PAC. - Vincular documentos entre sí con un tipo de relación (documentos relacionados).
Dónde aparece: un menú CFDI con Documents, Issued CFDIs, Issuers, Series y PAC Settings. Los productos incorporan campos para el código de producto/servicio del SAT y la unidad de medida; los contactos incorporan régimen fiscal, uso del CFDI, método de pago y forma de pago.
Reglas de negocio: una compañía puede activar la creación automática de CFDI al publicar; los documentos deben estar en borrador para publicarse; se bloquean las combinaciones duplicadas de serie/folio; se rechaza la cancelación cuando el PAC no la admite o cuando falta el XML timbrado.
Depende de
Lo necesitan otros módulos
Menús que añade
Modelos y campos (9)
- res.company · amplía un modelo existentel10n_mx_cfdi_auto (Create CFDI on post), l10n_mx_cfdi_enabled (Enable CFDI)
- res.partner · amplía un modelo existentetax_regime (Fiscal Regime), cfdi_use_id (CFDI Usage), payment_form_id (Payment Form), payment_method_id (Payment Method)
- product.template · amplía un modelo existentel10n_mx_cfdi_product_code_id (Código de Producto), l10n_mx_cfdi_product_measurement_unit_id (Unidad de Medida)
- l10n_mx_cfdi.issuer · modelo nuevokey_file, logo_url (URL del logo), company_id, partner_id, registered, service_id, fiscal_name, key_password (Password), certificate_file
- l10n_mx_cfdi.series · modelo nuevocode
- l10n_mx_cfdi.document · modelo nuevoname (Nombre), type, uuid (UUID), folio, serie, state (Estado), version, pdf_file (Archivo PDF), xml_file (Archivo XML), issuer_id (Emisor), tax_codes (Código de impuesto), company_id, standalone (Independiente), cert_number (Número de certificado), receiver_id (Receptor), tracking_id (ID del documento en el API), pac_provider (PAC Provider), pdf_filename (Nombre del archivo PDF), signing_date (Fecha de timbrado), xml_filename (Nombre del archivo XML), sat_signature (Firma del SAT), cert_data_json, cfdi_signature (Firma del CFDI), files_in_cache, is_global_note (Nota global), original_string (Cadena original), rfc_prov_certif (RFC del proveedor de certificación), sat_cert_number (Número de certificado del SAT), issuing_datetime (Fecha de emisión), verification_url (URL de verificación)
- l10n_mx_cfdi.cfdi_service · modelo nuevoname, user, pac_rfc (PAC RFC), password, provider, pac_token (PAC Token), company_ids (Companies), pac_country (PAC Country), pac_contrato (PAC Contract), sandbox_mode, pac_client_id (PAC Client ID), pac_requestor (PAC Requestor), supports_issue, supports_cancel, stamps_available (Stamps available)
- l10n_mx_cfdi.document_relation · modelo nuevosource_id, target_id, relation_type_id
- l10n_mx_cfdi.cfdi_service.topup · modelo nuevototal (Precio Total), partner_id (Contacto), service_id (Servicio), topup_date (Fecha de Adquisición), currency_id (Moneda), stamp_price (Precio por Folio), stamp_number (Cantidad de Folios)
Texto generado por IA (DeepSeek) al leer el código de la versión 19.0 en GitHub; puede contener errores, así que verifícalo en el código antes de decidir. El módulo es muy grande y solo se ha leído una parte del código. Ver el código en GitHub
Disponibilidad por versión
Revisado: 2026-11-03Estado de confirmación: 3 confirmadas, 6 sin información de 9 versiones.
Fuentes · Odoo 15.0
Confirmado el 2026-11-03 en la rama 15.0 de OCA/l10n-mexico.
terminal Instalación y uso
Documentación de OCA · Odoo 19.0Instalación
Fuente · Odoo 19.0Este módulo funciona con cualquier PAC soportado por la librería satcfdi:
- Finkok
- Diverza
- Prodigia
- Comercio Digital
- SW Sapien
- MYSuite
- Facturama
Instala la dependencia de Python:
pip install "satcfdi>=26.7.3"Comparativa de PAC
Precios de lista públicos indicativos a fecha aproximada de 2026-07 (MXN). Los importes y paquetes cambian sin previo aviso — confirma siempre con el proveedor antes de contratar. OCA y los autores del módulo no tienen relación comercial con estos PAC; los logotipos son propiedad de sus respectivos titulares y se utilizan únicamente a efectos de identificación.
Proveedores
Finkok — OnDemand: pago mensual por timbres emitidos. La página pública indica un mínimo de unos 500 timbres/mes (no acumulables); tarifas unitarias a través de ventas (históricamente se citaba alrededor de 150 MXN + IVA/mes por el bloque mínimo, y luego alrededor de 0.30 MXN + IVA por timbre — las tarifas exactas en MXN no aparecían en la página pública de OnDemand en el momento de la verificación).
- Contratación / información: https://finkok.com/ · https://finkok.com/ondemand.html
- Notas del módulo: usuario/contraseña; soporta
issue(); la cancelación requiere un firmante (FIEL de la empresa mediantel10n_mx_sat).
Diverza (Timbre Fiscal) — Pyme alrededor de 999 MXN + IVA/año (550 CFDI); Empresarial alrededor de 1,599 MXN + IVA/año (1,100 CFDI). Planes mayores a través de ventas.
- Contratación / información: https://portaldvz20.diverza.com/cfdi/timbre-fiscal/ · https://www.diverza.com/
- Notas del módulo: RFC del PAC, client id y token; soporta
issue().
Prodigia (PADE) — Sin precios de lista públicos; paquetes por volumen / contactar con ventas. Timbres sin caducidad (según el marketing del proveedor).
- Contratación / información: https://www.prodigia.com.mx/soluciones/timbrado · https://facturacion.pade.mx/
- Notas del módulo: usuario/contraseña/contrato; solo sello local +
stamp()(supports_issue=False); cancelación no expuesta en satcfdi.
Comercio Digital — Ejemplo de paquetes de timbres (+ IVA), validez de 2 años: 200=400; 500=850; 1,000=1,400; 5,000=4,500; 10,000=7,800; 50,000=30,000; 100,000=45,000 MXN.
- Contratación / información: https://www.comercio-digital.mx/comprar.html
- Notas del módulo: usuario/contraseña; solo sello local +
stamp(); cancelación no expuesta en satcfdi.
SW Sapien — Paquetes de timbres orientados a Odoo (tienda pública, MXN; confirmar IVA): 1,200=2,266; 5,000=5,530; 10,000=8,230; 20,000=9,930; 30,000=11,830; 60,000=18,130; 100,000=23,730. Sin caducidad (según el proveedor).
- Contratación / información: https://tienda.sw.com.mx/shop/category/timbres-1 · https://sw.com.mx/ · https://info.sw.com.mx/sw-smarter-odoo
- Notas del módulo: token o usuario/contraseña; soporta
issue().
MYSuite — Paquetes de folios del portal (WEB / PLUS / PREMIUM) para facturación web; el precio de WS/API normalmente se basa en presupuesto (confirmar con ventas).
- Compra / información: https://comprar.mysuitemex.com/ · https://www.mysuitemex.com/ · https://www.portal.mysuitemex.com/
- Notas del módulo: requestor + usuario; solo sello local +
stamp(); cancelación no expuesta en satcfdi.
Facturama — Módulo API alrededor de 1,650 MXN/año (IVA incl.), incluye API Web + Multiemisor y 100 folios; folios API adicionales alrededor de 0.50 / 0.45 / 0.40 MXN (IVA incl.) por tramos de volumen.
- Contratación / información: https://facturama.mx/planes-facturacion · https://facturama.mx/api-facturacion-electronica
- Notas del módulo: usuario/contraseña; ruta Multiemisor utilizada por este módulo — Registrar sube el CSD del emisor al PAC antes de
issue(); soportaissue().
Integración del módulo (timbrar vs emitir)
| PAC | Ruta | Cancelación en satcfdi | Credenciales (resumen) | |-----|------|-------------------|------------------------| | Finkok | issue() (o timbrar) | Sí (requiere firmante) | usuario / contraseña | | Diverza | issue() | Sí | RFC del PAC, client id, token | | Prodigia | sello local + stamp() | No | usuario / contraseña / contrato | | Comercio Digital | sello local + stamp() | No | usuario / contraseña | | SW Sapien | issue() | Sí | token o usuario / contraseña | | MYSuite | sello local + stamp() | No | requestor + usuario | | Facturama | issue() (Multiemisor) | Sí | usuario / contraseña; subida de CSD en Registrar |
Prefiere los PAC que implementen issue() cuando sea posible. En caso contrario, el módulo firma localmente con el CSD del emisor y llama a stamp().
Tras la instalación, sigue Configuración para crear CFDI > PAC Settings, introduce las credenciales, registra los CSD de los emisores con Registrar y (cuando sea necesario) configura las series y la FIEL de la empresa para la cancelación de Finkok.
Migración disruptiva desde la API legacy de Facturama
- Los documentos existentes que solo almacenan un
tracking_idde Facturama sin el XML timbrado no se pueden cancelar ni recuperar a través de satcfdi. Cancélalos en el SAT / PAC anterior, o adjunta primero el XML del CFDI en el documento. - Vuelve a registrar los emisores tras cambiar al adaptador de Facturama de satcfdi para que el CSD de Multiemisor se suba de nuevo.
- Prodigia, Comercio Digital y MYSuite no exponen la cancelación en satcfdi; el botón Cancelar permanece oculto para esos proveedores.
- Prefiere los PAC que implementen
issue()cuando sea posible; en caso contrario, el módulo firma localmente con el CSD del emisor y llama astamp().
Configuración
Fuente · Odoo 19.0Sigue estas etapas para conectar Odoo a tu PAC y preparar a los emisores para el timbrado. Para consultar los precios de los proveedores, los enlaces de registro y las notas sobre timbrado vs emisión, consulta Installation.
- Crear PAC Settings
- Ve a CFDI > PAC Settings y crea un registro (o abre uno existente).
- Establece un nombre y elige el Provider (Finkok, Diverza, Prodigia, Comercio Digital, SW Sapien, MYSuite o Facturama).
- Asigna las compañías que usarán esta conexión PAC (multicompañía).
- Introducir credenciales
Rellena los campos del grupo Credentials que apliquen a tu proveedor (usuarios de Settings / grupo system):
| Provider | Campos típicos | |----------|----------------| | Finkok | User, Password | | Diverza | Password o PAC Token, PAC RFC, PAC Client ID | | Prodigia | User, Password, PAC Contract | | Comercio Digital | User, Password | | SW Sapien | PAC Token, o User y Password | | MYSuite | User, PAC Requestor, PAC Country (por defecto MX) | | Facturama | User, Password |
Los nombres y requisitos de las credenciales pueden variar según el contrato con el PAC; confirma con la documentación del proveedor si algún campo no está claro.
- Seleccionar entorno
Activa Sandbox Mode para el entorno de pruebas del PAC. Déjalo desactivado para producción.
- Configurar el/los emisor(es) de CFDI y registrar el CSD
- Ve a CFDI > Issuers y crea un emisor vinculado al registro de PAC Settings.
- Establece RFC, nombre fiscal, ZIP y régimen fiscal.
- Sube el certificado CSD, la clave privada y la contraseña de la clave.
- Haz clic en Registrar para validar el CSD localmente (se usa para
stamp()y para la cancelación cuando corresponda).
Facturama Multiemisor
Para Facturama, Registrar también sube el CSD del emisor al PAC. Esa carga es obligatoria antes de issue(). Vuelve a registrar los emisores después de cambiar al adaptador Facturama de satcfdi para que el CSD de Multiemisor se suba de nuevo.
- Configurar series y folios
Ve a CFDI > Series y define el prefijo de la serie y el siguiente folio cuando tu compañía use series/folios controlados.
- Cancelación con Finkok (FIEL de la compañía)
Para la cancelación con PACs que requieren un firmante (por ejemplo, Finkok), instala l10n_mx_sat y configura la FIEL de la compañía.
- Validar la conexión
Confirma que el emisor aparece como registrado y luego timbra un CFDI de prueba en sandbox antes de pasar a producción. Cuando sea posible, prefiere los PACs que implementen issue(); de lo contrario, el módulo firma localmente con el CSD del emisor y llama a stamp().
Traducción automática al español (DeepSeek) de la documentación original de OCA; los comandos y el código no se traducen. Sin información verificada en OCA: Uso.
Las instrucciones de instalación, el paquete de distribución, las dependencias y los pasos de configuración no se muestran porque todavía no se han verificado en la documentación del módulo para ninguna versión.
Datos importados de GitHub: esta ficha refleja la última revisión del catálogo, no una consulta en directo. Verifica siempre en la documentación del módulo y en staging antes de instalar en producción.