{"id":282287,"date":"2026-04-06T20:12:29","date_gmt":"2026-04-06T20:12:29","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/verifactu-modulo-for-woocommerce\/"},"modified":"2026-04-06T20:11:59","modified_gmt":"2026-04-06T20:11:59","slug":"modulo-integration-for-verifactu","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/modulo-integration-for-verifactu\/","author":23341760,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.9","stable_tag":"1.0.9","tested":"6.9.4","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Modulo Integration for Verifactu","header_author":"PEKI AS","header_description":"Spanish tax compliance (Verifactu\/TicketBAI) integration for WooCommerce. Automatically registers invoices with AEAT and displays official QR codes.","assets_banners_color":"1a8d3f","last_updated":"2026-04-06 20:11:59","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/verifactumodulo.com\/woocommerce","header_author_uri":"https:\/\/verifactumodulo.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":130,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.9":{"tag":"1.0.9","author":"peki","date":"2026-04-06 20:11:59"}},"upgrade_notice":{"1.0.2":"<p>Addresses WordPress plugin review feedback: CSS\/JS now properly enqueued; external service documentation added to readme.<\/p>","1.0.0":"<p>Initial release of Modulo Integration for Verifactu.<\/p>"},"ratings":[],"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3500151,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-772x250.png":{"filename":"banner-772x250.png","revision":3500151,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.9"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"WooCommerce Verifactu M\u00f3dulo screen: connection status and statistics","2":"Connect to Verifactu M\u00f3dulo (onboarding entry point)","3":"QR code on the order thank-you page","4":"Order edit screen: Verifactu invoice meta box","5":"QR block in a customer email"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[282,12480,8637,2012,286],"plugin_category":[45],"plugin_contributors":[246420],"plugin_business_model":[],"class_list":["post-282287","plugin","type-plugin","status-publish","hentry","plugin_tags-ecommerce","plugin_tags-invoice","plugin_tags-spain","plugin_tags-tax","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-peki","plugin_committers-peki"],"banners":{"banner":"https:\/\/ps.w.org\/modulo-integration-for-verifactu\/assets\/banner-772x250.png?rev=3500151","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/modulo-integration-for-verifactu\/assets\/icon-256x256.png?rev=3500151","icon_2x":"https:\/\/ps.w.org\/modulo-integration-for-verifactu\/assets\/icon-256x256.png?rev=3500151","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>Modulo Integration for Verifactu<\/strong> connects your <strong>WooCommerce<\/strong> store to <strong>Verifactu M\u00f3dulo<\/strong> for <strong>Spanish tax compliance<\/strong>: <strong>Verifactu<\/strong> (national electronic invoicing), <strong>TicketBAI<\/strong> (Basque Country), and related <strong>AEAT<\/strong> requirements. Sell in Spain or to Spanish B2B customers with fewer manual steps\u2014orders can trigger <strong>invoice registration<\/strong> and customers receive <strong>official QR codes<\/strong> for verification.<\/p>\n\n<h4>Important: Sandbox first, production after upgrade<\/h4>\n\n<p>When you connect this plugin for the first time, your <strong>Verifactu M\u00f3dulo<\/strong> account runs on the <strong>Sandbox<\/strong> plan: <strong>test invoices only<\/strong>, for integration checks. <strong>You cannot issue official production invoices<\/strong> until you <strong>upgrade<\/strong> your subscription inside <strong><a href=\"https:\/\/app.verifactumodulo.com\">app.verifactumodulo.com<\/a><\/strong> (Billing \/ Plans\u2014Lite, Basic, Pro, Enterprise, etc.). The WordPress plugin does <strong>not<\/strong> change your plan or billing; you must complete that step in the web app. After upgrading, switch to <strong>Production<\/strong> \/ live mode there as guided by Verifactu M\u00f3dulo.<\/p>\n\n<p>The plugin is built for merchants who need <strong>WooCommerce + Spain<\/strong> workflows: online shops, marketplaces, and agencies managing <strong>Spanish VAT (IVA)<\/strong>, <strong>NIF\/CIF<\/strong>, and <strong>electronic invoice<\/strong> rules without building a custom AEAT integration.<\/p>\n\n<p><strong>Note:<\/strong> Verifactu is a regulation-based electronic invoicing system from the <strong>Spanish Tax Agency (AEAT)<\/strong>. This plugin helps you meet those requirements through <strong>Verifactu M\u00f3dulo<\/strong>; it does not replace legal or tax advice.<\/p>\n\n<h4>Why use this plugin?<\/h4>\n\n<ul>\n<li><strong>WooCommerce + Verifactu \/ TicketBAI<\/strong> in one flow: connect once, then automate eligible orders.<\/li>\n<li><strong>AEAT-oriented output<\/strong>: invoice metadata and <strong>QR codes<\/strong> aligned with compliance workflows.<\/li>\n<li><strong>Hosted configuration<\/strong>: company data, environment (production\/sandbox), and regions are managed in <strong>app.verifactumodulo.com<\/strong>\u2014WordPress stays lean.<\/li>\n<li><strong>HPOS compatible<\/strong>: works with WooCommerce <strong>High-Performance Order Storage<\/strong>.<\/li>\n<\/ul>\n\n<h4>Key features<\/h4>\n\n<ul>\n<li><strong>Automatic invoice registration<\/strong> for configured order statuses (e.g. processing\/completed)<\/li>\n<li><strong>QR code display<\/strong> on thank-you page, customer order view, and relevant emails<\/li>\n<li><strong>One-click onboarding<\/strong> with <strong>Verifactu M\u00f3dulo<\/strong> (no heavy setup inside wp-admin)<\/li>\n<li><strong>Retry handling<\/strong> for failed submissions (scheduled + manual retry from the order screen)<\/li>\n<li><strong>Sandbox by default<\/strong> on first connect; <strong>production invoicing<\/strong> after you <strong>upgrade the plan<\/strong> in the web app (not in WordPress)<\/li>\n<\/ul>\n\n<h4>Regions &amp; tax systems<\/h4>\n\n<ul>\n<li><strong>Verifactu<\/strong> (Spain \u2013 national)<\/li>\n<li><strong>TicketBAI<\/strong> (Bizkaia, Gipuzkoa, \u00c1lava)<\/li>\n<li><strong>IGIC<\/strong> context (Canary Islands) where applicable via your M\u00f3dulo configuration<\/li>\n<\/ul>\n\n<h4>Requirements<\/h4>\n\n<ul>\n<li><strong>WordPress<\/strong> 5.8+<\/li>\n<li><strong>WooCommerce<\/strong> 5.0+<\/li>\n<li><strong>PHP<\/strong> 7.4+<\/li>\n<li><strong>HTTPS<\/strong> (SSL) recommended for production<\/li>\n<li>Active <strong>Verifactu M\u00f3dulo<\/strong> account \u2014 <a href=\"https:\/\/verifactumodulo.com\">verifactumodulo.com<\/a><\/li>\n<\/ul>\n\n<h4>Espa\u00f1ol (resumen)<\/h4>\n\n<p>Integraci\u00f3n <strong>WooCommerce<\/strong> con <strong>Verifactu<\/strong> y <strong>TicketBAI<\/strong>: cumplimiento fiscal en Espa\u00f1a, registro ante la <strong>AEAT<\/strong> y c\u00f3digos QR para tus clientes. La configuraci\u00f3n avanzada se gestiona en <strong>app.verifactumodulo.com<\/strong>. Las cuentas nuevas empiezan en <strong>Sandbox<\/strong>; para facturaci\u00f3n real, mejora el plan en la aplicaci\u00f3n web.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin relies on external services for compliance and QR rendering:<\/p>\n\n<ol>\n<li><p><strong>Verifactu M\u00f3dulo<\/strong> (<code>app.verifactumodulo.com<\/code>, API on <code>ogjjcksexxbvguygexsk.supabase.co<\/code>)<\/p>\n\n<ul>\n<li><strong>Purpose:<\/strong> Store onboarding, invoice registration, and metadata for Verifactu\/TicketBAI workflows.<\/li>\n<li><strong>Data sent:<\/strong> Order identifiers, totals, taxes, line items, billing fields (name, company, email, phone), and store identifiers when you connect or when orders are processed.<\/li>\n<li><strong>When:<\/strong> During onboarding and when eligible WooCommerce orders are sent for invoicing.<\/li>\n<li><strong>Terms:<\/strong> https:\/\/verifactumodulo.com\/terms<\/li>\n<li><strong>Privacy:<\/strong> https:\/\/verifactumodulo.com\/privacy<\/li>\n<\/ul><\/li>\n<li><p><strong>QRServer<\/strong> (<code>api.qrserver.com<\/code>)<\/p>\n\n<ul>\n<li><strong>Purpose:<\/strong> Generate QR images for AEAT verification links on the storefront and emails.<\/li>\n<li><strong>Data sent:<\/strong> The verification URL encoded in the image request.<\/li>\n<li><strong>When:<\/strong> When a page or email renders a Verifactu QR block.<\/li>\n<li><strong>Terms:<\/strong> https:\/\/goqr.me\/legal\/tos-api.html<\/li>\n<li><strong>Privacy:<\/strong> https:\/\/goqr.me\/privacy-safety-security\/<\/li>\n<\/ul><\/li>\n<\/ol>\n\n<h3>Privacy Policy<\/h3>\n\n<p>This plugin sends order data to the Verifactu M\u00f3dulo API for tax compliance. Data can include:<\/p>\n\n<ul>\n<li>Order identifiers, totals, and tax amounts<\/li>\n<li>Billing name, company, email, phone<\/li>\n<li>Line item names, quantities, and prices<\/li>\n<\/ul>\n\n<p>See the <a href=\"https:\/\/verifactumodulo.com\/privacy\">Verifactu M\u00f3dulo Privacy Policy<\/a> for details.<\/p>\n\n<h3>Support<\/h3>\n\n<ul>\n<li><a href=\"https:\/\/verifactumodulo.com\/docs\">Documentation<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.org\/support\/plugin\/modulo-integration-for-verifactu\/\">WordPress.org support forum<\/a><\/li>\n<li><a href=\"https:\/\/verifactumodulo.com\/contact\">Contact<\/a><\/li>\n<\/ul>\n\n<h3>Credits<\/h3>\n\n<p>Developed by PEKI AS.<\/p>\n\n<!--section=installation-->\n<h4>Automatic installation<\/h4>\n\n<ol>\n<li>Log in to your WordPress admin.<\/li>\n<li>Go to <strong>Plugins \u2192 Add New<\/strong>.<\/li>\n<li>Search for <strong>Modulo Integration for Verifactu<\/strong> (or \u201cVerifactu WooCommerce\u201d).<\/li>\n<li>Click <strong>Install Now<\/strong>, then <strong>Activate<\/strong>.<\/li>\n<\/ol>\n\n<h4>Manual installation<\/h4>\n\n<ol>\n<li>Download the plugin ZIP.<\/li>\n<li>Go to <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong>.<\/li>\n<li>Choose the ZIP and install, then <strong>Activate<\/strong>.<\/li>\n<\/ol>\n\n<h4>Connect to Verifactu M\u00f3dulo<\/h4>\n\n<ol>\n<li>In wp-admin, open <strong>WooCommerce \u2192 Verifactu M\u00f3dulo<\/strong>.<\/li>\n<li>Click <strong>Connect to Verifactu M\u00f3dulo<\/strong> and complete onboarding at <strong>app.verifactumodulo.com<\/strong>.<\/li>\n<li>When you return to WordPress, confirm the connection status on the same screen.<\/li>\n<li>Expect <strong>Sandbox mode<\/strong> until you <strong>upgrade<\/strong> at <strong>app.verifactumodulo.com<\/strong>. For real customer invoices, choose a paid plan (Lite, Basic, Pro, Enterprise, \u2026) and enable <strong>Production<\/strong> there.<\/li>\n<\/ol>\n\n<p>Detailed company, tax region, billing, and environment (Sandbox vs Production) are managed in the <strong>Verifactu M\u00f3dulo<\/strong> web application\u2014not inside WordPress.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20this%20a%20woocommerce%20verifactu%20plugin%20for%20spain%3F\"><h3>Is this a WooCommerce Verifactu plugin for Spain?<\/h3><\/dt>\n<dd><p>Yes. It is designed for <strong>WooCommerce<\/strong> stores that must align with <strong>Spain<\/strong> electronic invoicing rules (<strong>Verifactu<\/strong>, <strong>TicketBAI<\/strong>, AEAT) using <strong>Verifactu M\u00f3dulo<\/strong> as the compliance backend.<\/p><\/dd>\n<dt id=\"do%20i%20need%20a%20verifactu%20m%C3%B3dulo%20account%3F\"><h3>Do I need a Verifactu M\u00f3dulo account?<\/h3><\/dt>\n<dd><p>Yes. Register through the plugin\u2019s connect flow or at <a href=\"https:\/\/verifactumodulo.com\">verifactumodulo.com<\/a>.<\/p><\/dd>\n<dt id=\"where%20is%20the%20settings%20screen%20in%20wordpress%3F\"><h3>Where is the settings screen in WordPress?<\/h3><\/dt>\n<dd><p>After activation, go to <strong>WooCommerce \u2192 Verifactu M\u00f3dulo<\/strong>. Advanced settings live on <strong>app.verifactumodulo.com<\/strong>.<\/p><\/dd>\n<dt id=\"why%20is%20my%20store%20in%20sandbox%20after%20connecting%3F\"><h3>Why is my store in Sandbox after connecting?<\/h3><\/dt>\n<dd><p><strong>New connections always start on the free Sandbox plan<\/strong> (test invoices, integration testing). This plugin <strong>cannot<\/strong> move you to production by itself. Open <strong><a href=\"https:\/\/app.verifactumodulo.com\">app.verifactumodulo.com<\/a><\/strong>, upgrade to a <strong>paid plan<\/strong> that fits your volume, and switch to <strong>Production<\/strong> \/ live invoicing there when your account is eligible.<\/p><\/dd>\n<dt id=\"how%20do%20i%20issue%20real%20invoices%20%28not%20test%29%3F\"><h3>How do I issue real invoices (not test)?<\/h3><\/dt>\n<dd><ol>\n<li>Log in to <strong>app.verifactumodulo.com<\/strong>.  <\/li>\n<li><strong>Upgrade<\/strong> from Sandbox to a plan (Lite, Basic, Pro, Enterprise, \u2026).  <\/li>\n<li>Configure <strong>Production<\/strong> mode and company data as required by Verifactu M\u00f3dulo.<br \/>\nPricing and limits are defined only in the web app, not in this plugin.<\/li>\n<\/ol><\/dd>\n<dt id=\"which%20order%20statuses%20trigger%20processing%3F\"><h3>Which order statuses trigger processing?<\/h3><\/dt>\n<dd><p>By default, <strong>Processing<\/strong> and <strong>Completed<\/strong> orders are handled automatically (configurable in plugin behaviour).<\/p><\/dd>\n<dt id=\"what%20if%20an%20order%20fails%3F\"><h3>What if an order fails?<\/h3><\/dt>\n<dd><p>Failed attempts are stored on the order; the plugin can <strong>retry<\/strong> on a schedule and you can <strong>retry manually<\/strong> from the order screen.<\/p><\/dd>\n<dt id=\"can%20i%20test%20before%20production%3F\"><h3>Can I test before production?<\/h3><\/dt>\n<dd><p>Yes. <strong>Sandbox is the default<\/strong> after you connect. Use it to validate the integration. When you are ready for <strong>live AEAT invoicing<\/strong>, upgrade your plan and enable production in <strong>app.verifactumodulo.com<\/strong>\u2014not in WordPress alone.<\/p><\/dd>\n<dt id=\"is%20data%20transmitted%20securely%3F\"><h3>Is data transmitted securely?<\/h3><\/dt>\n<dd><p>API traffic uses <strong>HTTPS<\/strong>. API keys are stored in WordPress options and only partially shown in the admin UI.<\/p><\/dd>\n<dt id=\"where%20do%20customers%20see%20the%20qr%20code%3F\"><h3>Where do customers see the QR code?<\/h3><\/dt>\n<dd><p>On the <strong>order received<\/strong> page, <strong>order details<\/strong> in \u201cMy account\u201d, and in supported <strong>order emails<\/strong> when a QR URL is available.<\/p><\/dd>\n<dt id=\"can%20i%20style%20the%20qr%20block%3F\"><h3>Can I style the QR block?<\/h3><\/dt>\n<dd><p>Yes. Target the <code>.verifactu-qr-container<\/code> class in your theme CSS.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.9<\/h4>\n\n<ul>\n<li>Readme and admin UI: clarify that <strong>Sandbox is the default<\/strong> after connect; <strong>production invoicing<\/strong> requires <strong>upgrading the plan<\/strong> at app.verifactumodulo.com (WordPress does not change billing).<\/li>\n<li>Dashboard: warning notice when environment is not Production; Getting Started step for Sandbox vs paid plans.<\/li>\n<\/ul>\n\n<h4>1.0.8<\/h4>\n\n<ul>\n<li>Removed <code>load_plugin_textdomain()<\/code>; WordPress 4.6+ loads translations for plugins hosted on WordPress.org automatically (Plugin Check).<\/li>\n<li>Readme short description rewritten in standard English for the directory language check.<\/li>\n<\/ul>\n\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>Text domain aligned with plugin directory slug: <code>modulo-integration-for-verifactu-2<\/code> (PHPCS\/WPCS TextDomainMismatch).<\/li>\n<li>Renamed translation files to <code>modulo-integration-for-verifactu-2-*.po<\/code> \/ <code>.pot<\/code>; added explicit <code>load_plugin_textdomain()<\/code> on <code>init<\/code>.<\/li>\n<li>PHPCS: broadened NonceVerification ignore for OAuth callback blocks (external redirect, no WP nonce).<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Rebranded plugin: renamed to \"Modulo Integration for Verifactu\" with slug modulo-integration-for-verifactu<\/li>\n<li>Updated text domain to \"modulo-integration-for-verifactu\" across all files<\/li>\n<li>Moved all admin CSS and JavaScript from inline output to properly enqueued files via wp_enqueue_style() and wp_enqueue_script() on admin_enqueue_scripts<\/li>\n<li>Removed all remaining inline style attributes from admin templates; moved to admin\/css\/admin.css<\/li>\n<li>Added external services documentation for Verifactu Modulo API and QRServer (api.qrserver.com) in readme.txt<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Branding update: Plugin name changed from \"Verifactu Module for WooCommerce\" to \"Modulo Verifactu for WooCommerce\"<\/li>\n<li>Updated text domain from \"verifactu-module-for-woocommerce\" to \"modulo-verifactu-for-woocommerce\"<\/li>\n<li>No functional changes<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>One-click onboarding with app.verifactumodulo.com<\/li>\n<li>Automatic order processing (on completed and processing status)<\/li>\n<li>QR code display on thank you page, order details, and emails<\/li>\n<li>Admin dashboard with statistics and connection status<\/li>\n<li>Order meta box with invoice details and manual retry<\/li>\n<li>Multi-region support (Verifactu, TicketBAI, IGIC)<\/li>\n<li>Production and Sandbox environment support<\/li>\n<li>Automatic hourly retry for failed orders<\/li>\n<li>WooCommerce HPOS (High-Performance Order Storage) compatible<\/li>\n<\/ul>","raw_excerpt":"Connect WooCommerce to Verifactu Modulo for Spanish tax compliance. Sandbox by default; upgrade in the app for live invoicing.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/282287","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=282287"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/peki"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=282287"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=282287"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=282287"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=282287"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=282287"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=282287"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}