{"id":342289,"date":"2026-07-21T03:34:18","date_gmt":"2026-07-21T03:34:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/facture-electronique-for-woocommerce\/"},"modified":"2026-07-21T03:33:49","modified_gmt":"2026-07-21T03:33:49","slug":"buildsbyluke-facture-electronique-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/buildsbyluke-facture-electronique-for-woocommerce\/","author":23531792,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.1","stable_tag":"1.1.1","tested":"7.0.2","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"BuildsByLuke Facture \u00c9lectronique for WooCommerce","header_author":"Luke W","header_description":"French e-invoicing (r\u00e9forme 2026-2027) for WooCommerce: Factur-X\/UBL\/CII invoices, SIREN capture, credit notes, PA export, e-reporting.","assets_banners_color":"373232","last_updated":"2026-07-21 03:33:49","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/buildsbyluke.com\/plugins\/facture-electronique","header_author_uri":"https:\/\/buildsbyluke.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":27,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1.1":{"tag":"1.1.1","author":"lukeaxiomflow","date":"2026-07-21 03:33:49"}},"upgrade_notice":{"1.1.1":"<p>Packaging and compatibility refinements; no functional changes.<\/p>","1.1.0":"<p>First release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3616422,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3616422,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3616422,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3616422,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3616422,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3616422,"resolution":"1","location":"assets","locale":"","width":1290,"height":1110},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3616422,"resolution":"2","location":"assets","locale":"","width":1290,"height":1190},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3616422,"resolution":"3","location":"assets","locale":"","width":1290,"height":1190},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3616422,"resolution":"4","location":"assets","locale":"","width":1290,"height":1295}},"screenshots":{"1":"Documents &amp; Compliance: the readiness checklist for the 2026-2027 deadlines, the B2C e-reporting calendar for your VAT regime, the PA export package, and every document generated so far \u2014 each one downloadable as Factur-X, CII, UBL or PDF.","2":"Any order shows the customer type, SIREN and TVA captured at checkout, alongside the documents generated for it \u2014 here an invoice and the credit note (avoir) raised automatically from a partial refund.","3":"B2B capture on the block checkout (the classic checkout is supported too): customer type, SIREN and TVA intracommunautaire. All validation runs locally on your own server.","4":"Settings: the seller identity that appears on every e-invoice, invoice and credit-note numbering, payment terms, category of operation and VAT regime."}},"plugin_section":[],"plugin_tags":[247307,226218,72201,152126,286],"plugin_category":[45],"plugin_contributors":[78154,271970],"plugin_business_model":[],"class_list":["post-342289","plugin","type-plugin","status-publish","hentry","plugin_tags-e-invoice","plugin_tags-factur-x","plugin_tags-facturation","plugin_tags-facture","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-freemius","plugin_contributors-lukeaxiomflow","plugin_committers-lukeaxiomflow"],"banners":{"banner":"https:\/\/ps.w.org\/buildsbyluke-facture-electronique-for-woocommerce\/assets\/banner-772x250.png?rev=3616422","banner_2x":"https:\/\/ps.w.org\/buildsbyluke-facture-electronique-for-woocommerce\/assets\/banner-1544x500.png?rev=3616422","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/buildsbyluke-facture-electronique-for-woocommerce\/assets\/icon.svg?rev=3616422","icon":"https:\/\/ps.w.org\/buildsbyluke-facture-electronique-for-woocommerce\/assets\/icon.svg?rev=3616422","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/buildsbyluke-facture-electronique-for-woocommerce\/assets\/screenshot-1.png?rev=3616422","caption":"Documents &amp; Compliance: the readiness checklist for the 2026-2027 deadlines, the B2C e-reporting calendar for your VAT regime, the PA export package, and every document generated so far \u2014 each one downloadable as Factur-X, CII, UBL or PDF."},{"src":"https:\/\/ps.w.org\/buildsbyluke-facture-electronique-for-woocommerce\/assets\/screenshot-2.png?rev=3616422","caption":"Any order shows the customer type, SIREN and TVA captured at checkout, alongside the documents generated for it \u2014 here an invoice and the credit note (avoir) raised automatically from a partial refund."},{"src":"https:\/\/ps.w.org\/buildsbyluke-facture-electronique-for-woocommerce\/assets\/screenshot-3.png?rev=3616422","caption":"B2B capture on the block checkout (the classic checkout is supported too): customer type, SIREN and TVA intracommunautaire. All validation runs locally on your own server."},{"src":"https:\/\/ps.w.org\/buildsbyluke-facture-electronique-for-woocommerce\/assets\/screenshot-4.png?rev=3616422","caption":"Settings: the seller identity that appears on every e-invoice, invoice and credit-note numbering, payment terms, category of operation and VAT regime."}],"raw_content":"<!--section=description-->\n<p><strong>La r\u00e9forme de la facturation \u00e9lectronique arrive : 1er septembre 2026 (r\u00e9ception) et 1er septembre 2027 (\u00e9mission pour toutes les entreprises).<\/strong> This plugin helps a WooCommerce store get ready \u2014 and it answers the objection you have read everywhere (\"WooCommerce invoicing plugins are not compliant \u2014 use a certified SaaS\"): <strong>your Plateforme Agr\u00e9\u00e9e (PA) remains the legal transmission layer; this plugin is the automated pipe from your store to it.<\/strong><\/p>\n\n<h4>What the free version does (complete \u2014 no locked features)<\/h4>\n\n<ul>\n<li><strong>E-invoice generation per order<\/strong> in the three legal \"socle\" formats: <strong>Factur-X<\/strong> (PDF\/A-3 with embedded CII XML, EN 16931 profile, validated against the official XSD at generation time), <strong>UBL 2.1<\/strong>, and <strong>CII XML<\/strong> \u2014 every Plateforme Agr\u00e9\u00e9e must accept these.<\/li>\n<li><strong>Automatic generation on order completion<\/strong> (optional toggle, on by default): every order that reaches \"Completed\" gets its e-invoice with no manual click \u2014 plus one-click generation from any order or the orders list. Auto-generation waits until your seller identity (SIREN) is filled in Settings, because invoice numbering is immutable.<\/li>\n<li><strong>B2B checkout capture<\/strong>: customer type (particulier\/professionnel), <strong>SIREN<\/strong> (Luhn-validated locally, La Poste exception handled) and <strong>TVA intracommunautaire<\/strong> (FR key cross-checked against the SIREN) \u2014 on BOTH the classic checkout and the new block checkout, stored HPOS-safe. All validation runs locally on your server; nothing is sent anywhere.<\/li>\n<li><strong>Sequential, gap-free invoice numbering<\/strong> (atomic \u2014 safe under concurrent checkouts), assigned at generation time, separate sequence for credit notes.<\/li>\n<li><strong>Credit notes (avoirs)<\/strong> generated automatically on refunds (type 381, referencing the original invoice) \u2014 including amount-only refunds.<\/li>\n<li><strong>The four new mandatory invoice mentions<\/strong> (Sept 2026): buyer SIREN, category of operation, \"option TVA sur les d\u00e9bits\", delivery address \u2014 plus per-rate VAT breakdown, payment terms, late-payment mentions.<\/li>\n<li><strong>PA export package<\/strong>: one ZIP per period (all Factur-X\/XML documents + CSV manifest) to upload manually to YOUR Plateforme Agr\u00e9\u00e9e \u2014 whichever your accountant chose.<\/li>\n<li><strong>B2C e-reporting extract<\/strong>: daily-aggregated bases HT + VAT per rate (ticket-Z model, per the DGFiP spec \u2014 no transaction counts), with a <strong>regime-aware transmission calendar<\/strong> (r\u00e9el normal \/ simplifi\u00e9 \/ franchise).<\/li>\n<li><strong>Readiness checklist<\/strong> with the real deadlines \u2014 including what you must do OUTSIDE WordPress (choosing a PA).<\/li>\n<\/ul>\n\n<h4>Important, honest scope<\/h4>\n\n<ul>\n<li>This plugin is <strong>not a Plateforme Agr\u00e9\u00e9e<\/strong> and does not transmit invoices to the PPF itself. Legal transmission is performed by your PA; the merchant remains responsible for issued invoices.<\/li>\n<li><strong>No plugin can, by itself, make your business compliant with the r\u00e9forme<\/strong> \u2014 this one assists by generating the required document formats and data. What remains yours: choosing and registering with a PA, and your accounting obligations.<\/li>\n<li>It does not provide tax, legal or accounting advice (ne constitue pas un conseil fiscal, juridique ou comptable). Validate your first invoice with your PA or the FNFE-MPE validator.<\/li>\n<li>v1 supports EUR stores (French domestic rules). Multi-currency and OSS distance-selling rates are flagged in the checklist, not handled.<\/li>\n<\/ul>\n\n<p><strong><a href=\"https:\/\/buildsbyluke.com\/plugins\/facture-electronique\">Pro<\/a><\/strong>: automated transmission \u2014 each generated invoice is pushed to your PA's ingest API (generic REST connector, works with any PA exposing one) with a transmission log as your audit trail. Pro is a separate, paid build; its code is not part of this plugin. Sold and licensed through Freemius (see \"External services\").<\/p>\n\n<h3>External services<\/h3>\n\n<p>The plugin's own features run entirely on your server: invoice generation, checkout validation, numbering, exports and the e-reporting extract make <strong>no external requests at all<\/strong>.<\/p>\n\n<p><strong>Freemius (freemius.com), who sell and license the Pro version<\/strong>\nFreemius is contacted in four situations. Every one of them is something you click. It is never contacted in the background.<\/p>\n\n<ol>\n<li><strong>If you opt in on the activation screen<\/strong> (or start a trial \/ activate a licence). Sent to api.freemius.com: your site URL, your WordPress and PHP versions, and the email address of the account you activate with. Skipping the opt-in is a first-class choice and the plugin is fully functional without it.<\/li>\n<li><strong>If you open the \"Upgrade\" page<\/strong> under the plugin's menu. Your own server (not your browser) asks api.freemius.com for current plan prices, sending your site URL. The page itself loads no third-party scripts \u2014 everything it renders is served from this plugin's own folder. The payment SDK's bundled pricing script used to inject Google Analytics and a remote checkout script into wp-admin on that page; this build removes both, along with the SDK's remaining remote references (all modifications are listed under \"Source code\" below).<\/li>\n<li><strong>If you open the \"Contact Us\" page<\/strong>, which is Freemius's hosted support form (wp.freemius.com). The link carries your site URL and your WordPress login URL so the form knows which site you are writing about.<\/li>\n<li><strong>If you click a plan to buy<\/strong>, you go to Freemius's hosted checkout (checkout.freemius.com). It receives your site URL, site name, WordPress and PHP versions, and your WordPress administrator email address (pre-filled, sent whether or not you complete the purchase). Freemius is the merchant of record. Their checkout page loads its own third-party scripts (at the time of writing: Stripe, PayPal, Google Tag Manager, and Freemius's own assets); we do not control that list. If you never click a plan, none of it loads.<\/li>\n<\/ol>\n\n<p>Terms: https:\/\/freemius.com\/terms\/ \u2014 Privacy: https:\/\/freemius.com\/privacy\/<\/p>\n\n<p>Installing, activating, skipping the opt-in, using every screen, deactivating (the SDK's deactivation-feedback dialog is switched off in this build, so deactivation is one click and sends nothing), WordPress's update cycle and all scheduled tasks complete without contacting Freemius at all. Free updates come from WordPress.org like any other plugin.<\/p>\n\n<h3>Source code<\/h3>\n\n<p>This plugin's own PHP is unminified and readable in the plugin folder. It bundles the following third-party libraries (all GPL-compatible; licence files ship in each folder):<\/p>\n\n<ul>\n<li><strong>atgp\/factur-x<\/strong> v3.4 (MIT) \u2014 Factur-X PDF\/A-3 assembly + official XSD validation. One local modification, marked \"Facture Electronique:\" in src\/Writer.php: the library's XMP extension-schema data file ships renamed from .xmp to .xml (identical content \u2014 XMP is XML). https:\/\/github.com\/atgp\/factur-x<\/li>\n<li><strong>setasign\/FPDI<\/strong> v2 (MIT) \u2014 PDF import for the PDF\/A-3 container. https:\/\/github.com\/Setasign\/FPDI<\/li>\n<li><strong>smalot\/pdfparser<\/strong> v2 (LGPL-3.0) \u2014 PDF parsing used by the Factur-X writer. https:\/\/github.com\/smalot\/pdfparser<\/li>\n<li><strong>FPDF<\/strong> 1.8.x (permissive, see vendor\/fpdf\/license.txt) \u2014 base class required by FPDI. http:\/\/www.fpdf.org\/<\/li>\n<li><strong>tFPDF<\/strong> 1.24 (LGPL) \u2014 UTF-8 PDF rendering with embedded fonts. Two local modifications, each marked \"Facture Electronique:\" at the patch site: the PHP 5.4-era magic-quotes call in tFPDF.php is guarded so the class runs on PHP 8, and font\/unifont\/ttfonts.php carries the #[AllowDynamicProperties] attribute so PHP 8.2+ does not emit dynamic-property deprecations while font metrics are generated. http:\/\/www.fpdf.org\/en\/script\/script92.php<\/li>\n<li><strong>DejaVu fonts<\/strong> (Bitstream Vera licence + public-domain additions, see vendor\/tfpdf\/font\/unifont\/LICENSE-DejaVu.txt) \u2014 embedded so the PDFs are PDF\/A-viable.<\/li>\n<\/ul>\n\n<p>The one exception to \"unminified\" is the third-party payment SDK in <code>vendor\/freemius\/<\/code>, which ships pre-minified. Those files are the Freemius WordPress SDK, published under the GPL, and their unminified source and build tooling are public:<\/p>\n\n<ul>\n<li>Freemius WordPress SDK: https:\/\/github.com\/Freemius\/wordpress-sdk<\/li>\n<li>The pricing screen bundled at <code>vendor\/freemius\/assets\/js\/pricing\/freemius-pricing.js<\/code>: https:\/\/github.com\/Freemius\/pricing-page<\/li>\n<\/ul>\n\n<p>The minified files under <code>vendor\/freemius\/<\/code> are: <code>assets\/js\/pricing\/freemius-pricing.js<\/code>, <code>assets\/js\/postmessage.js<\/code>, <code>assets\/js\/nojquery.ba-postmessage.js<\/code>, <code>assets\/js\/jquery.form.js<\/code>, and thirteen stylesheets under <code>assets\/css\/<\/code>.<\/p>\n\n<p>This plugin ships four deliberate modifications to that SDK, all in <code>assets\/js\/pricing\/freemius-pricing.js<\/code>, all removing remote references from wp-admin. Three are marked with a \"Facture Electronique:\" comment at the patch site; the loader-image swap (3.) is a one-string replacement:<\/p>\n\n<ol>\n<li>The <code>appendScripts()<\/code> method is emptied. Upstream it injects <code>https:\/\/www.google-analytics.com\/analytics.js<\/code> and <code>https:\/\/checkout.freemius.com\/checkout.js<\/code> into wp-admin when the pricing screen renders.<\/li>\n<li>The Google Analytics pageview tracker is stubbed out. Upstream it reports pricing-page views to Freemius's Analytics property whenever a GA object is already present in wp-admin, stamping them with the Freemius user id.<\/li>\n<li>The remote loading spinner (<code>img.freemius.com\/blue-loader.gif<\/code>) is replaced with an inline data-URI equivalent.<\/li>\n<li>Testimonial photos (Gravatar\/remote) are forced to the bundled placeholder image, so the pricing page renders without any remote image requests.<\/li>\n<\/ol>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate (WooCommerce required).<\/li>\n<li>Fill <strong>Facture \u00c9lectronique \u2192 Settings<\/strong>: SIREN, TVA, legal mentions, VAT regime.<\/li>\n<li>Invoices now generate automatically when orders are completed (toggle in Settings) \u2014 or open any order and click <strong>Generate e-invoice<\/strong>. Download the Factur-X and validate it with your PA.<\/li>\n<li>Follow the readiness checklist for the Sept 2026 \/ Sept 2027 deadlines.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"est-ce%20que%20ce%20plugin%20me%20rend%20conforme%20%C3%A0%20la%20r%C3%A9forme%202026%20%3F\"><h3>Est-ce que ce plugin me rend conforme \u00e0 la r\u00e9forme 2026 ?<\/h3><\/dt>\n<dd><p>Aucun plugin ne peut, \u00e0 lui seul, garantir la conformit\u00e9. Celui-ci vous y aide : il g\u00e9n\u00e8re vos factures aux formats l\u00e9gaux (Factur-X\/UBL\/CII), capture le SIREN de vos clients professionnels, num\u00e9rote s\u00e9quentiellement, et pr\u00e9pare vos exports e-reporting. La transmission l\u00e9gale reste assur\u00e9e par votre Plateforme Agr\u00e9\u00e9e : choisissez-en une avec votre expert-comptable (\u00e9ch\u00e9ance : 1er septembre 2026 pour la r\u00e9ception).<\/p><\/dd>\n<dt id=\"do%20i%20need%20this%20if%20i%20already%20use%20a%20pdf%20invoice%20plugin%3F\"><h3>Do I need this if I already use a PDF invoice plugin?<\/h3><\/dt>\n<dd><p>PDF invoice plugins produce documents for humans. The 2026-2027 reform requires STRUCTURED e-invoices (Factur-X\/UBL\/CII) with the buyer's SIREN, routed through a Plateforme Agr\u00e9\u00e9e \u2014 plus e-reporting of B2C sales. That is what this plugin helps with.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20invoices%20if%20i%20uninstall%3F\"><h3>What happens to my invoices if I uninstall?<\/h3><\/dt>\n<dd><p>Nothing \u2014 generated documents stay in their folder under wp-content\/uploads\/ (invoices are legal records you must retain 10 years). Only settings and internal tables are removed.<\/p><\/dd>\n<dt id=\"is%20the%20factur-x%20output%20validated%3F\"><h3>Is the Factur-X output validated?<\/h3><\/dt>\n<dd><p>The embedded CII XML is validated against the official Factur-X XSD at generation time. Validate your first document with your PA's ingest test or the FNFE-MPE validator; the plain UBL\/CII XML outputs are also legally valid on every PA.<\/p><\/dd>\n<dt id=\"does%20the%20free%20version%20phone%20home%3F\"><h3>Does the free version phone home?<\/h3><\/dt>\n<dd><p>No. The plugin's own features make no external requests. The Freemius SDK (which powers the optional paid upgrade) only talks to Freemius in the four click-through situations listed under \"External services\" \u2014 never in the background.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Packaging: the Factur-X XMP extension-schema data file now ships with an .xml extension (identical content).<\/li>\n<li>Compatibility: the plugin no longer defines the global FPDF_FONTPATH constant \u2014 the bundled PDF libraries resolve their font folders per instance, so the plugin cannot collide with other plugins that bundle FPDF.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Initial release: Factur-X\/UBL\/CII generation (EN 16931), automatic generation on order completion, dual-checkout SIREN\/TVA capture, atomic numbering, credit notes, PA export package, e-reporting extract + calendar, readiness checklist.<\/li>\n<\/ul>","raw_excerpt":"French e-invoicing (r\u00e9forme 2026-2027) for WooCommerce: Factur-X, UBL &amp; CII invoices, SIREN checkout capture, credit notes, PA export, e-reporting.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/342289","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=342289"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/lukeaxiomflow"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=342289"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=342289"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=342289"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=342289"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=342289"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=342289"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}