Changelog
All notable changes to KSeF Pro for PrestaShop 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 introduces:
- Revised
<Podmiot1>and<Podmiot2>block structure with updated address element ordering - Updated VAT rate code handling — the
BRAKcode for B2C buyers is now expressed differently in the schema - New OSS annotation elements for cross-border B2C sales under the EU One-Stop-Shop scheme
- Updated
<FaP1>fields for the FA(2) document header
KSeF Pro 2.1.0 generates schema 2.0 exclusively. Schema 1.x documents are no longer accepted by the MF API from April 2026. If you are upgrading from 2.0.x, no configuration changes are required — the schema version is selected automatically.
Exponential backoff on 503
The MF servers run maintenance windows, typically Sunday 00:00–06:00 CET. Previously, KSeF Pro used fixed 30-second retry intervals during these windows, which generated a high volume of API calls and increased the risk of rate limiting. 2.1.0 adds exponential backoff: 10s → 20s → 40s → 80s → 160s between retries. Pending submissions during a maintenance window complete automatically once the MF servers return.
UPO archive export as ZIP
New button in the Audit Log toolbar: "Export UPOs as ZIP". Downloads all UPO XML files for the current filter selection as a single ZIP archive. This is the recommended format for monthly accountant handoffs — a single file containing all UPOs for the period, rather than downloading each individually. The archive uses the naming convention {order-reference}-{ksef-id}.xml per file.
PrestaShop 9.0.3 compatibility
Tested and verified against PS 9.0.3 including full HPOS order storage. No breaking changes were required — this is a compatibility certification update.
PHP 8.4 compatibility
Fixed deprecation notices introduced in PHP 8.4. The Deprecated: Passing null to parameter of type string notice in the FA(2) XML builder was triggered when orders with null address fields were processed. Fixed with explicit null checks before all string operations in the XML builder.
Fixed
- Session token expiry clock skew — If the server's clock was more than 2 minutes ahead of the MF server clock, session tokens appeared expired immediately after creation. The challenge response timestamp from the MF API is now used as the reference time for expiry calculation rather than the local server clock. Stores on NTP-synchronized servers were not affected; stores on VPS instances with clock drift saw sporadic
ERR_SESSION_EXPIREDimmediately after opening a session. <KursWaluty>formatting for GBP — PHPfloatvalwas stripping trailing zeros from exchange rates (e.g.,4.50became4.5), which caused FA(2) validation errors. Fixed withnumber_formatenforcing 4 decimal places on all<KursWaluty>values.- HPOS hook not registering on fresh install (PS 8.2.x) — A race condition during module installation on stores with HPOS already active caused the HPOS-compatible order status hook to not register. Fixed by deferring hook registration to the first admin page load after install.
After Upgrading to 2.1.0
No manual steps required. The FA(2) schema version switches automatically from 1.x to 2.0 as part of the upgrade. All orders invoiced after the upgrade use schema 2.0. Orders invoiced before the upgrade retain their original 1.x XML in the audit log — no re-submission is needed for already-accepted invoices.
[2.0.0] — January 2026
Breaking Changes
Minimum PHP version raised to 8.1
PHP 8.0 reached end-of-life in November 2023. All PHP 8.0-specific code paths removed. Update your server to PHP 8.1 or 8.2 before upgrading.
Configuration structure updated
The internal configuration key schema was reorganized for multistore support. Existing installations migrate automatically on the first admin page load after upgrade — no manual action required. Verify your settings under KSeF Pro → Configuration after upgrading to confirm the migration completed correctly.
Added
- Paired Mode with Fakturownia Pro — Dual-channel invoicing: FA(2) XML to KSeF and PDF invoice to Fakturownia.pl simultaneously. Single rule engine, shared trigger conditions, KSeF-ID written to Fakturownia invoice
numer_kseffield. See Paired Mode. - Shared rule engine — Unified trigger and condition configuration when running in Paired Mode. One configuration panel controls both channels.
- KSeF-ID on customer PDF — When Paired Mode is active, the KSeF-ID is passed to Fakturownia Pro and appears on the customer-facing PDF invoice under "KSeF numer".
- Per-order manual submission button — New "Send to KSeF" button in the PrestaShop order detail screen. Triggers immediate submission without changing order status.
- Session reference number in debug log — KSeF session
referenceNumberis now included in all debug log entries, enabling cross-reference with the MF portal's session history. - Correction invoice UI — New "Issue correction" button in the order KSeF panel. Generates a
KORtype FA(2) document referencing the original KSeF-ID.
Fixed
- NIP leading zero rejected — NIPs beginning with
0were incorrectly rejected by the client-side validator. Fixed. - Session not closed on process kill — If the PHP process was killed mid-batch, the KSeF session remained open and expired without a UPO. Session state is now written to the database atomically before each API call, enabling recovery detection on next startup.
[1.3.2] — October 2025
Fixed
- XML signing failure on OpenSSL 3.2+ — OpenSSL 3.2 deprecated the
RSA-SHA256algorithm reference string in favour ofsha256WithRSAEncryption. Fixed the signing module to use the new reference string. Affects PHP 8.2+ on Debian 12 / Ubuntu 24.04 and later. If you upgraded your server OS and saw signing failures, this fix resolves them. - Audit log pagination error at 1,000+ records — SQL query used
LIMIT offset, countwith a hardcoded max offset that caused a MySQL error for stores with more than 1,000 audit entries. Fixed with cursor-based pagination.
[1.3.0] — August 2025
Added
- Test/production environment toggle in UI — Previously switching environments required manually editing a configuration file. The environment toggle is now in the KSeF Connection tab. Use this to test submissions in the MF sandbox without a code change.
- Tax rate mapping UI — Visual mapping table: match each PrestaShop tax rule to a Polish VAT code (
23,8,5,0,ZW,NP). Previously required editing a PHP config array. The UI validates that all active tax rules are mapped before allowing save. - Audit log CSV export — Export all or filtered audit records as CSV. Include KSeF-IDs, UPO numbers, and acceptance timestamps for accountant handoffs and VAT audit preparation.
Fixed
- B2C buyer block omitted — B2C orders with no NIP were generating FA(2) XML with the
<Podmiot2>block omitted entirely. MF schema requires the block with<IdentyfikatorPodmiotu type="BRAK">for B2C buyers. Fixed.
[1.2.0] — June 2025
Initial public release.
Included at Launch
- KSeF session management (open, submit, close, terminate, poll for UPO)
- FA(2) XML generation from PrestaShop order data
- XAdES-BES digital signing using KSeF token
- UPO download and local storage
- Audit log with per-record XML and UPO download
- Test and production environment support
- PrestaShop 8.0–8.2 compatibility
- PHP 8.0–8.2 compatibility
Compatibility at 1.2.0
| Component | Supported | |---|---| | PrestaShop | 8.0 – 8.2 | | PHP | 8.0 – 8.2 | | MySQL | 5.7, 8.0 | | KSeF environment | Test and Production | | FA(2) schema | 1.x |