How to connect WooCommerce to KSeF, step by step (2026)
Published: September 25, 2026 · Wersja polska
Since April 1, 2026 every active Polish VAT payer — online shops included — must issue B2B invoices as structured invoices in KSeF (Krajowy System e-Faktur, Poland's national e-invoicing system). Until the end of 2026 there is a transition period without penalties; from January 1, 2027 the tax authority enforces them. This guide shows how to connect a WooCommerce store to KSeF in about 30 minutes — no intermediary, no per-invoice fees and no external accounting system.
What you need
- A WordPress + WooCommerce store (WordPress 6.5+, PHP 8.1+),
- your company's NIP (Polish tax ID) and access to the Ministry of Finance KSeF app (Trusted Profile / Profil Zaufany or a qualified signature),
- about 30 minutes.
Step 1. Generate a KSeF token
The integration authenticates to KSeF with a token that has the InvoiceWrite and InvoiceRead permissions. You generate it in the Ministry of Finance KSeF app — first in the test environment, so you can rehearse the whole flow safely, and only then in production. Detailed walkthrough (in Polish): how to generate a KSeF token.
Step 2. Install the free FakturFlow plugin
In the WordPress admin go to Plugins → Add New and search for FakturFlow – E-Invoicing for KSeF. The plugin is free, with no invoice limits and no commission: it generates FA(3) files, validates them locally against the official XSD schema and sends them straight to the Ministry of Finance KSeF API 2.0. Invoice data never passes through any intermediate server.
Step 3. Configure the connection
Open WooCommerce → KSeF Invoices and fill in:
- Environment — start with “Test”; switching to production is one click later,
- Seller NIP and company name,
- KSeF token — stored encrypted and never written to logs.
Click Test connection. The Status panel next to the form shows whether the token is saved, the NIP is valid, which environment is active and whether your hosting can actually reach the KSeF API (some shared hosts block outgoing traffic).
Step 4. The NIP field at checkout does the routing
FakturFlow adds a checksum-validated NIP field to both the classic and the block checkout. An order with a NIP is flagged as B2B automatically — and only those orders go to KSeF. Consumers check out exactly as before.
Step 5. Issue your first test invoice
Place a test order with a NIP, then use Generate → Validate → Send on the order screen. A few seconds later you'll see the assigned KSeF number, can download the UPO (official proof of receipt), and the invoice visualization gets the KOD I QR code your customer can use to verify the document with the Ministry. Once everything works, switch the environment to production and replace the token with a production one.
Step 6 (optional). Turn on full automation
The free version covers the complete manual flow. If you want invoices to flow on their own, the FakturFlow Pro add-on adds:
- automatic submission to KSeF when an order is paid (with retries on failures),
- automatic correction invoices from WooCommerce refunds,
- offline24 mode — the store keeps issuing invoices while KSeF is down and delivers them within the statutory deadline,
- a compliance dashboard with a full audit log and CSV export.
Pro is 249 zł / €59 / $69 per year for one site, with a 14-day money-back guarantee — buy a license here.
Frequently asked questions
Do consumer (B2C) invoices have to go to KSeF? No — the mandate covers invoices between businesses. FakturFlow routes only orders with a buyer NIP to KSeF.
What happens to an invoice when KSeF is down? The law provides offline modes: you issue the invoice locally and deliver it to KSeF within the statutory deadline. In Pro this happens automatically.
Do I need a separate invoicing program? No. The invoice is created directly from the WooCommerce order, and the legally original document is the one in KSeF.