Módulo Odoo
El módulo de sudte conecta Odoo con la API. Odoo no calcula impuestos fiscales, no arma el JSON del MH y no firma: envía la factura a sudte al confirmarla y guarda la respuesta. Así, los cambios de normativa se resuelven en sudte sin tocar tu instalación. Resumen comercial en facturación electrónica en Odoo.
Módulos
Sección titulada «Módulos»| Módulo | Contenido |
|---|---|
sudte_l10n_sv |
Localización de El Salvador: plan de cuentas mínimo, impuestos (IVA 13 %, retención y percepción 1 %, exento, no sujeto, exportación), posiciones fiscales, departamentos, municipios y distritos, actividades económicas, NIT, NRC y DUI en contactos con validación y control de duplicados, tipo de DTE por diario y unidades de medida CAT-014. |
sudte_connector |
Envío a la API al confirmar, estados del DTE, PDF y JSON adjuntos, reintentos, consulta de estado, invalidación, notas de crédito y débito, webhooks y menú de reportes fiscales. Depende de sudte_l10n_sv. |
Versiones: Odoo 20 Enterprise. Le siguen Odoo 20 Community y Odoo 18 con el mismo contrato de API. Funciona en instalaciones propias y en Odoo.sh; Odoo Online no permite módulos de terceros.
Instalación
Sección titulada «Instalación»- Crea tu cuenta en app.sudte.com, registra el emisor (NIT de tu empresa) con sus establecimientos y puntos de venta, y carga las credenciales del MH del ambiente de pruebas.
- Copia
sudte_l10n_svysudte_connectoren tu ruta de addons (o en el repositorio de tu proyecto de Odoo.sh), actualiza la lista de aplicaciones e instala sudte connector. - En Ajustes → Contabilidad → sudte, pega tu API key de pruebas (
sk_test_…) y elige el emisor. Solo los administradores ven y editan la API key. - Revisa los datos de la compañía: NIT, NRC, actividad económica, distrito, y los códigos MH de establecimiento y punto de venta por defecto.
- Confirma una factura de prueba y verifica que muestre el sello.
Configuración
Sección titulada «Configuración»- Diarios de venta: tipo de DTE por defecto (factura o crédito fiscal) y, si un diario corresponde a otra sucursal o caja, sus códigos de establecimiento y punto de venta. Si se dejan vacíos, se usan los de la compañía.
- Impuestos: cada impuesto indica si la línea es gravada, exenta o no sujeta, o si es retención o percepción del 1 %. Los impuestos de la localización ya vienen clasificados.
- Unidades de medida: código del catálogo CAT-014 (por defecto,
59unidad). - Términos de pago: condición de la operación (contado o crédito) y forma de pago del catálogo CAT-017.
- Contactos: tipo y número de documento (NIT, DUI, pasaporte), NRC, actividad económica y dirección con departamento, municipio y distrito. Un asistente lista los contactos incompletos para corregirlos antes de facturar.
Uso diario
Sección titulada «Uso diario»- Confirmar factura: se envía a sudte con una clave de idempotencia estable por factura. La factura muestra el estado del DTE, el número de control, el código de generación y el sello, con el PDF y el JSON adjuntos. sudte envía el correo al cliente.
- Rechazo del MH: la factura muestra el motivo en español y el campo afectado. Corrige (por ejemplo, el contacto) y usa Reintentar: se conserva el código de generación.
- Notas de crédito y débito: créalas desde la factura original; se envían con el documento relacionado.
- Invalidar: el asistente pide el motivo (CAT-024), el responsable, el solicitante y, salvo rescisión total, la factura de reemplazo.
- Consultar estado: actualiza la factura con el estado actual en sudte, útil si un webhook no llegó.
Webhooks
Sección titulada «Webhooks»El conector expone un endpoint que recibe los eventos de sudte, verifica la firma Sudte-Signature y actualiza el estado de
la factura. Regístralo en el panel de sudte (Desarrolladores → Webhooks) con la URL pública de tu Odoo que indica la
pantalla de ajustes del módulo, y pega el secreto whsec_… en los ajustes. Detalles del formato en webhooks.
Pasar a producción
Sección titulada «Pasar a producción»Cuando el MH autorice a tu empresa, carga en sudte las credenciales de producción y reemplaza en los ajustes de Odoo la API key
por una sk_live_…. Registra también el webhook en el ambiente de producción.
Problemas frecuentes
Sección titulada «Problemas frecuentes»| Síntoma | Causa y solución |
|---|---|
| «El distrito es obligatorio» | El contacto no tiene distrito. Complétalo o usa el asistente de contactos incompletos. |
[receptor.nrc] FORMATO NO VALIDO |
NRC con guiones o espacios. Edítalo en el contacto. |
| La factura queda «enviando» | El MH tardó más de 20 segundos. Se actualizará con el webhook; si no, usa Consultar estado. |
mh-credenciales |
Las credenciales del MH del ambiente activo están vencidas o son de otro ambiente. Vuelve a cargarlas en el panel. |
prohibido |
La API key está limitada a otro emisor. Revisa el emisor elegido en los ajustes. |
Lista completa de errores en errores y rechazos del MH.