{"id":363450,"date":"2026-09-18T09:18:44","date_gmt":"2026-09-18T09:18:44","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/konform\/"},"modified":"2026-09-18T14:09:21","modified_gmt":"2026-09-18T14:09:21","slug":"deklera","status":"publish","type":"plugin","link":"https:\/\/arg.wordpress.org\/plugins\/deklera\/","author":23559844,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.3.11","stable_tag":"0.3.11","tested":"7.1.2","requires":"6.5","requires_php":"8.2","requires_plugins":null,"header_name":"Deklera","header_author":"Hasan Ekrem Tekerek","header_description":"Turns WooCommerce orders into legally valid e-invoices for the seller's country and delivers them through the seller's own e-invoicing provider.","assets_banners_color":"6fa699","last_updated":"2026-09-18 14:09:21","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/ekremtekerek\/deklera","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":102,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.3.10":{"tag":"0.3.10","author":"ekremtekerek","date":"2026-09-18 09:40:36","revision":3701701},"0.3.11":{"tag":"0.3.11","author":"ekremtekerek","date":"2026-09-18 14:09:21","revision":3702118}},"upgrade_notice":{"0.3.8":"<p>Pro no longer needs a separate validation key: your licence now authorises\nofficial validation on its own. If you had pasted a key, it keeps working. The\norder screen also names the rule when a document is refused.<\/p>","0.3.2":"<p>Adds a user guide and fixes the Pro setup screen, which previously left you\nwith two empty fields and no explanation. Nothing to do after upgrading.<\/p>","0.3.1":"<p>Fixes a Pro-only problem: the first validation of the day could be reported\nas &quot;service unavailable&quot;. Nothing to do after upgrading.<\/p>","0.3.0":"<p>The plugin is now called Deklera. Settings and the archive do not carry over:\nre-enter your VAT number, your KSeF token, and on Pro your licence. Invoices\nalready registered with KSeF keep their numbers and are unaffected.<\/p>","0.2.1":"<p>Polish stores that issue VAT-exempt invoices should reissue any exempt invoice\nsent with 0.2.0; the exemption basis was recorded in the wrong field.<\/p>","0.2.0":"<p>Adds Poland (KSeF). Polish stores must enter a KSeF token; other stores are\nunaffected.<\/p>","0.1.0":"<p>First release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3701585,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3701585,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3701585,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3701585,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.3.10","0.3.11"],"block_files":[],"assets_screenshots":{"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":3701585,"resolution":"1","location":"assets","locale":"","width":1568,"height":698},"screenshot-2.jpg":{"filename":"screenshot-2.jpg","revision":3701585,"resolution":"2","location":"assets","locale":"","width":1568,"height":698},"screenshot-3.jpg":{"filename":"screenshot-3.jpg","revision":3701585,"resolution":"3","location":"assets","locale":"","width":1568,"height":698}},"screenshots":{"1":"The pre-flight report: how many recent orders would be rejected, and why.","2":"Findings grouped by root cause, each with the EN 16931 rule reference.","3":"The e-invoice box on the order screen, with document versions and history."}},"plugin_section":[],"plugin_tags":[267987,226218,252347,286,263529],"plugin_category":[45],"plugin_contributors":[281411],"plugin_business_model":[],"class_list":["post-363450","plugin","type-plugin","status-publish","hentry","plugin_tags-e-rechnung","plugin_tags-factur-x","plugin_tags-ksef","plugin_tags-woocommerce","plugin_tags-xrechnung","plugin_category-ecommerce","plugin_contributors-ekremtekerek","plugin_committers-ekremtekerek"],"banners":{"banner":"https:\/\/ps.w.org\/deklera\/assets\/banner-772x250.png?rev=3701585","banner_2x":"https:\/\/ps.w.org\/deklera\/assets\/banner-1544x500.png?rev=3701585","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/deklera\/assets\/icon-128x128.png?rev=3701585","icon_2x":"https:\/\/ps.w.org\/deklera\/assets\/icon-256x256.png?rev=3701585","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/deklera\/assets\/screenshot-1.jpg?rev=3701585","caption":"The pre-flight report: how many recent orders would be rejected, and why."},{"src":"https:\/\/ps.w.org\/deklera\/assets\/screenshot-2.jpg?rev=3701585","caption":"Findings grouped by root cause, each with the EN 16931 rule reference."},{"src":"https:\/\/ps.w.org\/deklera\/assets\/screenshot-3.jpg?rev=3701585","caption":"The e-invoice box on the order screen, with document versions and history."}],"raw_content":"<!--section=description-->\n<p><strong>Producing e-invoice XML is the easy part. The hard part is that WooCommerce\norder data is rarely clean enough for it<\/strong> \u2014 and you find out weeks later, when\nan invoice comes back rejected and you have to work out which of two hundred\nbusiness rules you broke.<\/p>\n\n<p>Deklera starts at that problem, not at the XML.<\/p>\n\n<p>Install it, open the report, and it tells you in plain language which of your\nrecent orders would be rejected and why. Then it produces the document your\ncountry requires \u2014 <strong>XRechnung<\/strong> in Germany, <strong>Factur-X<\/strong> in France,\n<strong>KSeF FA(3)<\/strong> in Poland \u2014 and, on the Pro plan, checks it against the\n<strong>official<\/strong> EN 16931 rule set before it is issued.<\/p>\n\n<p>Want to see what the official rule set says about an invoice before you install\nanything? Paste one here, no sign-up, nothing stored:\nhttps:\/\/ekremtekerek.github.io\/deklera\/check\/<\/p>\n\n<h4>The pre-flight check<\/h4>\n\n<p>This is what the plugin is for. It scans your orders and reports, for each\nproblem: what happened, why it matters, the exact rule reference, and where to\nfix it. No jargon, no \"invalid order\".<\/p>\n\n<p>Real examples from the report:<\/p>\n\n<ul>\n<li><em>\"This is a cross-border EU business sale with no VAT, but the customer VAT\nnumber is missing.\"<\/em> \u2014 <code>BT-48 \/ BR-AE-09<\/code>. Without it the exemption cannot be\njustified and the invoice is rejected.<\/li>\n<li><em>\"The invoice lines add up to \u20ac120.00 but the order total is \u20ac112.50, a\ndifference of \u20ac7.50.\"<\/em> \u2014 <code>BT-112 \/ BR-CO-15<\/code>. Validators reject totals that\ndo not reconcile, even by one cent.<\/li>\n<\/ul>\n\n<p>Findings are grouped by root cause, so a store-wide problem is reported once \u2014\nnot repeated on every order.<\/p>\n\n<p>Other things it catches:<\/p>\n\n<ul>\n<li>Sales to EU consumers where no VAT was charged at all<\/li>\n<li>Missing store VAT number, incomplete store address<\/li>\n<li>VAT categories that contradict the rate applied<\/li>\n<li>Orders with no customer name or no billing country<\/li>\n<\/ul>\n\n<p>When Deklera has to make a judgement call \u2014 is this a service or goods? \u2014 it\nsays so and marks the order for review instead of guessing silently. You can\noverride it with a filter.<\/p>\n\n<h4>Generating documents<\/h4>\n\n<p>Deklera maps each order to the EN 16931 semantic model and produces the format\nyour country requires:<\/p>\n\n<ul>\n<li><strong>France<\/strong> \u2014 Factur-X: a PDF\/A-3 file with the XML embedded inside it. The\nEN 16931 profile it uses is the same specification <strong>ZUGFeRD 2.x<\/strong> publishes\nunder its own name, so a German recipient that accepts ZUGFeRD accepts these\nfiles<\/li>\n<li><strong>Germany<\/strong> \u2014 XRechnung 3.0, the pure-XML <em>E-Rechnung<\/em> the public sector and\na growing number of B2B recipients require<\/li>\n<li><strong>Poland<\/strong> \u2014 KSeF FA(3), the <em>faktura ustrukturyzowana<\/em>, submitted to the\nnational platform<\/li>\n<li><strong>Other countries<\/strong> \u2014 EN 16931 CII, the European baseline. Read the FAQ below before relying on it.<\/li>\n<\/ul>\n\n<p>The tax category (standard, reverse charge, intra-community supply, export) is\nderived from where the seller and buyer are, not guessed from the rate alone.\nWhere a decision is uncertain, Deklera says so instead of silently guessing.<\/p>\n\n<p>Documents are archived and never overwritten. Regenerating creates a new\nversion; the old one stays, because quietly replacing an issued invoice is not\nsomething an audit will forgive.<\/p>\n\n<h4>What this plugin does not do<\/h4>\n\n<p><strong>It does not transmit invoices, except to KSeF.<\/strong> Deklera produces the\ndocument and checks it; delivery goes through your own accredited provider \u2014 a\nPDP in France, a Peppol access point elsewhere. Poland is the exception,\nbecause there an unsent file is not an invoice at all. If you are looking for a\nplugin that sends invoices to a network, this is not it, and you should not buy\nit expecting that.<\/p>\n\n<p>It also <strong>does not guarantee legal compliance<\/strong>. No software can. Whether a\nspecific invoice is accepted depends on your registration, your provider and\nrules that change over time. What Deklera can honestly promise is narrower and\nmore useful: it tells you when your data will fail the standard, and it checks\nthe finished document against the official rule set before you issue it.<\/p>\n\n<h4>Who this is for<\/h4>\n\n<p>Shops that already know they need e-invoicing and want to find out, now,\nwhether their order data is ready \u2014 rather than discovering it one rejection\nat a time.<\/p>\n\n<p>France requires e-invoicing from September 2026, small businesses from\nSeptember 2027. Poland's KSeF already covers most VAT-registered businesses.\nGermany accepts XRechnung and ZUGFeRD today, and under the\n<em>E-Rechnungspflicht<\/em> every business there has had to be able to receive an\ne-invoice since January 2025.<\/p>\n\n<h3>External services<\/h3>\n\n<p><strong>Official validation service (Pro only, optional)<\/strong><\/p>\n\n<p>The Pro version can validate each document against the official EN 16931\nSchematron rule set. This validation cannot run inside WordPress: the rule set\ncompiles to XSLT 2.0, and PHP's XSL extension only supports XSLT 1.0.<\/p>\n\n<p>When enabled, the invoice XML is sent over HTTPS to a validation service\noperated by the plugin author. The XML contains your invoice data, including\nseller and buyer names, addresses, VAT numbers and line items. It is processed\nin memory to produce the validation report and is not stored.<\/p>\n\n<p>This service is <strong>off by default<\/strong> and only runs on the Pro plan after you enter\nan endpoint and licence key.<\/p>\n\n<ul>\n<li>Service: Deklera validation service<\/li>\n<li>Terms: https:\/\/github.com\/ekremtekerek\/deklera\/blob\/main\/docs\/TERMS.md<\/li>\n<li>Privacy: https:\/\/github.com\/ekremtekerek\/deklera\/blob\/main\/docs\/PRIVACY.md<\/li>\n<\/ul>\n\n<p><strong>KSeF (Poland only, required for Polish stores)<\/strong><\/p>\n\n<p>If your store is based in Poland, each generated FA(3) invoice is submitted to\nthe Polish Ministry of Finance's National e-Invoice System (KSeF). This is not\noptional for Polish stores: an FA(3) file has no legal standing until KSeF\naccepts it and assigns a number.<\/p>\n\n<p>The invoice is encrypted on your site before it leaves it, and sent over HTTPS.\nIt contains your invoice data: seller and buyer names, addresses, tax\nidentifiers and line items. You choose the environment; the test environment\nhas no legal effect.<\/p>\n\n<ul>\n<li>Service: KSeF (Krajowy System e-Faktur), Ministerstwo Finans\u00f3w<\/li>\n<li>Test: https:\/\/api-test.ksef.mf.gov.pl<\/li>\n<li>Production: https:\/\/api.ksef.mf.gov.pl<\/li>\n<li>Terms: https:\/\/ksef.mf.gov.pl<\/li>\n<\/ul>\n\n<p>Stores outside Poland never contact KSeF.<\/p>\n\n<p>The free version performs no other external requests, apart from the language\npack downloads that WordPress itself makes.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate WooCommerce.<\/li>\n<li>Install and activate Deklera.<\/li>\n<li>Go to <strong>WooCommerce \u2192 Deklera<\/strong> and enter your VAT number, with the country\nprefix \u2014 <code>FR40303265045<\/code>, not <code>40303265045<\/code>. WooCommerce has no field for\nthis, so Deklera stores it.<\/li>\n<li>Check that your store address is complete under <strong>WooCommerce \u2192 Settings \u2192\nGeneral<\/strong>. Street, city, postcode and country are all mandatory on an\ninvoice; if one is missing, Deklera will refuse to produce documents and\ntell you why.<\/li>\n<li>Read the pre-flight report.<\/li>\n<\/ol>\n\n<p>On the Pro plan there is nothing more to set up. Activating your licence\nswitches official validation on; the plugin authorises itself with that\nlicence, so there is no second key to paste.<\/p>\n\n<p><strong>The full guide<\/strong> \u2014 what the findings mean, when documents are produced and\nwhere they are stored, credit notes, the Polish KSeF flow, and the available\nfilters \u2014 is at\nhttps:\/\/github.com\/ekremtekerek\/deklera\/blob\/main\/docs\/GUIDE.md<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20work%20without%20a%20pdf%20invoice%20plugin%3F\"><h3>Does it work without a PDF invoice plugin?<\/h3><\/dt>\n<dd><p>Yes. Deklera includes a plain fallback template. If you already use a PDF\ninvoice plugin such as WooCommerce PDF Invoices &amp; Packing Slips, Deklera embeds\nthe XML into that plugin's PDF instead, so your own design and branding are kept.<\/p>\n\n<p>The built-in template embeds its own font, so it writes any European alphabet\nand the finished Factur-X passes PDF\/A-3 validation, which France requires. When\nanother plugin produces the PDF, PDF\/A conformance is up to that plugin.<\/p><\/dd>\n<dt id=\"will%20my%20invoices%20be%20accepted%3F\"><h3>Will my invoices be accepted?<\/h3><\/dt>\n<dd><p>Deklera produces documents that conform to EN 16931 and, on the Pro plan,\nverifies them against the official rule set before they leave your site. Whether\na specific tax authority accepts a specific invoice also depends on your\nregistration, your provider and rules that change over time. No plugin can\npromise that, and any that does is not being honest with you.<\/p>\n\n<p>What can be shown is the measurement. I ran my own output through KoSIT's\nofficial validator configuration before release; the first run failed six\nrules, every one of them a field EN 16931 leaves optional and Germany makes\nmandatory. The whole thing is written up, failures included:\nhttps:\/\/ekremtekerek.github.io\/deklera\/measured\/ (also in German at\n\/de\/measured\/ and Polish at \/pl\/measured\/)<\/p>\n\n<p>Ask the same question of any vendor you are considering: can I see your\nvalidator report?<\/p><\/dd>\n<dt id=\"does%20it%20send%20my%20invoices%20anywhere%3F\"><h3>Does it send my invoices anywhere?<\/h3><\/dt>\n<dd><p>If your store is in Poland, yes: FA(3) invoices are submitted to KSeF, because\nthere an invoice does not legally exist until KSeF has accepted it. That is the\nwhole point of the Polish system.<\/p>\n\n<p>Everywhere else, no. On Pro, the document is sent to the validation service\ndescribed under <strong>External services<\/strong>, and only if you enable it.<\/p><\/dd>\n<dt id=\"how%20is%20this%20different%20from%20the%20other%20invoice%20plugins%3F\"><h3>How is this different from the other invoice plugins?<\/h3><\/dt>\n<dd><p>Most WooCommerce invoice plugins already produce the file, and several produce\nit for nothing. So does Deklera: the entire free version is the format work \u2014\npre-flight report, Factur-X, XRechnung, credit notes, versioned archive \u2014 and\nnothing in it is switched off.<\/p>\n\n<p>That is the entry ticket, not the product. Producing a file is easy. Knowing\nwhether the data behind it will survive the rules is not, and that is the part\nthat costs you weeks when it goes wrong.<\/p>\n\n<p>So Deklera does the part nobody else checks. The report tells you which orders\nwould be rejected <strong>before<\/strong> you issue them. Pro runs the finished document\nthrough the official rule set \u2014 the one that compiles to XSLT 2.0, which PHP\ncannot execute, which is why it runs as a service rather than on your site.<\/p>\n\n<p>If you already pay to send invoices over Peppol, this does not replace that.\nIt is the check you run first, so that what you send comes back accepted.<\/p><\/dd>\n<dt id=\"which%20countries%20are%20supported%3F\"><h3>Which countries are supported?<\/h3><\/dt>\n<dd><p>France (Factur-X, <em>facture \u00e9lectronique<\/em>), Germany (XRechnung, <em>E-Rechnung<\/em>)\nand Poland (KSeF FA(3)) are fully supported, and each one is measured against\nthat country's own official validator before a release goes out.<\/p>\n\n<p>Other EU countries receive EN 16931 CII output, the common semantic standard\nbehind all of them. <strong>Read that as the European baseline, not as your national\nprofile.<\/strong> Several member states run their own mandatory format and their own\nplatform \u2014 Italy's FatturaPA through the SdI is the clearest example \u2014 and\nDeklera does not produce those. If your country runs its own system, confirm\nthat EN 16931 CII is accepted there before you rely on this plugin for it.<\/p>\n\n<p><strong>Poland<\/strong> is supported, and it works differently from the others. KSeF is not\njust a format: an FA(3) invoice does not legally exist until KSeF has accepted\nit and assigned a number. So for Poland, Deklera does send: it submits each\ninvoice to KSeF, waits for the number and records it against the order.<\/p>\n\n<p>This is the one case where the plugin transmits, because producing the file\nwithout sending it would leave you holding something that looks like an\ninvoice and is not one.<\/p>\n\n<p>You need a KSeF token from your KSeF account. Start in the test environment \u2014\ninvoices sent there have no legal effect \u2014 and switch to production when you\nare satisfied.<\/p>\n\n<p>One limit worth stating plainly, because you would rather read it here than\nfind it out later. The FA(3) document itself is generated against the\nMinistry's official XSD and validated against it. The <strong>submission<\/strong> client is\nwritten to the Ministry's own API specification \u2014 authentication, the\nencrypted session, the upload and the status polling \u2014 but it has not yet been\nexercised against a live KSeF account, because even the test environment needs\na token issued from a Polish taxpayer's account. If you run it and something\ndoes not match, open an issue with what came back and it will be fixed.<\/p>\n\n<p>One thing to check if you issue VAT-exempt invoices: KSeF requires the legal\nbasis for the exemption and keeps three separate fields for it \u2014 a Polish act,\nan EU directive, or another basis. Deklera reads your exemption reason and\npicks the matching field; if the text names no recognisable provision, it uses\n\"other\". That is a best effort, not a legal opinion, so have your accountant\nconfirm the basis you record is the right one.<\/p><\/dd>\n<dt id=\"is%20the%20free%20version%20actually%20usable%3F\"><h3>Is the free version actually usable?<\/h3><\/dt>\n<dd><p>Yes, and not in the \"crippled demo\" sense. The free version does everything\nthe plugin itself is capable of: it scans your orders, reports every problem\nit finds, generates real Factur-X and XRechnung documents, produces credit\nnotes for refunds, archives every version with a hash, and generates a\ndocument automatically when an order completes. Nothing in the code is\nswitched off by a licence.<\/p>\n\n<p>Pro adds one thing, because it is the one thing the plugin cannot do on its\nown: validation against the <strong>official<\/strong> EN 16931 rule set before a document\nis issued. That rule set compiles to XSLT 2.0 and PHP's XSL extension only\nsupports XSLT 1.0, so the check runs on a hosted service instead of on your\nsite. See <strong>External services<\/strong> above.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.3.11<\/h4>\n\n<ul>\n<li>The pre-flight screen no longer contradicts itself. On a fresh install with\nno VAT number \u2014 that is, when every invoice would be rejected \u2014 the summary\nsaid in green that all recent orders would be accepted, while the same\nscreen listed two store-level problems as \"Would be rejected\" three lines\nbelow. It now leads with the store-level blockers, and \"Ready to invoice\"\nreads zero, because nothing is.<\/li>\n<li>The plugins list now links straight to the pre-flight report. Until now the\nonly way in was a submenu at the bottom of the WooCommerce menu, and\nactivating the plugin left no sign it was there at all.<\/li>\n<\/ul>\n\n<h4>0.3.10<\/h4>\n\n<ul>\n<li>Packaging only, no functional change. A command-line tool that came with a\nbundled library is no longer included, and the Factur-X metadata schema is\nnow shipped as an .xml file. French invoices are produced exactly as\nbefore.<\/li>\n<\/ul>\n\n<h4>0.3.9<\/h4>\n\n<ul>\n<li>Packaging only, no functional change. The download no longer carries build\nand continuous-integration files from the bundled libraries \u2014 Schematron,\nXSLT and CI configuration that nothing in the plugin reads. The WordPress.org\nreview asked for this, and the download is a good deal smaller for it.<\/li>\n<\/ul>\n\n<h4>0.3.8<\/h4>\n\n<ul>\n<li>When the official rule set refuses a document, the order screen now names\nthe rule and quotes what it said. Before, it said only \"Invalid\" and the\nreason sat in the database where nobody could see it \u2014 which is unhelpful\nexactly when it matters most.<\/li>\n<li>Pro no longer needs a separate validation key. The plugin authorises itself\nwith the licence you already activated, so there is nothing extra to paste,\nand a cancelled or lapsed subscription now stops validation on its own.<\/li>\n<li>An existing validation key still works and still wins, for shops running\ntheir own copy of the validation service.<\/li>\n<li>Two settings \u2014 the invoice contact name and telephone number \u2014 were left\nbehind when the plugin was uninstalled with \"delete my settings\" turned on.\nThey are removed now. Invoices, archived documents and the key that verifies\nthem are kept, as before.<\/li>\n<\/ul>\n\n<h4>0.3.7<\/h4>\n\n<ul>\n<li>Packaging only, no functional change. The free download no longer carries\ncompiled translation files: they were never read, because the translation\nloader only runs in the premium build, and on WordPress.org translations\ncome from translate.wordpress.org anyway. The download is smaller for it.<\/li>\n<li>The upgrade notice for 0.3.0 was longer than the 300 characters the plugin\ndirectory allows, so it was shortened.<\/li>\n<\/ul>\n\n<h4>0.3.6<\/h4>\n\n<ul>\n<li>Clearer about what is and is not covered. France, Germany and Poland are\nmeasured against each country's own official validator before a release\ngoes out; everywhere else you get EN 16931 CII, which is the European\nbaseline and not a national profile. Some member states mandate their own\nformat and their own platform \u2014 Italy's FatturaPA through the SdI is the\nclearest example \u2014 and Deklera does not produce those. Better to know that\nbefore you buy than after.<\/li>\n<\/ul>\n\n<h4>0.3.5<\/h4>\n\n<ul>\n<li>Your customer now actually receives the invoice. The attachment feature was\nwired to the order-completed email, but that email is sent before the\ndocument exists \u2014 generation runs in the background so the customer never\nwaits for it. The result was an attachment that never attached. Deklera now\nsends WooCommerce's Invoice email once the document is archived, with the\nfile on it.<\/li>\n<li>Regenerating an invoice does not email the customer again, and a credit note\nis not sent under an \"Invoice\" heading. Both would tell the customer\nsomething you did not mean to say. Use the order screen to send those.<\/li>\n<li>The new email can be switched off with the deklera\/email_after_generation\nfilter if you deliver invoices your own way.<\/li>\n<\/ul>\n\n<h4>0.3.4<\/h4>\n\n<ul>\n<li>German, French and Polish translations. This matters more than an admin\nscreen: the invoice is written in the buyer's language, so a German\ncustomer was until now receiving a PDF labelled in English. They now get\nRechnung, Nettobetrag and USt-IdNr., a French customer Facture and\nTotal HT, a Polish one Faktura and Razem netto.<\/li>\n<li>The legal wording follows each country's own convention rather than a\nliteral translation \u2014 reverse charge appears as Steuerschuldnerschaft des\nLeistungsempf\u00e4ngers, autoliquidation, odwrotne obci\u0105\u017cenie; a credit note\nas Rechnungskorrektur, facture d'avoir, faktura koryguj\u0105ca.<\/li>\n<li>A new pre-flight check warns when an invoice would go out in the wrong\nlanguage. WordPress can only switch to a language it has installed, so\nwithout the language pack the document quietly falls back to your store\nlanguage \u2014 and you would not find out.<\/li>\n<\/ul>\n\n<h4>0.3.3<\/h4>\n\n<ul>\n<li>Invoices now pass the national validators, not only the EU baseline. This\nrelease began as a question \u2014 would a real tax authority accept what we\nproduce? \u2014 and the answer, measured against the official rule sets, was\nno in two places.<\/li>\n<li>Germany: the output failed the official XRechnung 3.0.2 rules on six\ncounts. Every one of them is a field the EU standard leaves optional and\nGermany makes mandatory: the seller contact name and phone, the seller and\nbuyer electronic addresses, and the payment means. All six are now filled,\nand the same document passes the official rule set with nothing left.<\/li>\n<li>A new pre-flight check tells a German store when its billing phone number\nis missing, because that one cannot be filled in for you \u2014 and if it is\nmissing you would only find out when the invoice is refused.<\/li>\n<li>France: the Factur-X PDF failed PDF\/A-3 validation. The cause was a single\nline in the specification \u2014 every font used must be embedded in the file \u2014\nand the built-in template used fonts that, by design, are not. The template\nnow embeds its own font, and the finished document passes.<\/li>\n<li>The same change lifts the old Latin-1 limit. The built-in template writes\nany European alphabet: Polish, Czech, Hungarian, Romanian, Greek, Cyrillic.\nIt no longer refuses to produce a PDF because of a customer's name.<\/li>\n<li>Pro: validation now checks German documents against Germany's own rules,\nnot just the EU baseline. Other countries are unaffected.<\/li>\n<\/ul>\n\n<h4>0.3.2<\/h4>\n\n<ul>\n<li>A user guide, linked from the settings screen and the readme: what the\npre-flight findings mean, when documents are produced and where they are\nstored, credit notes, the Polish KSeF flow, and the available filters.<\/li>\n<li>Pro setup no longer asks you to guess. The validation service address is\nfilled in by default, and the screen says where the validation key comes\nfrom and that it is not the licence key that activated the plugin.<\/li>\n<\/ul>\n\n<h4>0.3.1<\/h4>\n\n<ul>\n<li>Pro: the first validation after the service has been idle is no longer\nlost. The hosted validator sleeps when unused and takes longer to answer\nthe request that wakes it; that request now gets a second attempt instead\nof being reported as unreachable.<\/li>\n<\/ul>\n\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>The plugin has been renamed. The previous name turned out to conflict with\na trademark, so it had to change everywhere: the plugin name, the settings,\nthe hooks and the database tables.<\/li>\n<li>Because the tables are renamed, a site upgrading from 0.2.x starts with\nempty settings and an empty document archive. The old rows are left in the\ndatabase untouched, but the plugin no longer reads them. See the upgrade\nnotice.<\/li>\n<li>Pro licences must be activated again after upgrading. The licence record is\nstored under the plugin slug, and the slug changed with the name, so the\nplugin cannot find the old one.<\/li>\n<li>The built-in PDF template now uses FPDF 1.9.0 instead of 1.8.2.<\/li>\n<li>The free version no longer calls load_plugin_textdomain(). WordPress loads\ntranslations for wordpress.org plugins on its own; the call remains in the\nPro version, which ships its own translation files.<\/li>\n<\/ul>\n\n<h4>0.2.1<\/h4>\n\n<ul>\n<li>Poland: the legal basis for a VAT exemption now goes to the field KSeF\nexpects \u2014 a Polish act, an EU directive, or \"other\" \u2014 instead of always\n\"other\".<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Poland: KSeF FA(3) generation and submission. Invoices are sent to the\nnational platform, the KSeF number is recorded against the order and shown\non the order screen.<\/li>\n<li>Documents that have been sent are never sent twice, even if a retry happens\nafter a timeout or a crash.<\/li>\n<li>Settings for the KSeF token and environment; the test environment is the\ndefault and invoices sent there have no legal effect.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>First release.<\/li>\n<li>Pre-flight check with five rule groups covering seller identity, customer\nidentity, VAT categories, invoice totals and required fields.<\/li>\n<li>EN 16931 mapping with tax category resolution for domestic, OSS, reverse\ncharge, intra-community and export scenarios.<\/li>\n<li>Factur-X (PDF\/A-3) and XRechnung 3.0 output.<\/li>\n<li>Document archive with SHA-256 integrity checks, versioning and an audit trail.<\/li>\n<li>Optional validation against the official EN 16931 Schematron rule set.<\/li>\n<\/ul>","raw_excerpt":"Which WooCommerce orders would be rejected as e-invoices? Find out before you issue them. XRechnung, ZUGFeRD\/Factur-X, KSeF.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/arg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/363450","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/arg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/arg.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/arg.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=363450"}],"author":[{"embeddable":true,"href":"https:\/\/arg.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/ekremtekerek"}],"wp:attachment":[{"href":"https:\/\/arg.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=363450"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/arg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=363450"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/arg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=363450"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/arg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=363450"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/arg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=363450"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/arg.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=363450"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}