Cómo leer un mensaje de SEPA VoP Payment Gate
Lo que en esta página ves como %(ref)s, %(row)s o %(state)s es el hueco donde aparece el dato concreto: la referencia del pago, la fila del fichero o el estado de la importación. Cuando el mensaje acaba en %(error)s, lo que sigue a los dos puntos es el detalle del fallo.
Si antes quieres ver qué menús añade el módulo y qué recorre un resultado, empieza por cómo funciona SEPA VoP Payment Gate por dentro.

Al cargar el fichero de resultados del banco
Estos mensajes salen al importar el fichero con los resultados VoP. Según su propio mensaje, el módulo no tiene configurada la lectura de resultados en pain.002 y pide el fichero en CSV, JSON o XML.
| Mensaje | Cuándo sale | Qué hacer |
|---|---|---|
The import has no file. o Please upload a VoP result file. | La importación no lleva fichero. | Sube el fichero de resultados VoP y repite. |
The file is not UTF-8 text: %(error)s | El fichero no es texto UTF-8. | Consigue el fichero como texto UTF-8. |
No bank specification for Verification of Payee results in pain.002 is configured in this module. Ask the bank for its VoP result file as CSV, JSON or XML. | Cargas resultados VoP en pain.002. | Pide al banco el fichero en CSV, JSON o XML. |
The CSV file is malformed: %(error)s, The JSON file is malformed: %(error)s o The XML file is malformed: %(error)s | El fichero no se puede leer en su formato. | Corrige lo que indica el detalle tras los dos puntos. |
The JSON file must be a list of results or {"results": [...]}. | El JSON no tiene ninguna de esas dos formas. | Déjalo como lista de resultados o como objeto con la clave results. |
Row %(row)s is not a record. | Una fila no es un registro. | Corrige la fila que indica el mensaje. |
Row %(row)s: unknown result "%(result)s" (expected %(valid)s). | Una fila trae un resultado que el módulo no reconoce. | Usa uno de los valores que lista tras expected. |
The file has no result rows. | El fichero no tiene filas de resultados. | Pide al banco el fichero con sus resultados. |
The file has %(rows)s result rows but %(expected)s were expected. | Hay más o menos filas de las esperadas. | Compara las dos cantidades del mensaje y revisa el fichero. |
The manual connector does not support file import. Use an import_file source instead. | Importas desde una fuente con conector manual. | Usa una fuente import_file. |
En los pasos de la importación
Según sus mensajes, una importación empieza en borrador (draft), se valida y después se aplica, y el estado no vuelve atrás.
| Mensaje | Cuándo sale | Qué hacer |
|---|---|---|
Only draft imports can be validated. Current state: %(state)s. | Validas una importación que ya no está en borrador. | Mira el estado actual que indica el mensaje. |
Only validated imports can be applied. Current state: %(state)s. o Please validate the file before applying. | Aplicas sin haber validado. | Valida primero y aplica después. |
Import state cannot go backwards. Current: %(current)s → Requested: %(new)s. | Pides un estado anterior al actual. | Sigue adelante desde el estado actual. |
Al confirmar un pago
Aquí es donde el módulo hace de puerta: frena el pago hasta que la verificación VoP y la política lo permiten.
| Mensaje | Cuándo sale | Qué hacer |
|---|---|---|
No payment selected. | Lanzas la acción sin pago seleccionado. | Selecciona el pago. |
Payment "%(ref)s" has no partner bank account. | El pago no tiene cuenta bancaria del socio. | Indica la cuenta bancaria del socio en ese pago. |
Payment "%(ref)s" requires SEPA Verification of Payee. Please run VoP before confirming this payment. | Confirmas un pago que exige VoP sin haberla pasado. | Pasa la verificación VoP y confirma después. |
Payment "%(ref)s" is blocked by VoP policy. Result: %(status)s. Contact your VoP manager to override. | La política VoP bloquea el pago por el resultado indicado. | Revisa el resultado y, para anularlo, habla con tu VoP manager. |
Payment "%(ref)s": VoP opt-out is not allowed by policy. | Intentas excluir el pago de VoP y la política no lo permite. | El pago tiene que pasar por VoP. |

Close Match, con datos del pago, la verificación SEPA y la decisión aprobada por Mitchell Admin con su motivo.Registros que el módulo no deja modificar ni borrar
Estos mensajes no son fallos de datos: son el módulo protegiendo sus registros. Trata los resultados de verificación y los eventos de auditoría como rastro de evidencia, y su mensaje cita el Reglamento (UE) 2024/886.
| Mensaje | Cuándo sale | Qué hacer |
|---|---|---|
The following fields are write-protected on VoP result records: %(fields)s. Create a new verification instead. (en Odoo 18, 19 y 20 también Write-protected VoP fields cannot be modified: %(fields)s.) | Editas campos protegidos de un resultado VoP. | Crea una verificación nueva. |
VoP verification results cannot be deleted. They form the legal evidence trail required by EU Reg 2024/886. | Borras un resultado de verificación. | El módulo no lo permite. |
VoP audit events cannot be modified. They form the legal evidence trail. o VoP audit events cannot be deleted. They form the legal evidence trail required by EU Reg 2024/886. | Editas o borras un evento de auditoría. | El módulo no lo permite. |
VoP health log entries cannot be modified after creation. o VoP health log entries cannot be deleted. | Editas o borras una entrada del registro de salud. | El módulo no lo permite. |
Only VoP managers can group or export VoP results by bank account: its name is the full IBAN. | Agrupas o exportas resultados por cuenta bancaria sin ser VoP manager. | Pide a un VoP manager que lo haga. |
Si un resultado está mal, el camino que marca el módulo es crear una verificación nueva, no editar la existente.
Al configurar la política y las fuentes
| Mensaje | Cuándo sale | Qué hacer |
|---|---|---|
Result freshness must be at least 1 day. | Pones en la política una frescura menor. | Indica 1 día o más. |
Evidence retention must be at least 5 years (1825 days) to comply with EU Reg 2024/886. | Pones una conservación de evidencias menor. | El módulo exige como mínimo 1825 días. |
Evidence reference can only be entered when "Attestation-Only Mode" is enabled in the VoP policy. Contact your VoP administrator. | Rellenas la referencia de evidencia sin ese modo activo. | Habla con tu VoP administrator. |
VoP source "%(name)s" is inactive. | Usas una fuente VoP inactiva. | Actívala o usa una fuente activa. |
Unknown connector class "%(cls)s" on source "%(src)s". Valid classes: %(valid)s. | La fuente tiene una clase de conector que el módulo no conoce. | Elige una de las clases que lista el mensaje. |

Cómo te ayuda FlexigoTech
SEPA VoP Payment Gate está publicado en Odoo Apps para Odoo 17, 18, 19 y 20, a 9 € sin IVA por versión de Odoo, en pago único. Lo tienes en la ficha de Odoo Apps y en su página en flexigotech.com; si aún dudas de si encaja, mira qué cubre y qué hace falta antes de instalarlo.
FlexigoTech implanta Odoo 17, 18, 19 y 20 y desarrolla conectores e integraciones a medida. Si tu banco entrega los resultados en un formato que el módulo no lee, puedes plantearlo como integración a medida.
Sigue leyendo
Comprobado en el código del módulo (versión 20.0) y en las fuentes enlazadas
Fuentes
- Código del módulo: flexigo_sepa_verification_of_payee_module_for_odoo_19 20.0 (92ece3b6): connectors/import_file.py
- Código del módulo: flexigo_sepa_verification_of_payee_module_for_odoo_19 20.0 (92ece3b6): connectors/manual.py
- Código del módulo: flexigo_sepa_verification_of_payee_module_for_odoo_19 20.0 (92ece3b6): models/account_payment.py
- Código del módulo: flexigo_sepa_verification_of_payee_module_for_odoo_19 20.0 (92ece3b6): models/sepa_vop_audit_event.py
- Código del módulo: flexigo_sepa_verification_of_payee_module_for_odoo_19 20.0 (92ece3b6): models/sepa_vop_health_log.py
- Código del módulo: flexigo_sepa_verification_of_payee_module_for_odoo_19 20.0 (92ece3b6): models/sepa_vop_import.py
- Código del módulo: flexigo_sepa_verification_of_payee_module_for_odoo_19 20.0 (92ece3b6): models/sepa_vop_policy.py
- Código del módulo: flexigo_sepa_verification_of_payee_module_for_odoo_19 20.0 (92ece3b6): models/sepa_vop_result.py
- Código del módulo: flexigo_sepa_verification_of_payee_module_for_odoo_19 20.0 (92ece3b6): models/sepa_vop_source.py
- Código del módulo: flexigo_sepa_verification_of_payee_module_for_odoo_19 20.0 (92ece3b6): wizards/sepa_vop_import_wizard.py
- Código del módulo: flexigo_sepa_verification_of_payee_module_for_odoo_19 20.0 (92ece3b6): wizards/sepa_vop_manual_capture_wizard.py
- apps.odoo.com/apps/modules/20.0/flexigo_sepa_verification_of_payee_module_for_odoo_19
- apps.odoo.com/apps/modules/17.0/flexigo_sepa_verification_of_payee_module_for_odoo_19
- apps.odoo.com/apps/modules/18.0/flexigo_sepa_verification_of_payee_module_for_odoo_19
- apps.odoo.com/apps/modules/19.0/flexigo_sepa_verification_of_payee_module_for_odoo_19
- flexigotech.com/en/services.html
