Changelog

All notable changes to KSeF Pro for WooCommerce are documented here. The format follows Keep a Changelog.


[2.1.0] — March 2026

Added

FA(2) schema 2.0 support

Mandatory from April 2026 per Ministry of Finance decree. Schema 2.0 revises the <Podmiot1> and <Podmiot2> block structure, updates VAT rate code handling for edge cases, and adds new OSS annotation elements. KSeF Pro 2.1.0 generates schema 2.0 exclusively. No configuration changes are required — the schema version is selected automatically.

Stores on schema 1.x that have not upgraded before April 2026 will see FA(2) submissions rejected by the MF API. Update before the April 2026 deadline.

WP-CLI command suite

A new set of WP-CLI subcommands for queue management without browser access:

wp ksefpl submit <order-id>     # Submit a specific order to KSeF immediately
wp ksefpl status <order-id>     # Show the KSeF submission status for an order
wp ksefpl retry-failed          # Batch-retry all eligible FAILED queue entries
wp ksefpl queue --format=table  # Display the current queue with status counts

These commands are particularly useful for headless setups (Adobe Commerce Cloud, containerized deployments) where browser access to the WP admin is inconvenient. The retry-failed command respects the configured maximum retry limit and skips entries that have already exceeded it.

Audit log in WooCommerce Analytics

The KSeF audit log is now accessible from the WooCommerce Analytics menu (alongside Orders, Revenue, and other standard reports). This provides a unified compliance view without navigating to a separate admin section. The WooCommerce Analytics version of the log is read-only — use the full audit log under WooCommerce → KSeF Pro → Audit Log for retry and export actions.

KSEFPL_FORCE_DB_TRANSIENTS constant

Forces KSeF Pro's scheduling transients to use the WordPress database instead of the object cache (Redis/Memcached). This resolves a specific issue where aggressive cache flushing policies (e.g., flush on every deploy in CI/CD pipelines) reset the cron scheduling transients, causing the four KSeF cron events to become unscheduled. Define in wp-config.php:

define( 'KSEFPL_FORCE_DB_TRANSIENTS', true );

Fixed

  • WP-Cron schedule not re-registering after plugin update — After an automatic plugin update from 2.0.x to 2.1.0, the four ksefpl_* cron events were unscheduled and not re-added until deactivate/reactivate. Fixed: an upgrade hook now re-registers cron events immediately after the update completes.
  • HPOS order meta box rendering failure on WooCommerce 9.0 — The woocommerce_order_get_meta filter signature changed in WooCommerce 9.0 under HPOS. The KSeF meta box failed to render KSeF-ID and status for affected orders. Fixed with a WooCommerce version check that uses the correct meta retrieval path for each version.
  • JPY decimal precision error — Japanese yen has zero decimal places. KSeF Pro was generating <KursWaluty> values with a trailing .00 for JPY amounts (e.g., 155.00 instead of 155), causing FA(2) schema validation failure. Fixed: decimal precision is now determined per currency from WooCommerce currency settings.

After Upgrading to 2.1.0

No manual steps required. The schema version switches automatically. The upgrade hook re-registers cron events, so no deactivate/reactivate cycle is needed.

If you use the KSEFPL_ENCRYPTION_KEY constant (introduced in 2.0.0): verify it is still present in wp-config.php after upgrading. Losing this constant after upgrade causes encrypted token decryption failure and requires re-entering your KSeF token.


[2.0.0] — January 2026

Breaking Changes

Minimum PHP version raised to 8.1

PHP 8.0 reached end-of-life in November 2023. Update to PHP 8.1 or 8.2 before upgrading to 2.0.0.

XML storage directory changed

FA(2) XML files moved from wp-content/ksefpl/ to wp-content/uploads/ksefpl-xml/. Automatic migration runs on the first page load after upgrade — existing XML files are moved to the new location. The old directory is not deleted automatically; remove it manually after confirming the migration completed:

# Verify files exist in new location
ls wp-content/uploads/ksefpl-xml/
 
# Remove old directory only after confirming migration
rm -rf wp-content/ksefpl/

Token storage encrypted

KSeF tokens previously stored as plaintext in wp_options are now AES-256 encrypted. The migration runs automatically on first load. Important: ensure your AUTH_KEY in wp-config.php does not change between the upgrade and the first page load. If AUTH_KEY changes after encryption but before the first load, the token cannot be decrypted and must be re-entered in the KSeF Pro settings.

For environments where wp-config.php keys rotate (staging environments, some hosting providers), set a dedicated stable key using the KSEFPL_ENCRYPTION_KEY constant instead:

define( 'KSEFPL_ENCRYPTION_KEY', 'your-stable-64-char-hex-key' );

Added

  • Paired Mode with Fakturownia Pro for WooCommerce — Dual-channel invoicing from a single order trigger. KSeF-ID written to Fakturownia invoice numer_ksef field. See Paired Mode.
  • Shared rule engine — Unified trigger, condition, and VAT mapping configuration when Paired Mode is active.
  • Simultaneous trigger option — Paired Mode can fire both channels in parallel with KSeF-ID backfill.
  • Per-order "Submit to KSeF now" button — Manual immediate submission from the WooCommerce order detail meta box.
  • Correction invoice UI — "Issue correction" button for generating KOR FA(2) documents referencing the original KSeF-ID.

Fixed

  • Cron poll interval not honoured with Redis object cache — WP transients used for cron scheduling were being served from Redis cache and not reflecting interval changes. Added cache bypass for scheduling transients.
  • Session token transient not cleared on token revocation — A revoked KSeF token caused repeated 10000 errors because the cached session token (25-min transient) was still being used. Fixed: auth failure now clears the session transient immediately.

[1.3.1] — November 2025

Fixed

  • PHP 8.4 deprecation noticespreg_replace() with null arguments deprecated in PHP 8.4. Fixed in the FA(2) XML builder and NIP sanitiser.
  • UPO download failure with custom upload_dir — Sites with a custom upload_dir WordPress filter (e.g., multisite or offloaded uploads to S3) failed UPO download because the path was constructed from WP_CONTENT_DIR directly. Fixed to use wp_upload_dir(). This fix is important for WooCommerce stores using WP Offload Media or similar S3 plugins — update immediately if UPO downloads are failing on your store.

[1.3.0] — September 2025

Added

  • Full HPOS support — Order meta stored in wc_orders_meta under HPOS. KSeF-ID column in HPOS orders list. All WP meta functions replaced with HPOS-compatible $order->get_meta() / $order->update_meta_data().
  • KSEFPL_ENCRYPTION_KEY constant — Initial implementation (before full encrypted storage in 2.0.0).
  • Audit log shortcut in WooCommerce admin bar — Quick link to the KSeF audit log from the WooCommerce admin menu.

[1.2.0] — July 2025

Initial public release.

Included at Launch

  • KSeF session management (open, submit, close, terminate, poll)
  • FA(2) XML generation from WooCommerce order data
  • XAdES-BES digital signing via PHP OpenSSL
  • UPO download and local storage
  • WordPress cron-based asynchronous processing (4 scheduled events)
  • WooCommerce order meta integration (KSeF-ID, status, UPO path)
  • Admin meta box in order detail with XML preview and manual submission
  • Audit log with CSV export
  • HPOS and legacy order storage support (legacy only at launch — HPOS added in 1.3.0)

Compatibility at 1.2.0

| Component | Supported | |---|---| | WordPress | 6.3 – 6.5 | | WooCommerce | 8.0 – 8.9 | | PHP | 8.1 – 8.2 | | MySQL | 5.7, 8.0 | | KSeF schema | FA(2) 1.x |


Next Steps

Edit this page on GitHub
Was this page helpful?

Documentation associée

Ce sujet est également disponible pour d'autres plateformes :