Odoo
Conector de Sifende para la localización paraguaya de la OCA en Odoo 18 y 19. Odoo numera tus facturas; Sifende las firma, las envía a SIFEN y devuelve el XML y el KuDE.
El conector de Sifende registra a Sifende como proveedor de facturación electrónica en la localización paraguaya de la OCA. Odoo sigue numerando las facturas y armando los datos del documento; Sifende firma el XML, lo envía a SIFEN y devuelve el resultado, el XML firmado y el KuDE.
No cargás el certificado digital ni el CSC en Odoo: quedan en Sifende.
Documentos admitidos: factura electrónica, nota de crédito, nota de débito, nota de remisión y autofactura.
Funciona con Odoo 18 y 19, Community o Enterprise, en Odoo.sh o instalado en tu propio servidor. No funciona en Odoo Online, porque esa modalidad no admite módulos de terceros.
Requisitos
- Un plan de Sifende que incluya la API de integración. Consultá Planes y Precios.
- Un contribuyente configurado en Sifende, con certificado, timbrado y punto de expedición. Seguí el Inicio Rápido si todavía no lo tenés.
- Una API key del ambiente que vas a usar. Creala en API keys.
- Los módulos de la OCA
l10n_py,l10n_py_base,l10n_py_accountyl10n_py_edi_base, instalados en tu base.
Instalación
Cloná los repositorios en el servidor de Odoo, con la rama que coincide con tu versión (18.0 o 19.0):
git clone -b 19.0 https://github.com/OCA/l10n-paraguay.git
git clone -b 19.0 https://github.com/ithdev/sifende-odoo.gitAgregá ambos directorios al addons_path de tu odoo.conf:
addons_path = /opt/odoo/addons,/opt/odoo/l10n-paraguay,/opt/odoo/sifende-odooInstalá las dependencias de Python en el mismo entorno que ejecuta Odoo:
pip install -r l10n-paraguay/requirements.txt -r sifende-odoo/requirements.txtReiniciá Odoo. Activá el modo desarrollador, abrí Aplicaciones y elegí Actualizar lista de aplicaciones. El conector no es una aplicación, así que Odoo lo oculta con el filtro predeterminado: quitá el filtro Aplicaciones del buscador, buscá Paraguay - Facturación electrónica con Sifende e instalalo. Odoo instala también los módulos de la OCA de los que depende.
Configuración
Timbrado y diario
El timbrado, el establecimiento y el punto de expedición que usa Odoo tienen que ser los mismos que tenés cargados en Sifende.
- En la aplicación de contabilidad, abrí Configuración → Paraguay → Timbrados y entrá al timbrado. Confirmá que el Número de Timbrado sea el mismo que en Contribuyente → Timbrado; debe tener solo dígitos.
- Verificá que el Establecimiento y el Punto de expedición existan en Sifende. Se cargan en Establecimientos.
- Asociá ese timbrado al diario de ventas con el que vas a facturar.
Dedicá un punto de expedición exclusivo a Odoo y no emitas en él desde el panel ni desde la app. Sifende usa el número que le manda Odoo y rechaza los que ya están en uso, así que si dos sistemas numeran el mismo punto tarde o temprano chocan. Más detalle en numeración desde tu sistema.
Conector
- En la aplicación de contabilidad (Facturación o Contabilidad, según tu edición), abrí Facturación Electrónica → Conectores y creá un conector nuevo.
- En Proveedor, elegí Sifende. Solo se admite un conector por empresa.
- Elegí el Environment: Pruebas para una API key
sk_sandbox_osk_test_, Producción para unask_live_. - Pegá la clave en API key de Sifende.
- Dejá URL de Sifende como está, salvo que te hayamos indicado otra. Debe ser HTTPS.
- Pulsá Probar Conexión.
La API key, la URL de Sifende y el webhook solo los ven y editan quienes administran Odoo (Ajustes). Cada conector se opera únicamente desde su empresa.
Probar Conexión muestra la razón social y el ambiente de la clave, y si el contribuyente está listo para emitir. Falla si el ambiente del conector no coincide con el de la clave, y advierte si el timbrado, el establecimiento o el punto de expedición de Odoo no existen en Sifende. Corregí lo que indique antes de emitir.
El ambiente lo define la API key. Consultá Ambientes.
Unidades de medida
Opcional. En Inventario → Configuración → Unidades de medida, ajustá el Código de unidad de medida SIFEN de cada unidad. Por defecto es 77 (unidad).
Recibir el estado al instante (opcional)
Con un webhook registrado, Sifende avisa a Odoo apenas SIFEN responde. Sin webhook el estado se actualiza igual: Odoo consulta a Sifende cada 5 minutos con la acción programada Sifende: verificar estado de documentos, que además sigue activa como respaldo si un aviso se pierde. Esa consulta también revisa los documentos aceptados dentro del plazo de cancelación, así que refleja las cancelaciones hechas desde otro lado.
Para usarlo, Odoo tiene que ser accesible desde Internet por HTTPS y su URL base (web.base.url, en Ajustes → Técnico → Parámetros del sistema) tiene que ser la pública: Sifende rechaza http y las direcciones locales. Si tenés varias bases de datos en el mismo servidor, la URL pública debe resolver a la base correcta.
En el conector:
- Registrar webhook da de alta la URL de Odoo en Sifende para los eventos de aprobación, rechazo y cancelación, y guarda el secreto de firma.
- Rotar secreto genera un secreto nuevo; el anterior deja de valer al instante. Usalo también si Sifende informa que la URL ya estaba registrada. Si el webhook ya no existe en Sifende, Odoo lo olvida y te avisa: pulsá Registrar webhook otra vez.
- Quitar webhook lo elimina en Sifende.
Para registrar el webhook sin pasar por Odoo, consultá Administrar webhooks por API.
Uso diario
Confirmá la factura como siempre.
Pulsá Enviar a EDI. El documento pasa a Procesando y muestra su CDC y su QR. Odoo valida los datos antes de enviar y te indica lo que falte.
Esperá el resultado. Se actualiza solo en el campo Estado EDI, en la pestaña Facturación Electrónica.
Descargá los archivos. Cuando SIFEN aprueba el documento, Odoo adjunta el XML firmado y el KuDE a la factura: usá Descargar XML y Descargar KUDE.
Estados
| Estado en Odoo | Qué significa | Qué hacer |
|---|---|---|
| Procesando | Sifende recibió el documento y SIFEN todavía no respondió | Esperá. No lo vuelvas a enviar |
| Aceptado | SIFEN aprobó el documento | El XML y el KuDE ya están adjuntos |
| Rechazado | SIFEN rechazó el documento, o Sifende lo rechazó antes de enviarlo por un dato inválido | Leé el Mensaje EDI. Si SIFEN lo rechazó, el número no se puede reenviar: seguí Inutilizar números. Si fue un dato inválido y el documento no llegó a SIFEN, corregilo y pulsá Reintentar |
| Error | El documento no llegó a Sifende (falló la conexión o el plan), o Sifende lo recibió pero el envío a SIFEN falló de forma definitiva | Leé el Mensaje EDI. Si no llegó a Sifende, pulsá Reintentar. Si el envío a SIFEN falló, Reintentar no lo reemite: reintentá el lote desde el panel de Sifende o pedilo a soporte. Odoo actualiza el estado solo cuando el documento vuelve a procesarse |
| Cancelado | El documento se canceló | Nada. Si hace falta, emití uno nuevo |
Si el fallo fue de conexión, Reintentar reutiliza la misma solicitud y no duplica el documento. Si el envío a SIFEN falló, el documento conserva su número y su CDC: Odoo lo sigue consultando y pasa a Procesando y luego a Aceptado cuando el lote se reintenta. Con un documento que SIFEN rechazó, Reintentar no lo vuelve a enviar: muestra el procedimiento para inutilizar el número y emitir uno nuevo. Para entender los motivos de un rechazo, consultá Rechazos SIFEN.
Odoo no ofrece vista previa del XML ni del QR antes de enviar: Sifende no genera documentos sin emitirlos. El mismo XML también se obtiene por API con Descargar XML.
Nota de crédito y de débito
Creá la nota desde la factura con Nota de crédito o Nota de débito, y elegí el Motivo de emisión (SIFEN) en la pestaña Facturación Electrónica. Después se envía igual que una factura. Para ver cuándo conviene cada una, consultá Nota de Crédito y Nota de Débito.
En una nota de remisión, indicá además el Responsable de la emisión de la NRE y los Kilómetros del recorrido (NRE).
Cancelar un documento
Con el documento Aceptado, pulsá Cancelar EDI. Se abre el asistente Cancelar documento electrónico: escribí el motivo, que es obligatorio y se envía a SIFEN, y confirmá con Cancelar Documento. Es un permiso del rol Facturación. SIFEN lo permite hasta 48 horas después de la aprobación en facturas y autofacturas, y hasta 7 días en las notas. Pasado el plazo, anulá la factura con una nota de crédito. Consultá Cancelar un Documento.
Sandbox no admite cancelación ni inutilización. Para probarlas, usá una API key de pruebas (sk_test_).
Inutilizar números
Un documento que SIFEN rechazó no se puede reenviar con el mismo número, ni siquiera con los mismos datos: hay que inutilizar su número y emitir uno nuevo. Con el rol Administrador de Contabilidad:
- Abrí Facturación Electrónica → Inutilización de números, dentro de la aplicación de Facturación (o Contabilidad en Enterprise).
- Creá una inutilización con el Timbrado, el Número Desde, el Número Hasta y el Motivo, y pulsá Enviar al SIFEN. Es irreversible: consultá Inutilizar Numeración.
- En el documento rechazado, pulsá Restablecer a borrador y después Cancelar.
- Emití un documento nuevo: toma el número siguiente.
Odoo solo permite inutilizar números que no tienen documento o que pertenecen a documentos rechazados.
Permisos
| Acción | Rol |
|---|---|
| Enviar, reintentar y cancelar un documento | Facturación |
| Consultar el estado de un documento | Facturación o solo lectura |
| Probar Conexión e inutilizar números | Administrador de Contabilidad |
| API key, URL de Sifende y webhook | Ajustes (administración de Odoo) |
Pago con cheque y cuotas
Una factura al contado con Cheque como Tipo de Pago (pestaña Facturación Electrónica) exige el número del cheque (solo dígitos, hasta 8) y el banco (de 4 a 20 caracteres). En una factura a crédito, las cuotas respetan los montos del plazo de pago, aunque sean desiguales.
Problemas frecuentes
| Qué ves en Odoo | Causa | Cómo resolverlo |
|---|---|---|
| «El número de documento ya está en uso en SIFENDE» | Otro sistema o el panel ya emitió ese número en el mismo punto de expedición | Usá un punto exclusivo para Odoo. Detalle en Número de documento en uso |
| «SIFEN rechazó este documento y su número no se puede reenviar» o «El número de este documento ya pertenece a uno rechazado por SIFEN» | El número pertenece a un documento que SIFEN rechazó y no se puede volver a usar | Inutilizá el número y emití la factura con uno nuevo, como se explica en Inutilizar números. Detalle en El número requiere inutilización |
| «El timbrado de Odoo no coincide con el de SIFENDE» | El timbrado de Odoo no es el que Sifende tiene cargado para ese ambiente | Igualalos y pulsá Probar Conexión. Detalle en El timbrado no coincide |
| «Su plan de SIFENDE no permite emitir ahora» | El plan agotó el cupo mensual o no incluye la operación | Revisá el plan en el panel. Detalle en Cupo mensual de documentos agotado |
| Probar Conexión dice que el ambiente no coincide | El Environment del conector no es el de la API key | Cambiá el Environment o pegá la clave correcta |
Si el problema persiste, escribinos desde Soporte con el CDC del documento.
Recursos
- Repositorio: github.com/ithdev/sifende-odoo
- Localización paraguaya de la OCA: github.com/OCA/l10n-paraguay
- Referencia API: Documentos Electrónicos