{"id":337645,"date":"2026-07-11T07:57:16","date_gmt":"2026-07-11T07:57:16","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/fakturflow-ksef-invoices-for-woocommerce\/"},"modified":"2026-09-26T10:00:42","modified_gmt":"2026-09-26T10:00:42","slug":"fakturflow-ksef","status":"publish","type":"plugin","link":"https:\/\/nqo.wordpress.org\/plugins\/fakturflow-ksef\/","author":16869097,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.3.0","stable_tag":"0.3.0","tested":"7.1.2","requires":"6.5","requires_php":"8.1","requires_plugins":null,"header_name":"FakturFlow \u2013 E-Invoicing for KSeF","header_author":"ssymonov","header_description":"Structured e-invoices for the Polish KSeF (Krajowy System e-Faktur), straight from WooCommerce orders \u2014 generate FA(3) XML, validate against the official schema, submit to KSeF and download UPO.","assets_banners_color":"182742","last_updated":"2026-09-26 10:00:42","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/fakturflow.com\/","header_author_uri":"https:\/\/symonov.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":344,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.2.2":{"tag":"0.2.2","author":"simmotorlp","date":"2026-07-11 08:41:18","revision":3603758},"0.2.3":{"tag":"0.2.3","author":"simmotorlp","date":"2026-07-11 16:17:24","revision":3604141},"0.2.4":{"tag":"0.2.4","author":"simmotorlp","date":"2026-09-19 21:55:38","revision":3703692},"0.2.5":{"tag":"0.2.5","author":"simmotorlp","date":"2026-09-19 22:14:29","revision":3703701},"0.2.6":{"tag":"0.2.6","author":"simmotorlp","date":"2026-09-25 20:04:25","revision":3713509},"0.2.7":{"tag":"0.2.7","author":"simmotorlp","date":"2026-09-26 07:29:46","revision":3713949},"0.3.0":{"tag":"0.3.0","author":"simmotorlp","date":"2026-09-26 10:00:42","revision":3714064}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3603719,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3603719,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500-pl_PL.png":{"filename":"banner-1544x500-pl_PL.png","revision":3603731,"resolution":"1544x500","location":"assets","locale":"pl_PL","width":1544,"height":500},"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3603719,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250-pl_PL.png":{"filename":"banner-772x250-pl_PL.png","revision":3603731,"resolution":"772x250","location":"assets","locale":"pl_PL","width":772,"height":250},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3603719,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.2.2","0.2.3","0.2.4","0.2.5","0.2.6","0.2.7","0.3.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3714064,"resolution":"1","location":"assets","locale":"","width":1280,"height":1835},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3603719,"resolution":"2","location":"assets","locale":"","width":280,"height":519},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3603719,"resolution":"3","location":"assets","locale":"","width":1280,"height":800},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3603719,"resolution":"4","location":"assets","locale":"","width":1280,"height":800},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3714064,"resolution":"5","location":"assets","locale":"","width":910,"height":1287}},"screenshots":{"1":"Settings (WooCommerce &gt; KSeF Invoices) \u2014 connection, seller data, bank account and payment term, the invoice PDF for the buyer, consumer (B2C) invoices, and the Status panel.","2":"Order edit screen metabox \u2014 generate\/send\/refresh actions, status and the KOD I verification QR code.","3":"Checkout NIP field \u2014 block checkout.","4":"Orders list \u2014 the \"KSeF\" status column.","5":"The invoice PDF the buyer receives, with the KOD I verification code."}},"plugin_section":[],"plugin_tags":[271037,26387,12480,252347,286],"plugin_category":[45],"plugin_contributors":[254989],"plugin_business_model":[],"class_list":["post-337645","plugin","type-plugin","status-publish","hentry","plugin_tags-e-faktura","plugin_tags-faktura","plugin_tags-invoice","plugin_tags-ksef","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-simmotorlp","plugin_committers-simmotorlp"],"banners":{"banner":"https:\/\/ps.w.org\/fakturflow-ksef\/assets\/banner-772x250.png?rev=3603719","banner_2x":"https:\/\/ps.w.org\/fakturflow-ksef\/assets\/banner-1544x500.png?rev=3603719","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/fakturflow-ksef\/assets\/icon-128x128.png?rev=3603719","icon_2x":"https:\/\/ps.w.org\/fakturflow-ksef\/assets\/icon-256x256.png?rev=3603719","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/fakturflow-ksef\/assets\/screenshot-1.png?rev=3714064","caption":"Settings (WooCommerce &gt; KSeF Invoices) \u2014 connection, seller data, bank account and payment term, the invoice PDF for the buyer, consumer (B2C) invoices, and the Status panel."},{"src":"https:\/\/ps.w.org\/fakturflow-ksef\/assets\/screenshot-2.png?rev=3603719","caption":"Order edit screen metabox \u2014 generate\/send\/refresh actions, status and the KOD I verification QR code."},{"src":"https:\/\/ps.w.org\/fakturflow-ksef\/assets\/screenshot-3.png?rev=3603719","caption":"Checkout NIP field \u2014 block checkout."},{"src":"https:\/\/ps.w.org\/fakturflow-ksef\/assets\/screenshot-4.png?rev=3603719","caption":"Orders list \u2014 the \"KSeF\" status column."},{"src":"https:\/\/ps.w.org\/fakturflow-ksef\/assets\/screenshot-5.png?rev=3714064","caption":"The invoice PDF the buyer receives, with the KOD I verification code."}],"raw_content":"<!--section=description-->\n<p><strong>KSeF (Krajowy System e-Faktur), Poland's national structured e-invoicing system, became mandatory for large taxpayers on 1 February 2026 and for micro, small and medium businesses on 1 April 2026. Penalties for not issuing structured invoices apply from 1 January 2027 \u2014 the same date the last wave (smallest taxpayers, under 10,000 z\u0142\/month invoiced turnover) joins the mandate.<\/strong> If you sell B2B through WooCommerce and issue invoices to businesses, you need KSeF now.<\/p>\n\n<p>FakturFlow is a standalone plugin: it talks directly to the official Ministry of Finance API 2.0. No external accounting system, no intermediary, no per-invoice fees. Generate, validate and submit a FA(3) structured invoice straight from the order screen \u2014 one click per step.<\/p>\n\n<p>Wtyczka \u0142\u0105czy Tw\u00f3j sklep WooCommerce bezpo\u015brednio z KSeF przez oficjalne API 2.0 Ministerstwa Finans\u00f3w \u2014 pe\u0142ny polski opis i t\u0142umaczenie interfejsu (pl_PL) s\u0105 do\u0142\u0105czone do wtyczki.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>Generate FA(3) structured invoice XML from any WooCommerce order.<\/li>\n<li>Validate against the official Ministry of Finance schema before sending.<\/li>\n<li>Submit to KSeF (test, demo and production environments) using the official API 2.0.<\/li>\n<li>Track submission status and download the UPO (Urz\u0119dowe Po\u015bwiadczenie Odbioru \u2014 official proof of receipt).<\/li>\n<li>KOD I verification QR code, generated per the official Ministry of Finance specification.<\/li>\n<li>NIP field at checkout (classic <em>and<\/em> block checkout) with checksum validation \u2014 orders with a NIP are detected as B2B automatically.<\/li>\n<li>Correction invoices (faktury koryguj\u0105ce) from refunds \u2014 every refund gets its own KOR document referencing the original invoice by KSeF number; generate, send and download its UPO from the order screen.<\/li>\n<li>Invoice PDF for the buyer, built from the invoice exactly as KSeF holds it, with the KOD I code \u2014 attached to the order emails and downloadable from My Account (signed links for guests).<\/li>\n<li>Consumer (B2C) invoices through KSeF, if you want them: off, on request (\"I want an invoice\" checkbox at checkout) or for every order.<\/li>\n<li>Payment terms on the invoice: paid date or due date, payment method and your bank account.<\/li>\n<li>Split payment (mechanizm podzielonej p\u0142atno\u015bci) marked automatically for annex 15 goods on B2B invoices above 15 000 z\u0142.<\/li>\n<li>Seller address and bank account in the plugin settings, independent of the WooCommerce store address.<\/li>\n<li>KSeF token stored encrypted at rest, never logged.<\/li>\n<li>HPOS (custom order tables) and checkout-blocks compatible.<\/li>\n<li>Full Polish (pl_PL) translation included.<\/li>\n<\/ul>\n\n<h4>Why FakturFlow?<\/h4>\n\n<ul>\n<li><strong>Direct connection, no middlemen.<\/strong> Most KSeF options for WooCommerce route your invoices through an external accounting SaaS or a vendor's cloud. FakturFlow talks straight to the Ministry of Finance API \u2014 your invoice data never touches a third-party server.<\/li>\n<li><strong>Free means free.<\/strong> No invoice limits, no per-invoice fees, no monthly subscription for the core flow. Accounting SaaS plans start around 100-360 zl\/year and meter your invoices; here the full manual flow costs nothing, forever.<\/li>\n<li><strong>One plugin, not a plugin + paid add-on.<\/strong> You don't need a separate invoicing plugin as a base \u2014 KSeF is not a bolt-on here, it's what this plugin is built around: FA(3) with local XSD validation, UPO, the KOD I verification QR, and corrections.<\/li>\n<li><strong>Built for modern WooCommerce.<\/strong> HPOS, checkout blocks, a checksum-validated NIP field in both checkout variants.<\/li>\n<li><strong>Private by design.<\/strong> Encrypted token storage, zero telemetry \u2014 the only server your store talks to is the Ministry's.<\/li>\n<\/ul>\n\n<h4>Who it's for<\/h4>\n\n<p>Any WooCommerce store that invoices Polish businesses and must comply with the KSeF mandate \u2014 without a SaaS subscription, without per-invoice fees, and without needing a separate accounting package. Consumer (B2C) invoices are optional in KSeF: by default consumer orders flow through the normal checkout untouched, and you can switch KSeF invoices for consumers on when you want them.<\/p>\n\n<h4>FakturFlow Pro (separate add-on)<\/h4>\n\n<p>When invoice volume grows, <a href=\"https:\/\/fakturflow.com\/\">FakturFlow Pro<\/a> automates the whole flow: automatic submission when an order is paid (with retries and backoff), automatic correction invoices from refunds, an offline24 mode that keeps issuing invoices when KSeF is unreachable and delivers them within the statutory deadline, and a compliance dashboard with a full audit log and CSV export. This Free plugin always covers manual generate\/validate\/send, corrections, UPO, the NIP field and the QR code \u2014 no functionality is ever removed to push the paid tier.<\/p>\n\n<h4>Third-party libraries<\/h4>\n\n<p>This plugin ships the following open-source runtime libraries, all GPL-compatible. They are bundled under the plugin's own PHP namespace (<code>FakturFlow\\Vendor\\<\/code>), so they never clash with the same libraries bundled by other plugins:<\/p>\n\n<ul>\n<li><a href=\"https:\/\/phpseclib.com\/\">phpseclib\/phpseclib<\/a> 3.x (MIT) \u2014 RSA-OAEP-SHA256, required for the KSeF session-key handshake (PHP's own openssl extension cannot do OAEP with SHA-256).<\/li>\n<li><a href=\"https:\/\/github.com\/chillerlan\/php-qrcode\">chillerlan\/php-qrcode<\/a> (MIT) \u2014 pure-PHP QR code rendering for the KOD I verification code (no GD\/Imagick requirement).<\/li>\n<li><a href=\"https:\/\/github.com\/dompdf\/dompdf\">dompdf\/dompdf<\/a> (LGPL-2.1) with <a href=\"https:\/\/github.com\/dompdf\/php-font-lib\">dompdf\/php-font-lib<\/a> and <a href=\"https:\/\/github.com\/dompdf\/php-svg-lib\">dompdf\/php-svg-lib<\/a> (LGPL) \u2014 PDF rendering of the invoice for the buyer, with the bundled DejaVu Sans font (free license) for Polish characters.<\/li>\n<li><a href=\"https:\/\/github.com\/Masterminds\/html5-php\">masterminds\/html5<\/a> and <a href=\"https:\/\/github.com\/MyIntervals\/PHP-CSS-Parser\">sabberworm\/php-css-parser<\/a> (MIT) \u2014 dependencies of dompdf.<\/li>\n<li><a href=\"https:\/\/github.com\/paragonie\/constant_time_encoding\">paragonie\/constant_time_encoding<\/a> and <a href=\"https:\/\/github.com\/paragonie\/random_compat\">paragonie\/random_compat<\/a> (MIT) \u2014 dependencies of phpseclib.<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to KSeF (Krajowy System e-Faktur), the official structured e-invoicing API of the Polish Ministry of Finance. It is required for the plugin's core purpose: submitting structured invoices, checking their status and downloading UPO confirmations.<\/p>\n\n<ul>\n<li>What is sent: invoice data derived from the WooCommerce order (seller NIP, name and address, buyer NIP \u2014 or none for consumers \u2014 name and address, line items, amounts, VAT, payment terms and your bank account if set), and your KSeF authentication token during session handshake. Data is sent only when you explicitly generate\/send an invoice or refresh its status from the order screen (or when a Pro add-on triggers the same documented actions).<\/li>\n<li>Where it is sent, depending on the environment chosen in settings: <code>https:\/\/api.ksef.mf.gov.pl<\/code> (production), <code>https:\/\/api-demo.ksef.mf.gov.pl<\/code> (demo), <code>https:\/\/api-test.ksef.mf.gov.pl<\/code> (test).<\/li>\n<li>The KOD I verification QR code embeds a public verification link pointing to <code>https:\/\/qr.ksef.mf.gov.pl<\/code> (or the matching <code>qr-demo<\/code>\/<code>qr-test<\/code> host), per the official verification-code specification. The link is only opened when someone scans the QR code.<\/li>\n<li>Service provider: Ministry of Finance of the Republic of Poland. Service information: https:\/\/www.podatki.gov.pl\/ksef\/ \u2014 privacy\/data-processing information: https:\/\/ksef.mf.gov.pl\/<\/li>\n<\/ul>\n\n<p>No other external service is contacted. The invoice PDF is generated on your own server and sent to the buyer with your store's own emails. The plugin sends no telemetry.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin (WooCommerce must be installed and active).<\/li>\n<li>Go to <strong>WooCommerce \u2192 KSeF Invoices<\/strong>.<\/li>\n<li>Choose the environment \u2014 start with <strong>Test<\/strong>.<\/li>\n<li>Enter your seller NIP, name and address (prefilled from the WooCommerce store address), and your bank account if you want it on unpaid or transfer invoices.<\/li>\n<li>Log into the KSeF web application (https:\/\/ksef.mf.gov.pl\/) with your Trusted Profile or qualified certificate and generate a token with <strong>InvoiceWrite<\/strong> and <strong>InvoiceRead<\/strong> permissions. Paste it into the settings \u2014 it is stored encrypted.<\/li>\n<li>Use <strong>Test connection<\/strong> to confirm your hosting allows outgoing HTTPS to KSeF.<\/li>\n<li>Open a B2B order (one with a buyer NIP), generate and validate the FA(3) invoice, send it to KSeF and download the UPO. Once a full test cycle works, switch the environment to <strong>Production<\/strong>.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20the%20plugin%20work%20without%20an%20accounting%20system%3F\"><h3>Does the plugin work without an accounting system?<\/h3><\/dt>\n<dd><p>Yes. It talks directly to the official KSeF API 2.0 of the Ministry of Finance \u2014 no intermediary and no per-invoice fees. You generate, validate and submit FA(3) invoices from the WooCommerce order screen.<\/p><\/dd>\n<dt id=\"what%20about%20consumer%20%28b2c%29%20orders%3F\"><h3>What about consumer (B2C) orders?<\/h3><\/dt>\n<dd><p>By default only orders with a buyer NIP (tax ID) go to KSeF. Under WooCommerce \u2192 KSeF Invoices \u2192 Consumer invoices you can also issue KSeF invoices to consumers: on request (the buyer ticks \"I want an invoice\" at checkout) or for every order. A consumer invoice then goes to KSeF without a tax ID, and the buyer receives the PDF with its verification code.<\/p><\/dd>\n<dt id=\"where%20does%20the%20buyer%20get%20the%20invoice%3F\"><h3>Where does the buyer get the invoice?<\/h3><\/dt>\n<dd><p>Once KSeF accepts the invoice, the PDF is attached to the \"Completed order\" and \"Order details\" emails, and the email contains a download link (valid for 30 days, also for guest orders). Logged-in customers can download it any time from My Account. The PDF is generated on your server from the invoice exactly as KSeF holds it, with the KOD I verification code. If the invoice was accepted after the order email went out, the order gets a note \u2014 resend it with \"Send order details to customer\".<\/p><\/dd>\n<dt id=\"does%20it%20handle%20split%20payment%20%28mpp%29%3F\"><h3>Does it handle split payment (MPP)?<\/h3><\/dt>\n<dd><p>Yes. Tick \"Split payment (annex 15)\" on products listed in annex 15 to the VAT Act. A B2B invoice above 15 000 z\u0142 that includes such a product is marked \"mechanizm podzielonej p\u0142atno\u015bci\" and carries your bank account (set it under Payments).<\/p><\/dd>\n<dt id=\"which%20orders%20can%20fakturflow%20invoice%3F\"><h3>Which orders can FakturFlow invoice?<\/h3><\/dt>\n<dd><p>Orders in PLN from buyers in Poland \u2014 with a NIP, or consumers when you turn consumer invoices on \u2014 issued by a store based in Poland. Orders in other currencies and orders from buyers outside Poland are refused with a clear message on the order screen (nothing is numbered or sent) \u2014 foreign B2B invoices (EU VAT ID, reverse charge, WDT\/export) and other currencies are planned.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20hpos%20and%20the%20block%20checkout%3F\"><h3>Does it work with HPOS and the block checkout?<\/h3><\/dt>\n<dd><p>Yes. The plugin is fully compatible with High-Performance Order Storage (custom order tables) and with the Checkout block \u2014 the NIP field is registered through the Additional Checkout Fields API and behaves identically in both checkout variants.<\/p><\/dd>\n<dt id=\"where%20do%20i%20get%20a%20ksef%20token%3F\"><h3>Where do I get a KSeF token?<\/h3><\/dt>\n<dd><p>Log into the KSeF web application (https:\/\/ksef.mf.gov.pl\/) with your Trusted Profile (Profil Zaufany) or qualified certificate, go to permissions management, and generate a token with <strong>InvoiceWrite<\/strong> and <strong>InvoiceRead<\/strong> permissions. Paste it into the plugin settings (WooCommerce \u2192 KSeF Invoices) \u2014 it is stored encrypted.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20send%20data%20to%20third%20parties%3F\"><h3>Does the plugin send data to third parties?<\/h3><\/dt>\n<dd><p>No. Invoice data is sent only to the official Ministry of Finance API (test, demo or production environment, as chosen in your settings). The one exception is the verification link encoded in the KOD I QR code itself \u2014 when scanned it points to the Ministry of Finance's public invoice-verification lookup, per the official verification-code specification. See the \"External services\" section below for the exact endpoints.<\/p><\/dd>\n<dt id=\"does%20uninstalling%20the%20plugin%20delete%20my%20issued%20invoices%3F\"><h3>Does uninstalling the plugin delete my issued invoices?<\/h3><\/dt>\n<dd><p>No. Generated invoice and UPO XML files (under <code>wp-content\/uploads\/ksef-invoices\/<\/code>) are legal\/tax records and are <strong>not<\/strong> deleted on uninstall \u2014 only the plugin's own settings (environment, seller data, token) are removed. If you also want the stored files gone, remove them manually after archiving\/exporting them.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>New: invoice PDF for the buyer, built from the invoice exactly as KSeF holds it, with the KOD I verification code. Attached to the \"Completed order\" and \"Order details\" emails (can be turned off), with a signed download link in the email and a download in My Account. Admins get \"Download PDF\" for invoices and corrections. The template can be overridden from the theme (fakturflow\/invoice.php).<\/li>\n<li>New: consumer (B2C) invoices through KSeF \u2014 off (default, unchanged behaviour), on request with an \"I want an invoice\" checkbox at checkout, or for every order.<\/li>\n<li>New: payment terms on the invoice \u2014 paid date or due date (configurable payment term), payment method and your bank account.<\/li>\n<li>New: split payment. Mark annex 15 products; B2B invoices above 15 000 z\u0142 that include them are marked \"mechanizm podzielonej p\u0142atno\u015bci\".<\/li>\n<li>New: seller address, bank account and payment term in the plugin settings. On update the address is copied once from the WooCommerce store address.<\/li>\n<li>Change: the bundled libraries now use the plugin's own namespace, so they can no longer clash with the same libraries in other plugins.<\/li>\n<li>Developer: <code>KSEFI_Invoice_Service::eligibility()<\/code>, <code>ksefi_payment_form_map<\/code>, <code>ksefi_pdf_locale<\/code> and <code>ksefi_pdf_template<\/code> filters.<\/li>\n<\/ul>\n\n<h4>0.2.7<\/h4>\n\n<ul>\n<li>Fix: invoice numbers are now reserved under a database lock. Invoices created at the same moment (for example by the Pro auto-submit queue) could previously receive the same number.<\/li>\n<li>Fix: a number is taken from the series only after the invoice passes validation, so failed attempts no longer leave gaps. Re-generating an invoice keeps its number.<\/li>\n<li>Change: orders in currencies other than PLN and orders from buyers outside Poland are refused with a clear message instead of being sent with incomplete data. Support for both is planned.<\/li>\n<li>Fix: the buyer and seller country code is taken from the address instead of always being PL.<\/li>\n<\/ul>\n\n<h4>0.2.6<\/h4>\n\n<ul>\n<li>New: redesigned settings page \u2014 Connection and Seller cards plus a Status panel that shows at a glance whether the KSeF token is saved, the seller NIP is valid, which environment is active and when the connection was last tested (with the error code if it failed). Works on mobile.<\/li>\n<li>Improved: the Polish translation now covers every string again, including the Pro section and the review request.<\/li>\n<li>Developer: new <code>ksefi_invoice_rejected<\/code> action, fired when a KSeF status check reports the invoice as rejected.<\/li>\n<\/ul>\n\n<h4>0.2.5<\/h4>\n\n<ul>\n<li>New: a one-time, dismissible request to leave a review on WordPress.org. It appears only a week after your first invoice is accepted by KSeF, only to shop managers and only on the plugin's own screens. \"Maybe later\" snoozes it for 30 days, \"Don't ask again\" hides it for good. Nothing is sent anywhere.<\/li>\n<\/ul>\n\n<h4>0.2.4<\/h4>\n\n<ul>\n<li>Tested with WordPress 7.1 (verified on 7.1.1 with WooCommerce 11.1). No functional changes.<\/li>\n<\/ul>\n\n<h4>0.2.3<\/h4>\n\n<ul>\n<li>New: a short FakturFlow Pro section on the settings page and a \"Go Pro\" link on the plugins list (both hidden automatically when the Pro add-on is active).<\/li>\n<\/ul>\n\n<h4>0.2.2<\/h4>\n\n<ul>\n<li>Renamed again to resolve a follow-up wp.org review finding: \"WooCommerce\" is not permitted in the plugin name or slug at all, so it's dropped from both. New slug: <code>fakturflow-ksef<\/code>.<\/li>\n<\/ul>\n\n<h4>0.2.1<\/h4>\n\n<ul>\n<li>Renamed to resolve a wp.org review trademark\/slug finding (new slug: <code>fakturflow-ksef-and-woocommerce<\/code>). Upgraded chillerlan\/php-qrcode to 6.0.1 and hardened the KOD I QR output with <code>wp_kses()<\/code>.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Initial release: FA(3) generation with offline schema validation, direct KSeF API 2.0 submission with UPO download, order metabox and status column, checkout NIP field (classic + blocks), KOD I verification QR, correction invoices (faktury koryguj\u0105ce) from refunds, encrypted token storage.<\/li>\n<\/ul>","raw_excerpt":"Issue KSeF structured e-invoices (FA(3)) straight from WooCommerce orders \u2014 no intermediaries, no per-invoice fees.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/nqo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/337645","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nqo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/nqo.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/nqo.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=337645"}],"author":[{"embeddable":true,"href":"https:\/\/nqo.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/simmotorlp"}],"wp:attachment":[{"href":"https:\/\/nqo.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=337645"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/nqo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=337645"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/nqo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=337645"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/nqo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=337645"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/nqo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=337645"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/nqo.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=337645"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}