{"id":285743,"date":"2026-03-04T11:14:18","date_gmt":"2026-03-04T11:14:18","guid":{"rendered":"https:\/\/fr.wordpress.org\/plugins\/peppol-invoice-for-woocommerce\/"},"modified":"2026-03-30T12:37:44","modified_gmt":"2026-03-30T12:37:44","slug":"gestoo-connector-for-peppol-invoicing","status":"publish","type":"plugin","link":"https:\/\/srd.wordpress.org\/plugins\/gestoo-connector-for-peppol-invoicing\/","author":7944534,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.5","stable_tag":"1.0.5","tested":"6.9.4","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"GestOO Connector for Peppol Invoicing for WooCommerce","header_author":"Webdigit (https:\/\/www.webdigit.be)","header_description":"WooCommerce to GestOO connector: create invoices and send via Peppol. Official invoicing stays in GestOO.","assets_banners_color":"2170a8","last_updated":"2026-03-30 12:37:44","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/www.gestoo.be","header_author_uri":"https:\/\/www.webdigit.be","rating":0,"author_block_rating":0,"active_installs":0,"downloads":650,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.3.0":{"tag":"0.3.0","author":"webdigit","date":"2026-03-04 11:15:39"},"0.3.1":{"tag":"0.3.1","author":"webdigit","date":"2026-03-06 08:31:06"},"0.4.0":{"tag":"0.4.0","author":"webdigit","date":"2026-03-06 09:21:53"},"0.5.0":{"tag":"0.5.0","author":"webdigit","date":"2026-03-18 08:47:02"},"0.6.0":{"tag":"0.6.0","author":"webdigit","date":"2026-03-18 09:51:00"},"0.7.0":{"tag":"0.7.0","author":"webdigit","date":"2026-03-18 10:01:27"},"0.8.0":{"tag":"0.8.0","author":"webdigit","date":"2026-03-18 10:49:26"},"0.9.0":{"tag":"0.9.0","author":"webdigit","date":"2026-03-18 14:18:53"},"1.0.0":{"tag":"1.0.0","author":"webdigit","date":"2026-03-18 14:53:10"},"1.0.1":{"tag":"1.0.1","author":"webdigit","date":"2026-03-18 16:17:46"},"1.0.2":{"tag":"1.0.2","author":"webdigit","date":"2026-03-18 16:38:20"},"1.0.3":{"tag":"1.0.3","author":"webdigit","date":"2026-03-18 18:25:18"},"1.0.4":{"tag":"1.0.4","author":"webdigit","date":"2026-03-27 08:54:24"},"1.0.5":{"tag":"1.0.5","author":"webdigit","date":"2026-03-30 12:37:44"}},"upgrade_notice":{"1.0.4":"<p>Sending from WooCommerce now respects GestOO invoice sending mode (email \/ Peppol \/ both \/ off). Update GestOO first if you rely on this behavior. Clearer error messages in the admin. Safe to update.<\/p>","1.0.3":"<p>Payment method displayed on GestOO invoices for paid WooCommerce orders. Safe to update.<\/p>","1.0.2":"<p>Billing phone sent to GestOO for contact creation. VAT stored with separate country code. Safe to update.<\/p>","1.0.1":"<p>VAT normalization fix: removes spaces\/dots\/hyphens from VAT numbers. Detailed Peppol errors (e.g. mod97) now shown in WooCommerce. Safe to update.<\/p>","1.0.0":"<p>1.0 stable release. Retry syncs client data and resends. Full Peppol error messages displayed. Safe to update.<\/p>","0.9.0":"<p>Retry button when Peppol send was rejected (e.g. tenant not configured). Use it to re-attempt after configuration. Safe to update.<\/p>","0.8.0":"<p>Invoice dates from WooCommerce (created_at, paid_at). WordPress spinner during AJAX. Column refresh without page reload. Safe to update.<\/p>","0.7.0":"<p>Fixes Test payload result visibility and improves mapping field descriptions. Safe to update.<\/p>","0.6.0":"<p>Settings page now organized in three tabs (General, Diagnostic, Test order). Buttons fixed. Safe to update.<\/p>","0.5.0":"<p>Adds &quot;Test order&quot; section to validate payload before first real send. Safe to update.<\/p>","0.4.0":"<p>Adds Peppol status columns and sync\/retry button in the orders list. Safe to update.<\/p>","0.3.1":"<p>Adds review prompt and uninstall cleanup. Safe to update.<\/p>","0.3.0":"<p>Plugin renamed for WordPress.org directory compliance. Re-activate after update.<\/p>","0.2.0":"<p>Inline JS\/CSS replaced with wp_enqueue calls. Re-activate after update.<\/p>","0.1.0":"<p>Initial release. Requires WordPress 6.0+, WooCommerce 7.0+, PHP 7.4+, and a GestOO account with API token.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3474472,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3474472,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3474491,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3474491,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.3.0","0.3.1","0.4.0","0.5.0","0.6.0","0.7.0","0.8.0","0.9.0","1.0.0","1.0.1","1.0.2","1.0.3","1.0.4","1.0.5"],"block_files":[],"assets_screenshots":{"screenshot-1.jpeg":{"filename":"screenshot-1.jpeg","revision":3476165,"resolution":"1","location":"assets","locale":"","width":3456,"height":1852},"screenshot-2.jpeg":{"filename":"screenshot-2.jpeg","revision":3476165,"resolution":"2","location":"assets","locale":"","width":596,"height":1054},"screenshot-3.jpeg":{"filename":"screenshot-3.jpeg","revision":3476165,"resolution":"3","location":"assets","locale":"","width":3456,"height":3152}},"screenshots":{"1":"WooCommerce Settings &gt; Integrations &gt; Peppol Invoicing (API token, trigger statuses).","2":"Order edit screen: Peppol Invoice meta box when status prevents generation (configuration link).","3":"Order edit screen: Peppol Invoice meta box with invoice generated (invoice number, Open in GestOO, Download PDF)."}},"plugin_section":[],"plugin_tags":[225611,12480,249779,286],"plugin_category":[45],"plugin_contributors":[223085],"plugin_business_model":[],"class_list":["post-285743","plugin","type-plugin","status-publish","hentry","plugin_tags-e-invoicing","plugin_tags-invoice","plugin_tags-peppol","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-webdigit","plugin_committers-webdigit"],"banners":{"banner":"https:\/\/ps.w.org\/gestoo-connector-for-peppol-invoicing\/assets\/banner-772x250.png?rev=3474491","banner_2x":"https:\/\/ps.w.org\/gestoo-connector-for-peppol-invoicing\/assets\/banner-1544x500.png?rev=3474491","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/gestoo-connector-for-peppol-invoicing\/assets\/icon-128x128.png?rev=3474472","icon_2x":"https:\/\/ps.w.org\/gestoo-connector-for-peppol-invoicing\/assets\/icon-256x256.png?rev=3474472","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/gestoo-connector-for-peppol-invoicing\/assets\/screenshot-1.jpeg?rev=3476165","caption":"WooCommerce Settings &gt; Integrations &gt; Peppol Invoicing (API token, trigger statuses)."},{"src":"https:\/\/ps.w.org\/gestoo-connector-for-peppol-invoicing\/assets\/screenshot-2.jpeg?rev=3476165","caption":"Order edit screen: Peppol Invoice meta box when status prevents generation (configuration link)."},{"src":"https:\/\/ps.w.org\/gestoo-connector-for-peppol-invoicing\/assets\/screenshot-3.jpeg?rev=3476165","caption":"Order edit screen: Peppol Invoice meta box with invoice generated (invoice number, Open in GestOO, Download PDF)."}],"raw_content":"<!--section=description-->\n<p><strong>Keep your WooCommerce store compliant with Peppol e-invoicing<\/strong> \u2014 mandatory for B2B in Belgium (Jan 2026) and rolling out across the EU. This plugin connects your store to <strong>GestOO<\/strong>, your Belgian invoicing and accounting platform, so you can create official invoices and send them on the <strong>Peppol<\/strong> network without complex setup.<\/p>\n\n<ul>\n<li><strong>Simple:<\/strong> Configure once (API token + trigger status). Orders automatically create invoices in GestOO and can be sent via Peppol.<\/li>\n<li><strong>Compliant:<\/strong> GestOO uses a certified Peppol Access Point \u2014 invoices meet B2B e-invoicing requirements.<\/li>\n<li><strong>Transparent:<\/strong> On each order, see sync status, invoice number, Peppol delivery status, and quick links to open in GestOO or retry.<\/li>\n<li><strong>Transparent pricing:<\/strong> \u20ac99\/year includes 50 documents\/month \u2014 no hidden fees. See gestoo.be\/tarifs for full details.<\/li>\n<li><strong>No lock-in:<\/strong> Official invoicing stays in GestOO. WooCommerce remains your store; GestOO remains your invoicing hub.<\/li>\n<\/ul>\n\n<p><strong>Requirements:<\/strong><\/p>\n\n<ul>\n<li>WordPress 6.0+<\/li>\n<li>WooCommerce 7.0+<\/li>\n<li>PHP 7.4+<\/li>\n<li>A <strong>GestOO<\/strong> account with the WooCommerce module enabled and an <strong>API token<\/strong><\/li>\n<\/ul>\n\n<p>Without a valid API token, plugin settings remain disabled and a clear link to create a GestOO account is shown.<\/p>\n\n<h4>How it works<\/h4>\n\n<ul>\n<li>When an order reaches a trigger status (e.g. Completed), the plugin sends order data to GestOO.<\/li>\n<li>GestOO creates the invoice and can send it via Peppol (after your account is validated).<\/li>\n<li>On the order edit screen, a \"Peppol Invoice\" box shows: sync status, invoice number, Peppol status, and links to open the invoice in GestOO or retry actions.<\/li>\n<\/ul>\n\n<p>Support: hello@gestoo.be<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin folder to <code>wp-content\/plugins\/<\/code> or install via WordPress admin.<\/li>\n<li>Activate the plugin under <strong>Plugins<\/strong>.<\/li>\n<li>Go to <strong>WooCommerce &gt; Settings &gt; Integrations &gt; Peppol Invoicing<\/strong>.<\/li>\n<li>Enter your GestOO API token, then click <strong>Test connection<\/strong>.<\/li>\n<li>Configure trigger order statuses and optional automatic Peppol send.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20this%20compliant%20with%20belgium%27s%202026%20b2b%20e-invoicing%20mandate%3F\"><h3>Is this compliant with Belgium's 2026 B2B e-invoicing mandate?<\/h3><\/dt>\n<dd><p>Yes. When used with GestOO, invoices are created in the required Peppol BIS Billing 3.0 format and sent via a certified Peppol Access Point. This meets the mandatory B2B e-invoicing requirements for Belgian VAT-registered businesses.<\/p><\/dd>\n<dt id=\"what%20does%20it%20cost%3F\"><h3>What does it cost?<\/h3><\/dt>\n<dd><p>GestOO WooCommerce + Peppol: \u20ac99\/year with 50 documents (invoices) per month included. No hidden fees. See gestoo.be\/tarifs for full pricing and volume tiers.<\/p><\/dd>\n<dt id=\"do%20i%20need%20a%20gestoo%20account%3F\"><h3>Do I need a GestOO account?<\/h3><\/dt>\n<dd><p>Yes. Invoicing and Peppol are handled by GestOO. This plugin only connects your store to GestOO. Create an account at gestoo.be and get an API token from your GestOO dashboard.<\/p><\/dd>\n<dt id=\"why%20are%20settings%20disabled%3F\"><h3>Why are settings disabled?<\/h3><\/dt>\n<dd><p>Settings are disabled until the connection test succeeds (valid API token). This avoids sending data to an invalid or missing backend.<\/p><\/dd>\n<dt id=\"who%20handles%20peppol%20compliance%3F\"><h3>Who handles Peppol compliance?<\/h3><\/dt>\n<dd><p>GestOO uses a certified Peppol Access Point to send invoices on the Peppol network. This plugin does not implement Peppol in WordPress.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.5<\/h4>\n\n<ul>\n<li><strong>Fix automatic invoice sync:<\/strong> order status from WooCommerce has no <code>wc-<\/code> prefix in the status-changed hook, but trigger settings use keys like <code>wc-completed<\/code>. Triggers now match correctly so invoices are created when the order reaches a selected status.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li><strong>GestOO sending mode alignment:<\/strong> the send API follows your GestOO account setting (<strong>GestOO \u2192 Settings \u2192 Modules \u2192 Invoicing \u2192 Sends tab<\/strong>): email only, Peppol only, email + Peppol, or disabled. Requires a current GestOO backend; if sending is disabled in GestOO, no invoice is sent automatically from the plugin.<\/li>\n<li><strong>Clearer admin errors:<\/strong> failed sends show a readable message, including the current GestOO sending mode and where to change it in GestOO.<\/li>\n<li>French translations updated for the new strings (fr_FR .po).<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Payload now includes payment_method_title (human-readable payment method). When an order is paid, GestOO invoice displays \"Commande WooCommerce pay\u00e9e via [method] le [date]\" instead of standard payment conditions.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Customer payload now includes billing phone. GestOO creates\/updates a contact with name, email, and phone when creating invoices from WooCommerce orders.<\/li>\n<li>VAT number: GestOO stores country code (ISO) and digits separately for PEPPOL compliance.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>VAT number normalization: extract country code and digits only (no spaces, dots, hyphens) before sending to GestOO. Fixes PEPPOL rejection when WooCommerce stores \"BE 056.776.111\" or \"056.776.111\".<\/li>\n<li>Detailed Peppol error messages (e.g. mod97 invalid) now propagated to WooCommerce order meta and displayed in meta box and event log modal.<\/li>\n<li>Setting \"Normalize VAT for PEPPOL\" now applies to all EU countries, not just Belgium.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li><strong>1.0 stable release.<\/strong> Production-ready WooCommerce to GestOO connector for Peppol e-invoicing.<\/li>\n<li>Retry button: full sync + Peppol send when status is Pending, Rejected, or Error. Client data (VAT, address, email) updated from WooCommerce when retrying.<\/li>\n<li>Sync button in orders list for Pending\/Rejected\/Error; no Sync when already Delivered (use Retry to resend).<\/li>\n<li>Peppol error messages: full validation messages (e.g. PEPPOL-COMMON-R043) stored and displayed when send is rejected.<\/li>\n<li>HPOS compatible. Belgium 2026 B2B e-invoicing compliant.<\/li>\n<\/ul>\n\n<h4>0.9.0<\/h4>\n\n<ul>\n<li>Retry button when Peppol status is Rejected: allows re-attempting send after tenant configuration or VAT correction (calls send-peppol API).<\/li>\n<li>Refresh status now only reads status; use Retry to re-evaluate and resend.<\/li>\n<\/ul>\n\n<h4>0.8.0<\/h4>\n\n<ul>\n<li>Dates facture : created_at (date cr\u00e9ation commande) et paid_at (date paiement) transmises \u00e0 GestOO. Factures non pay\u00e9es marqu\u00e9es comme non sold\u00e9es.<\/li>\n<li>Ic\u00f4nes coh\u00e9rentes : Sync (dashicons-update) et Ouvrir dans GestOO (dashicons-external) dans la liste des commandes.<\/li>\n<li>Spinner WordPress pendant les actions AJAX (Generate invoice, Sync, Send Peppol, Refresh).<\/li>\n<li>Rafra\u00eechissement de la colonne Peppol sans rechargement apr\u00e8s Sync r\u00e9ussi.<\/li>\n<\/ul>\n\n<h4>0.7.0<\/h4>\n\n<ul>\n<li>Fixed Test payload result not visible (ID conflict between API token and payload result div).<\/li>\n<li>Improved mapping descriptions: explicit note that keys are tested in order and first non-empty value wins.<\/li>\n<\/ul>\n\n<h4>0.6.0<\/h4>\n\n<ul>\n<li>Reorganized settings page into tabs: General settings | Diagnostic | Test order.<\/li>\n<li>Fixed Diagnostic and Test payload buttons (were rendered as text inputs; now use proper WooCommerce filter <code>woocommerce_generate_*_html<\/code>).<\/li>\n<li>Clear separation of concerns: connection\/mapping in General, diagnostic in Diagnostic tab, payload test in Test order tab.<\/li>\n<\/ul>\n\n<h4>0.5.0<\/h4>\n\n<ul>\n<li>Added \"Test order\" section in settings: select an order and run a dry-run payload test without creating an invoice.<\/li>\n<li>Payload test displays VAT number, language, vat_rate per line, field status (\u2713\/\u2717), and warnings.<\/li>\n<li>Toggle to show full JSON payload for debugging.<\/li>\n<li>Banner \"Settings modified. Test an order to validate.\" shown after saving settings, cleared after a successful test.<\/li>\n<\/ul>\n\n<h4>0.4.0<\/h4>\n\n<ul>\n<li>Added Peppol status columns in the WooCommerce orders list (HPOS + legacy compatible).<\/li>\n<li>Added smart sync\/retry button in the orders list: creates invoice if missing, refreshes Peppol status if already sent.<\/li>\n<li>Added event log modal (\u2139 button) showing timestamped error history per order.<\/li>\n<li>Stored error log (up to 20 entries) in order meta for diagnostics.<\/li>\n<\/ul>\n\n<h4>0.3.1<\/h4>\n\n<ul>\n<li>Added review prompt (J+30 after activation) to help users rate the plugin.<\/li>\n<li>Added uninstall cleanup (removes plugin options on deletion).<\/li>\n<li>Added plugin banner and screenshots on WordPress.org directory page.<\/li>\n<\/ul>\n\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>Renamed plugin to \"GestOO Connector for Peppol Invoicing for WooCommerce\" (slug: gestoo-connector-for-peppol-invoicing) to comply with WordPress.org trademark guidelines.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Added \"Requires Plugins: woocommerce\" header for WordPress 6.5+ plugin dependency support.<\/li>\n<li>Replaced inline JS and CSS with proper wp_enqueue_script \/ wp_enqueue_style \/ wp_localize_script calls.<\/li>\n<\/ul>\n\n<h4>0.1.1<\/h4>\n\n<ul>\n<li>Text domain aligned with plugin slug.<\/li>\n<li>Tested up to WordPress 6.9. Removed deprecated load_plugin_textdomain call.<\/li>\n<li>Default API URL set to https:\/\/my.gestoo.be.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Connection to GestOO API (health, create invoice, Peppol send, status).<\/li>\n<li>WooCommerce integration settings and order meta box.<\/li>\n<li>HPOS compatible.<\/li>\n<\/ul>","raw_excerpt":"Connect your WooCommerce store to GestOO for official invoices and Peppol e-invoicing. Belgium 2026 compliant. Simple setup.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/srd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/285743","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/srd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/srd.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/srd.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=285743"}],"author":[{"embeddable":true,"href":"https:\/\/srd.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/webdigit"}],"wp:attachment":[{"href":"https:\/\/srd.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=285743"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/srd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=285743"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/srd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=285743"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/srd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=285743"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/srd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=285743"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/srd.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=285743"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}