{"id":358608,"date":"2026-08-27T13:01:48","date_gmt":"2026-08-27T13:01:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/weinvoice-for-woocommerce\/"},"modified":"2026-08-27T13:03:43","modified_gmt":"2026-08-27T13:03:43","slug":"weproc-french-einvoicing","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/weproc-french-einvoicing\/","author":23554831,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.7.3","stable_tag":"0.7.3","tested":"7.1","requires":"6.8","requires_php":"7.4","requires_plugins":null,"header_name":"Weproc French E-Invoicing for WooCommerce","header_author":"Weproc","header_description":"Send your shop's B2B electronic invoices to WeInvoice, a French plateforme agr\u00e9\u00e9e (n\u00b00104), and read the regulatory lifecycle statuses back on the order screen.","assets_banners_color":"3e566d","last_updated":"2026-08-27 13:03:43","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/weinvoice.fr","rating":0,"author_block_rating":0,"active_installs":0,"downloads":28,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.7.3":{"tag":"0.7.3","author":"vswom83","date":"2026-08-27 13:03:43","revision":3668895}},"upgrade_notice":{"0.7.2":"<p>Housekeeping asked by the wordpress.org review: nothing changes on your shop.<\/p>","0.7.1":"<p>A rejected invoice now shows the reason for the rejection, which could previously stay blank for ever. Nothing to configure.<\/p>","0.7.0":"<p>Fixes two ways a business order could go uninvoiced or unreported: a valid company number refused at the checkout on its check digit, and a filed invoice showing no status on a shop WeInvoice cannot reach. Nothing to configure.<\/p>","0.6.0":"<p>New invoices are numbered by WeInvoice in one unbroken sequence. A shop that was already connected keeps its own numbering and is not renumbered; the choice is now a setting on the connection screen.<\/p>","0.5.0":"<p>Shows each invoice&#039;s official lifecycle status on the order screen and in the order list, and explains a rejection in plain language. Nothing you have to configure: the status channel is set up when the shop connects.<\/p>","0.4.0":"<p>Starts sending invoices for orders that reach Processing or Completed, and credit notes for refunds. Orders from private customers are unaffected and still send nothing.<\/p>","0.3.0":"<p>Adds the checkout SIREN field. Orders from private customers are unaffected and still send nothing.<\/p>","0.2.0":"<p>Adds the connection screen. Existing installs keep doing nothing until a key is entered.<\/p>","0.1.0":"<p>First release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3668890,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3668890,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3668890,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3668890,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.7.3"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3668890,"resolution":"1","location":"assets","locale":"","width":3360,"height":2100},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3668890,"resolution":"2","location":"assets","locale":"","width":2560,"height":2258},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3668890,"resolution":"3","location":"assets","locale":"","width":3360,"height":2044},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3668890,"resolution":"4","location":"assets","locale":"","width":3360,"height":1830},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3668890,"resolution":"5","location":"assets","locale":"","width":3360,"height":2356}},"screenshots":{"1":"The connection screen: the API key is stored and the company invoicing for the shop is recognised.","2":"The \"SIREN number\" field in the checkout, here on the block-based checkout.","3":"The regulatory status on the order screen: \"212 Encaiss\u00e9e\", with its official French code and label.","4":"The WeInvoice column in the order list: what is settled, and what is still in transit.","5":"The WooCommerce -&gt; WeInvoice screen: the queue, what is stopped and why, and what the plugin does not cover."}},"plugin_section":[],"plugin_tags":[225611,226218,9085,12480,286],"plugin_category":[45],"plugin_contributors":[277880],"plugin_business_model":[],"class_list":["post-358608","plugin","type-plugin","status-publish","hentry","plugin_tags-e-invoicing","plugin_tags-factur-x","plugin_tags-france","plugin_tags-invoice","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-vswom83","plugin_committers-vswom83"],"banners":{"banner":"https:\/\/ps.w.org\/weproc-french-einvoicing\/assets\/banner-772x250.png?rev=3668890","banner_2x":"https:\/\/ps.w.org\/weproc-french-einvoicing\/assets\/banner-1544x500.png?rev=3668890","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/weproc-french-einvoicing\/assets\/icon-128x128.png?rev=3668890","icon_2x":"https:\/\/ps.w.org\/weproc-french-einvoicing\/assets\/icon-256x256.png?rev=3668890","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/weproc-french-einvoicing\/assets\/screenshot-1.png?rev=3668890","caption":"The connection screen: the API key is stored and the company invoicing for the shop is recognised."},{"src":"https:\/\/ps.w.org\/weproc-french-einvoicing\/assets\/screenshot-2.png?rev=3668890","caption":"The \"SIREN number\" field in the checkout, here on the block-based checkout."},{"src":"https:\/\/ps.w.org\/weproc-french-einvoicing\/assets\/screenshot-3.png?rev=3668890","caption":"The regulatory status on the order screen: \"212 Encaiss\u00e9e\", with its official French code and label."},{"src":"https:\/\/ps.w.org\/weproc-french-einvoicing\/assets\/screenshot-4.png?rev=3668890","caption":"The WeInvoice column in the order list: what is settled, and what is still in transit."},{"src":"https:\/\/ps.w.org\/weproc-french-einvoicing\/assets\/screenshot-5.png?rev=3668890","caption":"The WooCommerce -&gt; WeInvoice screen: the queue, what is stopped and why, and what the plugin does not cover."}],"raw_content":"<!--section=description-->\n<p>From 1 September 2026, French businesses must receive electronic invoices, and\nissuing them becomes mandatory in turn. An invoice between two French businesses\nno longer travels as a PDF by e-mail: it travels through a <em>plateforme agr\u00e9\u00e9e<\/em>\n(PA), a platform registered by the tax administration.<\/p>\n\n<p>WeInvoice is one of those platforms \u2014 registered under number 0104. This plugin\nconnects your shop to it directly. There is no intermediary, no third-party\naccount to open and no government API key to request: your shop talks to the\nplatform that files the invoice.<\/p>\n\n<h4>What it does<\/h4>\n\n<ul>\n<li>Turns a qualifying WooCommerce order into a compliant electronic invoice and files it through WeInvoice, in the background, without ever slowing a customer's checkout.<\/li>\n<li>Numbers your invoices in one unbroken sequence, or keeps your own if you already have one.<\/li>\n<li>Creates the credit note a refund owes \u2014 automatically, for a partial refund as well as a full one.<\/li>\n<li>Shows the official lifecycle of each invoice on the order screen \u2014 deposited, received, made available, approved, refused, paid \u2014 in the regulatory vocabulary, not a re-invented one.<\/li>\n<li>Checks at checkout whether a business customer is reachable in the French PPF directory, so you know before the order is placed rather than after a rejection.<\/li>\n<li>Gives you one screen \u2014 WooCommerce &rarr; WeInvoice \u2014 that says where every invoice stands: what is waiting, what is in progress, what stopped and why, in plain language, with a button to send a stopped document again once you have fixed what caused it.<\/li>\n<li>Warns you, on that same screen, when nothing on your server is starting the background queue: your invoices would then leave late, and an electronic invoice is owed within 24 hours.<\/li>\n<\/ul>\n\n<h4>What it deliberately does not do<\/h4>\n\n<p><strong>B2C orders never leave your shop.<\/strong> An order whose buyer is a private\nindividual, or whose SIREN is not registered in the PPF directory, produces no\nelectronic invoice and <strong>no request of any kind<\/strong>. It is counted on the\nWooCommerce &rarr; WeInvoice screen so you can see exactly how much of your\nbusiness is not covered, and that count stays on your server. The\nregulation handles those sales through <em>e-reporting<\/em>, which this version does\nnot cover: if you sell to consumers you still owe that declaration by another\nroute, and this plugin will never pretend otherwise.<\/p>\n\n<p>It is also not a cash-register system: it does not take payments, does not keep a\ntill and records no settlement of its own.<\/p>\n\n<h4>Requirements<\/h4>\n\n<ul>\n<li>A WeInvoice account with an API key.<\/li>\n<li>WordPress 6.8 or later, WooCommerce 8.2 or later, PHP 7.4 or later.<\/li>\n<li>Sellers established in France, invoicing French business customers.<\/li>\n<\/ul>\n\n<h3>External Services<\/h3>\n\n<p>This plugin connects to <strong>one<\/strong> external service, and to nothing else. There is\nno analytics service, no error-reporting service, no relay and no telemetry of\nany kind.<\/p>\n\n<h4>WeInvoice (api.weinvoice.fr)<\/h4>\n\n<p><strong>Who operates it.<\/strong> Weproc SAS, France \u2014 the <em>plateforme agr\u00e9\u00e9e<\/em> n\u00b00104 that\nfiles your invoices with the tax administration.<\/p>\n\n<p><strong>What it is used for.<\/strong> Filing your electronic invoices and the credit notes\nyour refunds owe, reading their regulatory lifecycle statuses back, and checking\nwhether a business customer is registered in the French PPF directory.<\/p>\n\n<p><strong>When data is sent.<\/strong> Never before you have entered your own WeInvoice API key\non the plugin's settings screen. Once you have, <code>https:\/\/api.weinvoice.fr<\/code> is\ncontacted in five situations, and no other:<\/p>\n\n<ol>\n<li>When you save your credentials or press <em>Test the connection<\/em> \u2014 your API key is exchanged for a short-lived access token, and your account is asked which company invoices for this shop.<\/li>\n<li>When you save your credentials \u2014 the shop subscribes to the status updates of its own invoices, which is what makes situation 5 possible.<\/li>\n<li>When a business customer has entered a SIREN and the order is placed \u2014 that SIREN alone is sent, to check whether the company is reachable.<\/li>\n<li>When an order whose buyer carries a directory-registered SIREN reaches the <em>processing<\/em> or <em>completed<\/em> status, and when such an order is refunded \u2014 that document's invoice data is sent. This happens in a background job, never while a page is being served.<\/li>\n<li>While one of your invoices is still in flight \u2014 its status is read back, at most hourly on the first day and much less often afterwards, and not at all once it is settled.<\/li>\n<\/ol>\n\n<p><strong>What data is sent.<\/strong> In situation 3, a SIREN. In situation 4, the data an\nelectronic invoice legally carries: your own identification, the business\ncustomer's identification (SIREN\/SIRET, company name, billing address), the order\nlines with their amounts and VAT, the totals and the payment terms.<\/p>\n\n<p><strong>What is never sent.<\/strong> Orders placed by private individuals, orders whose buyer\ncarries no registered SIREN, your shop's traffic, your customer list, your\nproducts, and the count of out-of-perimeter orders itself.<\/p>\n\n<ul>\n<li>Service: https:\/\/weinvoice.fr<\/li>\n<li>Terms of service: https:\/\/weinvoice.fr\/cgu<\/li>\n<li>Privacy policy: https:\/\/weinvoice.fr\/politique-de-confidentialite<\/li>\n<\/ul>\n\n<p>In situation 3, the SIREN is checked <strong>at most once a day per company<\/strong>: the\nanswer is remembered on your own server, and a customer typing does not trigger\nanything \u2014 the check happens when the order is placed. If it cannot be made, the\norder goes through anyway; nothing at your checkout ever depends on our\navailability.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate WooCommerce first \u2014 this plugin requires it and WordPress will not activate it without it.<\/li>\n<li>Install this plugin from the WordPress plugin directory, or upload the ZIP under <em>Plugins \u2192 Add New \u2192 Upload Plugin<\/em>.<\/li>\n<li>Activate it.<\/li>\n<li>Go to <em>WooCommerce \u2192 Settings \u2192 Integrations \u2192 WeInvoice<\/em>.<\/li>\n<li>Paste the API key issued in your WeInvoice space, choose the environment, and save. Nothing is sent anywhere before that moment.<\/li>\n<li>Check the <em>Invoice numbering<\/em> setting on the same screen. Leave it on WeInvoice unless your shop already gives its orders real invoice numbers through another extension.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20an%20account%20with%20a%20government%20portal%3F\"><h3>Do I need an account with a government portal?<\/h3><\/dt>\n<dd><p>No. WeInvoice is itself a <em>plateforme agr\u00e9\u00e9e<\/em>; your shop talks to it, and it\nfiles with the administration. You need a WeInvoice account, nothing else.<\/p><\/dd>\n<dt id=\"who%20gives%20my%20invoices%20their%20numbers%3F\"><h3>Who gives my invoices their numbers?<\/h3><\/dt>\n<dd><p>WeInvoice does, unless you tell it otherwise. An invoice number cannot be reused\nand the sequence must not skip numbers, and a plain WooCommerce order number is\nneither of those: it is a website reference your shop shares with its pages,\nmedia and coupons, so it jumps whenever you publish anything else \u2014 and two shops\nbelonging to the same company would produce the same one. Leaving the numbering\nto WeInvoice gives you one unbroken series.<\/p>\n\n<p>Choose <em>This shop<\/em> only if you already run an extension that gives your orders\nreal invoice numbers; the plugin then sends the number your shop displays, and\nnothing about your series changes.<\/p>\n\n<p>Whichever you choose, the order number always travels on the invoice as your own\nreference, so you can find the order back from it.<\/p><\/dd>\n<dt id=\"i%20already%20had%20this%20plugin%20connected.%20did%20the%20update%20renumber%20my%20invoices%3F\"><h3>I already had this plugin connected. Did the update renumber my invoices?<\/h3><\/dt>\n<dd><p>No. A shop that was already connected keeps numbering its own invoices, exactly\nas before. The new setting is on the connection screen if you want to switch.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20orders%20from%20private%20customers%3F\"><h3>What happens to my orders from private customers?<\/h3><\/dt>\n<dd><p>Nothing leaves your shop. They are counted locally so that you can see them, and\nthat is all. Those sales fall under <em>e-reporting<\/em>, which this version does not\nhandle.<\/p><\/dd>\n<dt id=\"where%20do%20my%20business%20customers%20enter%20their%20siren%3F\"><h3>Where do my business customers enter their SIREN?<\/h3><\/dt>\n<dd><p>In an optional <em>Company SIREN number<\/em> field the plugin adds to the additional\ninformation section of your checkout \u2014 both the classic one and the block one. A\ncustomer who leaves it blank orders exactly as before: the field never blocks a\nsale. A number that is not nine valid digits is refused on the spot, while the\ncustomer is still on the page, rather than after the order is placed.<\/p><\/dd>\n<dt id=\"i%20already%20use%20the%20eu%20vat%20number%20extension.%20do%20my%20customers%20have%20to%20type%20their%20siren%20again%3F\"><h3>I already use the EU VAT Number extension. Do my customers have to type their SIREN again?<\/h3><\/dt>\n<dd><p>No. A French VAT number contains the company's SIREN, so the plugin reads the\nnumber that extension already stores and uses it. A VAT number issued in another\ncountry is left alone: its digits belong to a company in that country's register,\nnot to a French one, so no invoice is ever built from it.<\/p><\/dd>\n<dt id=\"what%20if%20a%20customer%27s%20siren%20is%20not%20in%20the%20ppf%20directory%20yet%3F\"><h3>What if a customer's SIREN is not in the PPF directory yet?<\/h3><\/dt>\n<dd><p>The order goes through and stays on your shop: it is marked out of perimeter and\ncounted, and nothing about it is sent anywhere. If the check itself could not be\nmade \u2014 your server offline, ours busy \u2014 the order is simply left undecided and\nsorted out when its invoice is filed. Your checkout never fails because of us.<\/p><\/dd>\n<dt id=\"a%20refund%20happened.%20do%20i%20have%20to%20do%20anything%3F\"><h3>A refund happened. Do I have to do anything?<\/h3><\/dt>\n<dd><p>No. A refund creates the credit note it owes, automatically, for a partial refund\nas well as a full one \u2014 nothing to tick and no e-mail to send.<\/p><\/dd>\n<dt id=\"does%20it%20slow%20down%20my%20shop%3F\"><h3>Does it slow down my shop?<\/h3><\/dt>\n<dd><p>No. Nothing is sent while an order is being saved: the order is put in a queue\nand the sending happens in the background, so a slow or unavailable service can\nnever delay or break a customer's checkout.<\/p><\/dd>\n<dt id=\"an%20invoice%20did%20not%20leave.%20what%20happens%3F\"><h3>An invoice did not leave. What happens?<\/h3><\/dt>\n<dd><p>It is retried on its own, with a growing delay, for up to four days \u2014 long enough\nfor you to sign a missing mandate, settle an account or switch on a setting and\nhave the invoice leave without touching anything. Every attempt is recorded on\nthe order itself, successes and failures alike, and stays there as long as the\norder does.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20high-performance%20order%20storage%20%28hpos%29%3F\"><h3>Does it work with high-performance order storage (HPOS)?<\/h3><\/dt>\n<dd><p>Yes. The plugin declares compatibility with HPOS and reads and writes orders\nexclusively through the WooCommerce CRUD.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20the%20block-based%20checkout%3F\"><h3>Does it work with the block-based checkout?<\/h3><\/dt>\n<dd><p>Yes. Compatibility with the cart and checkout blocks is declared, and the\nbusiness-customer field is registered for both the block and the classic\ncheckout.<\/p><\/dd>\n<dt id=\"where%20do%20i%20get%20an%20api%20key%3F\"><h3>Where do I get an API key?<\/h3><\/dt>\n<dd><p>In your WeInvoice space, under <em>Espace d\u00e9veloppeur<\/em>. The key is displayed once,\nin the <code>client_id.secret<\/code> form; paste it whole into the plugin's settings\nscreen. It is stored on your own server, is never displayed again and is\nremoved when you uninstall the plugin.<\/p><\/dd>\n<dt id=\"the%20plugin%20says%20my%20site%20seems%20to%20be%20hosted%20outside%20the%20european%20union.%20what%20does%20that%20mean%3F\"><h3>The plugin says my site seems to be hosted outside the European Union. What does that mean?<\/h3><\/dt>\n<dd><p>Your shop's request never reached WeInvoice: it was stopped by the filtering\ndevice in front of the platform, which the French e-invoicing conformity rules\nrequire. Invoicing data must stay inside the EU, so a shop whose server makes\nits outbound connections from outside it cannot file invoices. Ask your host\nwhich country your site connects out from \u2014 nothing on your WeInvoice account\nneeds changing.<\/p><\/dd>\n<dt id=\"where%20is%20my%20data%20hosted%3F\"><h3>Where is my data hosted?<\/h3><\/dt>\n<dd><p>On WeInvoice's infrastructure, in the European Union. See the privacy policy\nlinked above.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.7.3<\/h4>\n\n<ul>\n<li>wordpress.org review: the vendored SDK revision stamp is now <code>SDK-REVISION.txt<\/code> (extension-less files are not permitted in the directory). No functional change.<\/li>\n<\/ul>\n\n<h4>0.7.2<\/h4>\n\n<ul>\n<li>wordpress.org review: drop the Update URI header (directory-hosted plugins must not carry it), fix the Plugin URI, ship the .pot only (translations come from translate.wordpress.org).<\/li>\n<\/ul>\n\n<h4>0.7.1<\/h4>\n\n<ul>\n<li>A rejected invoice now tells you why. The reason does not travel with the status: the plugin asks for it separately, the moment a rejection lands. That second read was being cancelled by the rule that never asks twice about a settled invoice \u2014 so the order screen could show \"213 Rejet\u00e9e\" and nothing to act on. The reason is now fetched once, is not lost if the attempt fails, and the invoice stops being read as soon as it arrives.<\/li>\n<\/ul>\n\n<h4>0.7.0<\/h4>\n\n<ul>\n<li>A company number your customer types at the checkout is no longer refused on its check digit. Whether a company can be invoiced is decided by the official business directory, and some real French company numbers do not satisfy that key \u2014 so refusing them at the till turned business orders into ordinary sales without anything erroring. A number that is not nine digits is still refused, and a number the directory does not list is still left out of scope, with the reason named on the WeInvoice screen.<\/li>\n<li>A shop that WeInvoice cannot reach \u2014 behind a firewall, on an intranet, on a local install \u2014 no longer shows a blank status for an invoice that has in fact been filed. It reads the full lifecycle back, including the moment the regulatory data reaches the public portal, exactly as a reachable shop is told it.<\/li>\n<li>First release exercised end to end against a real WeInvoice environment: a real order, a real invoice, a real credit note.<\/li>\n<\/ul>\n\n<h4>0.6.0<\/h4>\n\n<ul>\n<li>WeInvoice now numbers your invoices by default, in one unbroken sequence. A WooCommerce order number is a website reference whose sequence skips numbers, which an invoice number must not do.<\/li>\n<li>A new setting on the connection screen lets a shop that already produces real invoice numbers keep sending its own.<\/li>\n<li>A shop that was already connected keeps its own numbering: nothing is renumbered by this update.<\/li>\n<li>If your WeInvoice account is not set to number invoices, the connection screen now says so, with a link to the switch \u2014 and invoices wait for you instead of being given up on.<\/li>\n<li>One screen &mdash; WooCommerce &rarr; WeInvoice &mdash; now says where every invoice stands: what is waiting, what stopped and why, and how much of your business this connector does not cover.<\/li>\n<li>First release published to the WordPress plugin directory.<\/li>\n<\/ul>\n\n<h4>0.5.0<\/h4>\n\n<ul>\n<li>The official lifecycle of each invoice now appears on the order screen and in a column of the order list \u2014 the regulatory code and its French label, \"212 Encaiss\u00e9e\" and not \"paid\".<\/li>\n<li>A finished invoice is shown apart from one still in flight, so a glance down the order list separates what is settled from what is not.<\/li>\n<li>When an invoice is rejected or refused, the reason is shown in plain language, with a button to send a corrected one.<\/li>\n<li>Statuses arrive as they happen, over a signed channel your shop subscribes to when you connect it.<\/li>\n<li>A shop that cannot be reached from the internet \u2014 behind a firewall, on an intranet, on a staging site \u2014 is not left in the dark: it asks WeInvoice instead, often on the first day and rarely afterwards, and stops asking once an invoice is settled.<\/li>\n<\/ul>\n\n<h4>0.4.0<\/h4>\n\n<ul>\n<li>Invoices are now sent. An order that reaches <em>Processing<\/em> or <em>Completed<\/em> is queued for emission \u2014 including one paid by bank transfer, cheque or on delivery, which many connectors miss because nothing marks them paid automatically.<\/li>\n<li>Nothing is sent while the order is being saved: the order is put in a queue and the sending happens in the background, so a slow or unavailable service can never delay or break a customer's checkout.<\/li>\n<li>If the sending fails it is retried on its own, with a growing delay, for up to four days \u2014 long enough for you to sign a missing mandate or settle an account and have the invoice leave without touching anything.<\/li>\n<li>A refund creates a credit note, automatically, for a partial refund as well as a full one. Nothing to tick and no e-mail to send.<\/li>\n<li>An order that reaches <em>Processing<\/em> and later <em>Completed<\/em> is invoiced once, never twice.<\/li>\n<li>Every attempt is recorded on the order itself, successes and failures alike, and stays there for as long as the order does.<\/li>\n<li>Orders from private customers still produce no request of any kind.<\/li>\n<\/ul>\n\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>Adds an optional <em>Company SIREN number<\/em> field to the checkout \u2014 both the classic checkout and the block-based one.<\/li>\n<li>The number is checked as it is submitted: nine digits and a valid check key, with the error shown on the spot rather than after the order.<\/li>\n<li>Business customers are recognised from the EU VAT Number extension too, when your shop uses it: a French VAT number contains the SIREN. A VAT number from another country is never turned into one.<\/li>\n<li>Each order is marked as covered or not covered, on the order itself, so the invoice queue of the next release has nothing to work out again.<\/li>\n<li>Orders from private customers still produce no request of any kind \u2014 the check runs only for an order that carries a valid SIREN, at most once a day per company, and never while a customer is typing.<\/li>\n<li>If the check cannot be made the order goes through anyway; your checkout never depends on our availability.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Connect the shop: paste your WeInvoice API key on the integration screen, pick the environment, and check the connection.<\/li>\n<li>The company invoicing for the shop is resolved automatically when the key carries only one, and asked for otherwise.<\/li>\n<li>Every refusal is explained in plain language, with a link to the WeInvoice screen that settles it \u2014 including a site hosted outside the European Union, a plan without API access, and each missing regulatory prerequisite.<\/li>\n<li>A \"Test the connection\" button re-runs the check without changing anything.<\/li>\n<li>The API key is stored on your server in a row WordPress does not preload, is never displayed again, and is deleted on uninstall.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>First skeleton release: WooCommerce integration screen, translations, HPOS and cart\/checkout-blocks compatibility declarations. No connection and no outbound request yet.<\/li>\n<\/ul>","raw_excerpt":"Send your WooCommerce B2B invoices through WeInvoice, a French plateforme agr\u00e9\u00e9e, and follow their official lifecycle from the order screen.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/358608","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=358608"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/vswom83"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=358608"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=358608"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=358608"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=358608"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=358608"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=358608"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}