Enable Banking (PSD2)

Enable Banking es un proveedor de información de cuentas para la sincronización bancaria en línea. Conecta Odoo con las cuentas de los bancos españoles y de muchos otros bancos europeos mediante la interfaz PSD2 que todos los bancos deben ofrecer. Usted otorga un consentimiento en su banco una sola vez y Odoo importa después las transacciones contabilizadas en el diario de banco correspondiente, varias veces al día, sin que tenga que entregar su contraseña de banca en línea.

Úselo cuando su banco no ofrezca una exportación de archivos que quiera subir cada día, o cuando gestione muchas cuentas y quiera que las transacciones y la comprobación de saldo estén al día por sí solas.

Nota

El proveedor se entrega en el módulo Sincronización bancaria en línea: Enable Banking (PSD2) (account_bank_sync_enablebanking), que requiere el módulo Sincronización bancaria en línea. Enable Banking es un servicio de terceros: necesita una cuenta y una aplicación registrada con ellos.

Antes de empezar

  • Las personas que configuran la conexión necesitan el derecho de acceso Sincronización bancaria / Gestor. La persona que introduce la clave privada necesita Sincronización bancaria / Administrador (consulte Permisos de acceso).

  • Su base de datos debe servirse mediante https y el parámetro de sistema web.base.url debe contener la dirección que sus usuarios escriben en el navegador: Odoo construye a partir de ella la dirección de retorno del consentimiento bancario y el banco devuelve su navegador a esa dirección.

  • Su banco debe ser uno de los que ofrece Enable Banking para su país. La lista se carga desde Enable Banking al configurar la conexión.

  • Cada cuenta bancaria debería tener su propio diario de banco, o puede dejar que Odoo cree los diarios a partir de los IBAN que entrega el banco.

Registrar una aplicación en Enable Banking

Esto se hace en el sitio de Enable Banking (su Control Panel), no en Odoo. Cree una aplicación con las siguientes propiedades:

  • Entorno: Entorno de pruebas le ofrece bancos simulados para probar la conexión sin tocar cuentas reales; Producción le ofrece sus bancos reales. El entorno es una propiedad de la aplicación, por lo que debe registrar una aplicación por entorno.

  • URL de redirección (Redirect URL): https://<your database address>/bank_sync/callback/enablebanking. Es la página a la que el banco le devuelve a Odoo tras el consentimiento. Debe ser idéntica a la dirección que utiliza Odoo, incluido el esquema https://; de lo contrario, el consentimiento se rechaza.

  • Par de claves: Odoo firma cada solicitud con la clave privada de la aplicación. Genere el par en su propio ordenador y suba únicamente el certificado público, por ejemplo:

    $ openssl req -x509 -newkey rsa:4096 -nodes -days 3650 \\
        -keyout eb_private.pem -out eb_public.crt -subj "/CN=my-company"
    

    También puede dejar que el Control Panel genere el par y descargar el archivo .pem.

Enable Banking muestra entonces el id de aplicación (application id) de la aplicación. Necesita este id y el archivo de la clave privada (formato PEM) en Odoo.

Advertencia

La clave privada permite acceder a las cuentas que conecte a cualquiera que la posea. Guarde el archivo en un lugar seguro y no lo envíe nunca por correo electrónico ni lo pegue en un chat, un ticket o un documento.

Nota

Una aplicación de producción que no tiene un acuerdo comercial con Enable Banking está limitada, según las normas de Enable Banking en el momento de redactar este documento, a las cuentas bancarias de su propietario, que se vinculan en el Control Panel. Compruebe las condiciones con Enable Banking antes de conectar las cuentas de otras empresas.

Introduzca las credenciales en Odoo

Vaya a Contabilidad ‣ Configuración ‣ Ajustes y, en la sección Banco y efectivo, busque Enable Banking (PSD2). El ajuste se guarda por empresa. Rellene:

  • Entorno de Enable Banking: Entorno de pruebas (por defecto) o Producción, según la aplicación que haya registrado. Las nuevas conexiones toman este valor.

  • Id. de aplicación de Enable Banking: el id que muestra el Control Panel.

  • Clave privada de Enable Banking (PEM): todo el contenido del archivo de la clave privada, desde la línea -----BEGIN ... PRIVATE KEY----- hasta la línea END. El campo solo se muestra a los usuarios del grupo Sincronización bancaria / Administrador: los usuarios con el derecho Sincronización bancaria / Gestor pueden usar la conexión, pero no pueden leer la clave.

Haga clic en Guardar. La descripción del ajuste repite la URL de redirección que debe registrar en Enable Banking.

screenshot: accounting-bank-sync-enablebanking-settings
menu
Accounting ‣ Configuration ‣ Settings ‣ Bank & Cash
shows
The "Enable Banking (PSD2)" setting in the Bank & Cash block with the environment selector, the application id field and the masked private key field.
highlight
The three fields of the setting (red frame).
data
Environment "Sandbox", a throw-away application id, a masked key.
module
account_bank_sync_enablebanking
notes
English UI, light theme, crop to the setting; never show a real key.

Usar una aplicación distinta para una conexión

Una conexión puede llevar su propio Id. de aplicación de Enable Banking y su propia Clave privada de Enable Banking (PEM) en su sección Credenciales, por ejemplo cuando las cuentas pertenecen a un cliente que tiene una aplicación propia de Enable Banking. Deje ambos campos vacíos para usar los ajustes de la empresa.

Importante

En cuanto una conexión tiene su propio id de aplicación, utiliza también su propia clave privada: nunca recurre a la clave de los ajustes de la empresa. Rellene ambos campos o ninguno.

Conectar un banco

  1. Vaya a Contabilidad ‣ Sincronización bancaria ‣ Conexiones y haga clic en Nuevo.

  2. Introduzca un Nombre y seleccione Enable Banking (PSD2) como Proveedor. El Entorno se rellena a partir de los ajustes.

  3. Haga clic en Probar conexión. Odoo firma una solicitud con su clave: el mensaje La aplicación de Enable Banking … funciona. confirma que el id de aplicación y la clave son correctos. Si el entorno de la conexión difiere del de la aplicación, el mensaje se lo indica; corrija el Entorno de la conexión.

  4. En la sección Credenciales, mantenga el País del banco (dos letras, ES por defecto) o cámbielo, y establezca el Tipo de titular de la sección Consentimiento bancario: Empresa si accede a la banca en línea de la empresa, Particular en caso contrario.

  5. Haga clic en Cargar bancos. Odoo lee los bancos que Enable Banking ofrece para el país y el tipo de titular, y lo confirma con N bancos disponibles en ES. Seleccione su banco en el campo Banco.

  6. Haga clic en Conectar con el banco. Su navegador abre la página de acceso de su banco; identifíquese y autorice el acceso a sus cuentas, como haría con cualquier operación de banca en línea.

  7. El banco le devuelve a Odoo, a la conexión. Ahora está Conectado, y Consentimiento válido hasta muestra el final del consentimiento. El campo Estado de la sesión muestra el estado de la sesión en Enable Banking.

screenshot: accounting-bank-sync-enablebanking-connection
menu
Accounting ‣ Bank Sync ‣ Connections ‣ (an Enable Banking connection)
shows
An Enable Banking connection in state "Connected" with the Load banks, Connect to bank (or Renew consent), Discover accounts and Disconnect buttons, the Bank consent section with the expiry date, and the Credentials section with the country, the bank and the session.
highlight
The header buttons and the "Consent valid until" field (red frame).
data
Connection "Bank Company SL", bank country ES, a business account, consent valid for 180 days.
module
account_bank_sync, account_bank_sync_enablebanking
notes
English UI, light theme, 1440px width; the private key field must be empty or masked.

El consentimiento dura tanto como permita el banco, como máximo 180 días. La columna Consentimiento máx. (días) de Contabilidad ‣ Sincronización bancaria ‣ Bancos (Enable Banking) muestra el máximo de cada banco; la lista está filtrada por España por defecto, y la columna Tipos de titular indica si el banco ofrece accesos de empresa y/o de particular.

Truco

En el entorno de pruebas, los bancos simulados de Enable Banking pueden aparecer listados bajo un país distinto del suyo. Si no encuentra el banco simulado, cambie el País del banco y vuelva a cargar los bancos.

Truco

Cargar bancos solo lista los bancos del Tipo de titular seleccionado. Después de cambiar el tipo, vuelva a cargar los bancos. Los bancos que Enable Banking ya no devuelve para el país se archivan en la lista.

Las cuentas y sus diarios

Cuando se completa el consentimiento, Odoo lee las cuentas de la sesión bancaria y crea una Cuenta de sincronización bancaria para cada una, en Contabilidad ‣ Sincronización bancaria ‣ Cuentas. Cada cuenta se vincula a un diario de banco:

  • si un diario de banco de la empresa ya tiene una cuenta bancaria con el mismo IBAN, se utiliza ese diario;

  • en caso contrario, Odoo crea un diario de banco con el nombre de la cuenta, con un código que empieza por EB y el IBAN establecido como su cuenta bancaria. El diario toma la moneda de la cuenta cuando esta difiere de la moneda de la empresa.

Un diario vinculado a una cuenta tiene su ajuste Canales de comunicación bancarios cambiado a Sincronización bancaria en línea. El botón Importación (OCA) desaparece entonces de la tarjeta del diario, pero los archivos de extracto se pueden seguir importando con el enlace Importar Extracto (OCA), por ejemplo para completar el historial anterior.

Las cuentas se crean con Sincronización activada desactivada y con un intervalo Sincronizar cada de 6 horas. Para iniciar la importación automática, active Sincronización activada en cada cuenta y pida a su administrador del sistema que active la acción programada Sincronización bancaria en línea: obtener extractos (consulte Ejecutar una sincronización). Puede hacer clic en Sincronizar ahora en cualquier momento para obtener de inmediato las primeras transacciones.

Truco

Compruebe el Diario de cada cuenta nueva. Si su banco no entregó el IBAN, o si la cuenta bancaria del diario tiene un número distinto, Odoo crea un diario nuevo en lugar de usar el existente. Cambie el Diario de la cuenta y archive el diario que se creó por error.

Use Descubrir cuentas en la conexión para volver a leer las cuentas de la sesión, por ejemplo después de que el banco haya añadido una cuenta al consentimiento.

Qué se importa

Odoo solicita al banco las transacciones desde la última ejecución correcta, con un solapamiento de 48 horas, y contabiliza lo siguiente como líneas de extracto bancario:

  • solo las transacciones contabilizadas (booked). Las pendientes se ignoran hasta que el banco las haya contabilizado;

  • el importe, negativo para un adeudo y positivo para un abono, y la fecha contable (o, cuando el banco no la envía, la fecha valor o la fecha de la transacción);

  • la Etiqueta, formada por la información de concepto del banco (o, por este orden, su nota, el nombre de la contraparte o la referencia de la transacción);

  • el nombre y el IBAN de la contraparte, cuando el banco los entrega, que ayudan a reconocer al partner durante la conciliación;

  • una nota con la descripción de la transacción del banco, el número de referencia y la observación.

Cada línea conserva el id de transacción del banco, con el prefijo EB-. Cuando el banco no envía ningún id, Odoo construye uno estable a partir de la fecha, el importe, la etiqueta y la contraparte. Este id es lo que evita los duplicados: volver a ejecutar una sincronización o renovar el consentimiento nunca contabiliza una transacción dos veces.

La primera sincronización solo mira un breve período hacia atrás. Si necesita el historial anterior a la conexión, importe un archivo de extracto: Cargar el historial en un diario sincronizado en línea.

Después de las transacciones, Odoo lee el saldo de la cuenta y ejecuta la comprobación de saldo. Utiliza el saldo final contabilizado del banco; si el banco no informa de ninguno, se utiliza el saldo intermedio, el esperado, el inicial o el disponible, por este orden. Con un saldo disponible, la comparación puede diferir de su contabilidad en el importe de las operaciones pendientes.

Límites de la interfaz del banco

PSD2 permite que el banco limite a 4 por cuenta y día las llamadas automáticas que se realizan cuando usted no está delante de su pantalla. Odoo respeta ese límite:

  • la conexión tiene Máx. sincronizaciones automáticas al día establecido en 4, y las ejecuciones programadas de una cuenta se espacian al menos 6 horas. Una vez usadas las 4 ejecuciones del día (UTC), la siguiente ejecución programada espera al día siguiente;

  • Sincronizar ahora es una ejecución realizada estando usted presente. Odoo no la cuenta e indica al banco que la solicitud procede del cliente.

Si el banco rechaza una solicitud porque, pese a todo, se alcanzó el límite, la cuenta muestra el mensaje El banco ha rechazado la petición: se ha alcanzado el límite diario de accesos (PSD2 permite 4 actualizaciones automáticas al día). Inténtelo de nuevo mañana o sincronice manualmente.

Solución de problemas

Los errores de una sincronización programada o manual se muestran en la cuenta (Último estado Error y Último error); los errores de un botón de la conexión se muestran en un cuadro de diálogo. Las claves y los tokens se eliminan de los mensajes.

Mensaje

Qué hacer

Configure primero el identificador de la aplicación y la clave privada de Enable Banking (ajustes de Contabilidad o la conexión).

Rellene las credenciales. Compruebe también que una conexión con su propio id de aplicación tenga su propia clave.

La clave privada de Enable Banking no es una clave RSA PEM válida.

Pegue el contenido completo del archivo de la clave, desde la línea BEGIN hasta la línea END, sin protección con contraseña.

Elija primero el banco (use «Cargar bancos» para obtener la lista).

Haga clic en Cargar bancos y seleccione el Banco.

El banco no ha devuelto un código de autorización.

El consentimiento se canceló o se rechazó en el banco. Haga clic de nuevo en Conectar con el banco.

La autorización del banco ha tardado demasiado. Iníciela de nuevo.

El consentimiento debe completarse en el plazo de una hora. Haga clic de nuevo en Conectar con el banco.

El consentimiento bancario ya no es válido (…). Renuévelo en la conexión.

La sesión ha expirado o se ha cerrado o revocado en el banco. La conexión pasa a Expirado: haga clic en Renovar consentimiento.

El consentimiento bancario caducó el … Renuévelo en la conexión.

Igual que arriba; Odoo dejó de consultar al banco cuando terminó el consentimiento.

El banco ha rechazado la petición: se ha alcanzado el límite diario de accesos …

Espere al día siguiente o haga clic en Sincronizar ahora.

No se puede contactar con Enable Banking: …

Un problema de red o una interrupción temporal del servicio. La siguiente ejecución programada lo intenta de nuevo.

Error de Enable Banking <status> <code>: …

La respuesta de Enable Banking, sin cambios. Un estado 4xx suele apuntar a la aplicación (por ejemplo, una URL de redirección desconocida o una discrepancia de entorno), y un estado 5xx a un problema temporal en Enable Banking o en el banco.

El banco le devuelve a Odoo con el mensaje Bank authorization failed (La autorización del banco ha fallado)

El banco o Enable Banking han rechazado el consentimiento; se muestra el motivo. Corríjalo y vuelva a hacer clic en Conectar con el banco. Si se rechaza la URL de redirección, compárela con la registrada en el Control Panel.