{"id":348734,"date":"2026-08-07T02:22:48","date_gmt":"2026-08-07T02:22:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/sepa-sign\/"},"modified":"2026-08-07T02:22:19","modified_gmt":"2026-08-07T02:22:19","slug":"sepa-sign","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/sepa-sign\/","author":23541956,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"3.11.0","stable_tag":"3.11.0","tested":"7.0.3","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"SEPA Sign","header_author":"Jocawebs","header_description":"Crea, firma, registra y env\u00eda mandatos SEPA desde WordPress.","assets_banners_color":"cccfdc","last_updated":"2026-08-07 02:22:19","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/www.jocawebs.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":32,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","changelog"],"tags":{"3.11.0":{"tag":"3.11.0","author":"jocawebs","date":"2026-08-07 02:22:19"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3637234,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3637234,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3637234,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3637234,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["3.11.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[25540,274720,1764,33609,723],"plugin_category":[50],"plugin_contributors":[274721],"plugin_business_model":[],"class_list":["post-348734","plugin","type-plugin","status-publish","hentry","plugin_tags-direct-debit","plugin_tags-mandate","plugin_tags-pdf","plugin_tags-sepa","plugin_tags-signature","plugin_category-media","plugin_contributors-jocawebs","plugin_committers-jocawebs"],"banners":{"banner":"https:\/\/ps.w.org\/sepa-sign\/assets\/banner-772x250.png?rev=3637234","banner_2x":"https:\/\/ps.w.org\/sepa-sign\/assets\/banner-1544x500.png?rev=3637234","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/sepa-sign\/assets\/icon-128x128.png?rev=3637234","icon_2x":"https:\/\/ps.w.org\/sepa-sign\/assets\/icon-256x256.png?rev=3637234","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>SEPA Sign adds a responsive front-end form with handwritten signature capture, Spanish NIF\/NIE\/CIF and IBAN validation, sequential UMR generation, PDF creation, private storage, and email delivery \u2014 everything needed to collect a legally-formatted SEPA direct debit mandate directly on your WordPress site.<\/p>\n\n<p>Version 2.0 added optional Cloudflare Turnstile spam protection, a diagnostics panel, CSV export, bulk PDF download as ZIP, mandate resending, and a status dashboard. Since version 3.0, this free plugin focuses purely on creating and signing mandates; the licensing, updates, and admin-convenience tools now live in a separate paid add-on, SEPA Sign PRO (not required to use this plugin).<\/p>\n\n<h3>Credits<\/h3>\n\n<p>This plugin bundles jsPDF (https:\/\/github.com\/parallax\/jsPDF), used client-side to generate the mandate PDF in the visitor's browser. Version and license are documented in the file header of assets\/vendor\/jspdf.umd.min.js. All other JavaScript and PHP in this plugin is original source code, written and maintained by us.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder, or install the ZIP from Plugins &gt; Add New.<\/li>\n<li>Activate SEPA Sign.<\/li>\n<li>Configure your company details, SEPA creditor identifier, and notification email under SEPA Sign &gt; Settings.<\/li>\n<li>Insert the [sepa_sign] shortcode on any page, or use the \"Generate SEPA mandate page\" button in Settings to create it automatically.<\/li>\n<li>Optional: for Cloudflare Turnstile spam protection, create a widget in Cloudflare, copy the Site Key and Secret Key, and enable it under Security.<\/li>\n<\/ol>\n\n<!--section=changelog-->\n<h4>3.11.0<\/h4>\n\n<ul>\n<li>Cambios a partir de la revisi\u00f3n de WordPress.org: script de la cabecera de Ajustes movido a un archivo propio (wp_enqueue_script en vez de  inline); los dos puntos de extensi\u00f3n para complementos ahora se filtran con una lista blanca de HTML concreta en vez de imprimirse directamente; assets\/js\/public.js reformateado a c\u00f3digo legible l\u00ednea por l\u00ednea (antes compacto en una sola l\u00ednea por funci\u00f3n, ahora se ve claramente que es c\u00f3digo fuente propio, no un archivo compilado); jsPDF actualizado de 2.5.1 a 4.2.1.<\/li>\n<\/ul>\n\n<h4>3.10.1<\/h4>\n\n<ul>\n<li>Quitado el t\u00edtulo \"SEPA Sign\" repetido en el Dashboard, ya que el logo de arriba ya lo dice.<\/li>\n<\/ul>\n\n<h4>3.10.0<\/h4>\n\n<ul>\n<li>A\u00f1adido un discreto \"Hecho con SEPA Sign\" al pie del formulario de firma, junto a la nota de la UMR. Se puede quitar con SEPA Sign PRO (licencia activa).<\/li>\n<\/ul>\n\n<h4>3.9.1<\/h4>\n\n<ul>\n<li>A\u00f1adido el logo de SEPA Sign en la pantalla principal del plugin.<\/li>\n<\/ul>\n\n<h4>3.9.0<\/h4>\n\n<ul>\n<li>Color de marca actualizado de verde musgo a azul, a juego con el nuevo logo de SEPA Sign. Afecta a botones, foco de campos y el mensaje de \u00e9xito. Los colores de \"correcto\"\/\"error\" no cambian (siguen siendo verde\/rojo, son de estado, no de marca).<\/li>\n<\/ul>\n\n<h4>3.8.5<\/h4>\n\n<ul>\n<li>uninstall.php: el analizador espera el prefijo exacto derivado del nombre del plugin (\"sepa_sign\", con guion bajo), no una variante pegada. Corregido para que coincida con el resto del c\u00f3digo.<\/li>\n<\/ul>\n\n<h4>3.8.4<\/h4>\n\n<ul>\n<li>uninstall.php: el prefijo \"ss_\" era demasiado corto y gen\u00e9rico para el analizador; renombrado a un prefijo inequ\u00edvoco.<\/li>\n<\/ul>\n\n<h4>3.8.3<\/h4>\n\n<ul>\n<li>Corregidos el resto de avisos de Plugin Check: nonces sin unslash antes de sanitizar, uso de WP_Filesystem en vez de funciones directas de PHP, consultas de estad\u00edsticas del dashboard marcadas como revisadas, variables globales de uninstall.php con prefijo propio, y el falso positivo de \"recurso externo\" en la carga de jsPDF (ya est\u00e1 empaquetado localmente, solo hab\u00eda que hacer la URL m\u00e1s expl\u00edcita para el analizador).<\/li>\n<li>Traducidos al ingl\u00e9s el resumen corto y la secci\u00f3n \"Description\" del readme (obligatorio para el directorio de WordPress.org); el resto de secciones se mantienen en espa\u00f1ol.<\/li>\n<\/ul>\n\n<h4>3.8.2<\/h4>\n\n<ul>\n<li>Corregidos los errores se\u00f1alados por Plugin Check: cabecera del plugin sin License, y varias salidas sin escapar (nombres de campo de ajustes, y los dos puntos de extensi\u00f3n para complementos, marcados expl\u00edcitamente como revisados).<\/li>\n<\/ul>\n\n<h4>3.8.1<\/h4>\n\n<ul>\n<li>Preparado para el repositorio de WordPress.org: Contributors, Tested up to y License URI correctos, y Author real en la cabecera del plugin.<\/li>\n<\/ul>\n\n<h4>3.8.0<\/h4>\n\n<ul>\n<li>Estilo de los campos del formulario cambiado a un look m\u00e1s sutil (l\u00ednea inferior en vez de caja completa), para que sea consistente con SEPA Sign PRO &gt; Documentos.<\/li>\n<\/ul>\n\n<h4>3.7.0<\/h4>\n\n<ul>\n<li>Corregido: cuando el formulario de mandato vive en la p\u00e1gina real generada autom\u00e1ticamente, el t\u00edtulo sal\u00eda duplicado (el de la propia p\u00e1gina de WordPress y el del formulario). Se quita el segundo.<\/li>\n<\/ul>\n\n<h4>3.6.0<\/h4>\n\n<ul>\n<li>Nuevo: si no tienes SEPA Sign PRO, en el men\u00fa aparece \"Documentos\" con una pantalla explicando esa funci\u00f3n y c\u00f3mo conseguirla (no bloquea nada, solo informa).<\/li>\n<\/ul>\n\n<h4>3.5.0<\/h4>\n\n<ul>\n<li>Nuevo: logo de empresa (Ajustes &gt; Apariencia), con casilla \"Poner el logo en la cabecera del mandato SEPA\".<\/li>\n<li>Nuevo: color de la firma a elegir (negro, azul oscuro, azul claro, rojo), compartido con SEPA Sign PRO.<\/li>\n<\/ul>\n\n<h4>3.4.0<\/h4>\n\n<ul>\n<li>Nuevo bot\u00f3n \"Generar p\u00e1gina de mandatos SEPA\" en Ajustes: crea una p\u00e1gina de WordPress real y editable en \/mandato-sepa con el formulario ya insertado. Ya no hace falta crear la p\u00e1gina ni pegar el shortcode a mano.<\/li>\n<\/ul>\n\n<h4>3.3.0<\/h4>\n\n<ul>\n<li>Los validadores de NIF\/NIE\/CIF e IBAN pasan a ser reutilizables por complementos (sin cambios de comportamiento).<\/li>\n<\/ul>\n\n<h4>3.2.0<\/h4>\n\n<ul>\n<li>Se elimina de la Lite todo el c\u00f3digo de: exportaci\u00f3n CSV, descarga masiva en ZIP, reenv\u00edo de mandatos y Cloudflare Turnstile. Esas funciones pasan a SEPA Sign PRO.<\/li>\n<li>En su lugar, la Lite muestra los controles deshabilitados con un aviso \"Disponible en SEPA Sign PRO\", y cede el sitio autom\u00e1ticamente si el add-on PRO est\u00e1 activo.<\/li>\n<li>Nuevos puntos de extensi\u00f3n gen\u00e9ricos para que PRO (u otros complementos futuros) puedan a\u00f1adir su propia verificaci\u00f3n antispam sin que la Lite conozca los detalles.<\/li>\n<\/ul>\n\n<h4>3.1.0<\/h4>\n\n<ul>\n<li>Punto de extensi\u00f3n interno para futuros complementos (p.ej. SEPA Sign PRO): dos acciones (<code>sepa_sign_mandate_reserved<\/code>, <code>sepa_sign_mandate_completed<\/code>) y un token de contexto opcional que viaja con el mandato.<\/li>\n<li>Sin cambios visibles para quien no tenga ning\u00fan complemento instalado.<\/li>\n<\/ul>\n\n<h4>3.0.0<\/h4>\n\n<ul>\n<li>SEPA Sign vuelve a ser un plugin 100% gratuito y autosuficiente: se elimina todo el sistema de licencias (activaci\u00f3n, comprobaci\u00f3n, avisos de caducidad).<\/li>\n<li>Ese apartado ahora vive en un complemento aparte, SEPA Sign PRO, que requiere este plugin instalado y activo.<\/li>\n<li>Sin cambios en la creaci\u00f3n y firma de mandatos: sigue funcionando exactamente igual.<\/li>\n<\/ul>\n\n<h4>2.4.0<\/h4>\n\n<ul>\n<li>Aviso en el admin de WordPress cuando la licencia est\u00e1 a 30 d\u00edas o menos de caducar, o ya ha caducado.<\/li>\n<li>La pantalla SEPA Sign &gt; Licencia tambi\u00e9n muestra el aviso junto al estado.<\/li>\n<li>Se basa en el dato de caducidad ya cacheado localmente (sin llamadas extra a la API).<\/li>\n<\/ul>\n\n<h4>2.3.0<\/h4>\n\n<ul>\n<li>Nuevo bot\u00f3n \"Desactivar esta instalaci\u00f3n\" en SEPA Sign &gt; Licencia: libera la plaza de este sitio sin necesidad de contactar con soporte.<\/li>\n<li>\u00datil para migraciones de dominio (staging \u2192 producci\u00f3n) o bajas de servicio.<\/li>\n<\/ul>\n\n<h4>2.2.1<\/h4>\n\n<ul>\n<li>Nuevo mensaje de error claro cuando la licencia alcanza su l\u00edmite de activaciones en otro sitio.<\/li>\n<\/ul>\n\n<h4>2.2.0<\/h4>\n\n<ul>\n<li>Comprobaci\u00f3n peri\u00f3dica de la licencia (una vez al d\u00eda v\u00eda WP-Cron) contra el servidor de licencias.<\/li>\n<li>Si la licencia se suspende o revoca en la plataforma, este sitio ya lo refleja sin necesidad de reactivar manualmente.<\/li>\n<li>Bot\u00f3n \"Comprobar ahora\" en SEPA Sign &gt; Licencia para forzar la comprobaci\u00f3n.<\/li>\n<li>Nueva petici\u00f3n POST a \/wp-json\/sepa-sign\/v1\/check (license, domain).<\/li>\n<li>Si la comprobaci\u00f3n falla por red, no se cambia el estado guardado (evita falsos negativos).<\/li>\n<\/ul>\n\n<h4>2.1.0<\/h4>\n\n<ul>\n<li>Nueva pantalla SEPA Sign &gt; Licencia.<\/li>\n<li>Activaci\u00f3n de licencia contra el servidor de licencias (sepasign.com).<\/li>\n<li>Guarda license_key, status, expires_at y product_id en opciones de WordPress.<\/li>\n<li>Muestra mensajes de error claros si la licencia no es v\u00e1lida o no est\u00e1 activa.<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Integraci\u00f3n opcional con Cloudflare Turnstile y validaci\u00f3n en servidor.<\/li>\n<li>Nombre y descripci\u00f3n mejorados para el honeypot.<\/li>\n<li>Dashboard con resumen y estado de configuraci\u00f3n.<\/li>\n<li>Diagn\u00f3stico de requisitos b\u00e1sicos.<\/li>\n<li>Correo de prueba.<\/li>\n<li>Exportaci\u00f3n de mandatos a CSV.<\/li>\n<li>Descarga de todos los PDF en ZIP.<\/li>\n<li>Reenv\u00edo de correos desde la ficha del mandato.<\/li>\n<li>La clave secreta de Turnstile no se incluye en las exportaciones.<\/li>\n<li>Conserva las validaciones en tiempo real y la validaci\u00f3n PHP.<\/li>\n<\/ul>\n\n<h4>2.0.2<\/h4>\n\n<ul>\n<li>Carga robusta de Turnstile mediante renderizado expl\u00edcito.<\/li>\n<li>Avisos visibles de carga y error.<\/li>\n<li>Corregido el env\u00edo del token de Turnstile al servidor.<\/li>\n<\/ul>","raw_excerpt":"Create, sign, log and send SEPA direct debit mandates from WordPress.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/348734","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=348734"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/jocawebs"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=348734"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=348734"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=348734"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=348734"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=348734"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=348734"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}