7 min readAccounting & Invoices

In short: KSeF (Krajowy System e-Faktur, Poland’s National e-Invoicing System) is the government platform through which businesses in Poland issue and receive invoices. Since 2026, invoices to businesses must go through it – and online shops are no exception. WooCommerce itself doesn’t issue invoices or connect to KSeF. Below we explain who the obligation applies to and when, what exactly must be sent, how to prepare your shop and how to send invoices to KSeF automatically.

What is KSeF and why does it matter for online shops?

KSeF is a Polish Ministry of Finance system in which an invoice exists as an XML file with a strictly defined structure (a “structured invoice” in the FA(3) schema). The invoice is no longer simply “sent to the customer”. It goes to KSeF, receives a unique KSeF number there, and the buyer downloads it from the system.

It matters to you if your business is VAT-registered in Poland – a Polish shop, or a foreign company with a fixed establishment in Poland. For an online shop that means three changes:

  • every invoice to a business must go to KSeF, otherwise it hasn’t formally been issued,
  • an invoice that is already in KSeF can’t be edited or deleted – mistakes are fixed only with a credit note,
  • the shop needs to know whether the buyer is a business, so checkout needs a VAT ID (NIP) field.

When did KSeF become mandatory?

Date Who it applies to
1 February 2026 Businesses with 2024 sales above PLN 200 million. From this date all businesses must also be able to receive invoices via KSeF
1 April 2026 All other taxpayers
1 January 2027 The smallest businesses whose invoiced sales don’t exceed PLN 10,000 gross a month – until the end of 2026 they may still issue invoices outside KSeF. Once the limit is exceeded, the obligation applies from the invoice that crossed it
1 January 2027 Penalties start for invoices issued outside KSeF – up to 100% of the VAT shown on such an invoice

So 2026 is a transition year without penalties, but the obligation already applies. Confirm the details for your business with your accountant.

Invoices to businesses and consumers – what must go to KSeF?

Type of invoice KSeF
Invoice to a business (B2B, with a VAT ID) Mandatory
Invoice to a private customer (B2C) Optional – you can issue it in KSeF or outside it
Credit note Same as the invoice it corrects
Pro forma invoice No – it isn’t an invoice for VAT purposes

Consumers don’t have to use KSeF. If you issue their invoice in the system, you still have to give it to them in a readable form, e.g. a PDF by e-mail or in their account. That printout can include a QR code that lets anyone verify the invoice in KSeF.

What changes in the shop’s daily work?

  • Buyer details must be right first time. A correction note isn’t enough – a wrong VAT ID or company name needs a credit note.
  • The issue date is the date it’s sent to KSeF. An invoice that’s “prepared” in the shop but not sent doesn’t formally exist yet.
  • Foreign-currency invoices. VAT on a structured invoice is stated in PLN, converted at the NBP (National Bank of Poland) rate from the last working day before the tax point.
  • Nothing gets deleted. You fix mistakes with a credit note, which also goes to KSeF.
  • Business customers download the invoice from KSeF, but many still want a PDF by e-mail – so it’s worth doing both.

How to prepare a WooCommerce shop for KSeF

1. Add a VAT ID field at checkout

WooCommerce doesn’t ask for a VAT ID by default. Without it you can’t tell a business from a consumer or issue a correct B2B invoice. The field should work in both the classic and the block checkout.

Enabling the VAT ID field at WooCommerce checkout in the invoice settings
You switch on the VAT ID field at checkout with one setting – it works in both the classic and the block checkout.

2. Complete your company details

The seller’s name, address and VAT ID must match the official register exactly. Every typo goes to KSeF and needs a credit note.

3. Generate a KSeF token

You generate the token in the KSeF Taxpayer Application, with permissions to issue and view invoices. Start with the Ministry of Finance test environment – a separate test application where you can safely try the whole process.

4. Decide who handles errors

KSeF can reject an invoice, for example because of a wrong VAT ID or an expired token. Someone needs to notice and fix it – ideally the system shows the status of every invoice.

How to send invoices to KSeF automatically, step by step

WooCommerce doesn’t connect to KSeF, so you need a plugin. We’ll show it with PDF Invoices, Credit Notes & KSeF for WooCommerce, which issues invoices in the shop and sends them straight to KSeF – no second program and no retyping.

Step 1: enter your VAT ID and token

Go to WooCommerce → Invoices → KSeF, choose the environment (start with Test), enter your company VAT ID (NIP) and the token. Decide which invoices go to KSeF: companies only (when the customer gave a VAT ID) or all invoices.

KSeF settings in WooCommerce – environment, VAT ID, token and invoice scope
KSeF settings: test or production environment, VAT ID, token and which invoices go to KSeF.

Step 2: test the connection

Click Test connection. Once KSeF confirms it accepted the token, you can switch the module on.

Step 3: turn on background sending

Tick KSeF module enabled and save. From now on, every new invoice and credit note goes to KSeF in the background – no waiting and no clicking. You can also send manually with a button on the order.

Step 4: check the invoice on the order

The order shows the sending status and the KSeF number. From here you can also download the UPO (official acknowledgement of receipt) and the XML file. The customer’s PDF shows the KSeF number and a verification QR code.

Invoice and credit note on a WooCommerce order
The “Invoices & documents” box on the order: the invoice, the credit note and buttons to issue documents.

Step 5: switch to production

When everything works in the test environment, switch the environment to Production and enter your production token.

Things to watch out for

  • Test in the test environment. Invoices in production KSeF are real invoices – you can’t take them back.
  • Look after your token. It has its own permissions and can be revoked. If sending stops working, check the token first.
  • Don’t take shortcuts by deleting invoices. Every mistake is fixed with a credit note. See how to issue a credit note in WooCommerce.
  • Consumer invoices. If you don’t have to, you don’t need to send them to KSeF – a PDF is enough. But if you’d rather keep everything in one place, you can send them too.

Frequently asked questions

Do invoices to private customers have to go to KSeF?

No. Issuing consumer invoices in KSeF is optional. The customer still has to receive the invoice in a readable form, such as a PDF.

Will a business customer get the invoice by e-mail?

Formally they receive it from KSeF, but nothing stops you from also sending a PDF with the WooCommerce e-mail and in their shop account.

What if KSeF rejects an invoice?

The error status shows on the order and in the document list, together with the message from KSeF. Once you fix the cause, e.g. the token, you send the invoice again.

Can I test KSeF first without any risk?

Yes. The Polish Ministry of Finance provides a test environment. Invoices sent there have no tax consequences.

Does KSeF apply to my shop if I’m not based in Poland?

Only if you’re VAT-registered in Poland in a way that brings you under the KSeF rules, e.g. with a fixed establishment there. Check with a Polish tax adviser.

PDF Invoices, Credit Notes & KSeF for WooCommerce
Automatic invoices, a credit note for every refund, pro formas, a register with a monthly accountant pack and KSeF sending – straight from your shop. Try it free for 7 days.

← All posts

Leave a comment

A question or your own experience? Write it here – we reply personally. Your e-mail address will not be published; your comment appears after approval.

Custom features

Missing a feature? We will build it for your store

Every one of our plugins started with a real store’s need. Tell us what you need – we will adapt an existing plugin or build a new feature, compatible with WooCommerce, HPOS and WPML.

Custom WooCommerce functionality

Partner program

Recommend the plugins you use and earn 20%

Every wpAsist customer gets their own link and discount code. We pay 20% on every sale from your recommendation and another 20% every time that customer renews. Building stores for clients? The developer program pays 33%.

More about the partner program
Przemek Szczęch – developer of wpAsist plugins

Hi, I’m Przemek

I started out in 2009 with affiliate programs, and a year later I made it onto GVO’s list of top-selling partners worldwide. Since 2014 I have been building stores and websites for clients: setting up analytics, improving conversions, connecting systems and seeing what really sells.

Since 2019 I have been writing my own WooCommerce plugins for the needs of real stores. Missing a feature? Get in touch – my best plugins started with a client’s question.

E-mail: help@wpasist.eu