KSeF 2026 — the complete guide for small businesses in Poland
The Krajowy System e-Faktur (KSeF — the National e-Invoicing System) has changed how invoicing works in Poland. Structured e-invoicing has been mandatory for large companies since 1 February 2026 and for all active VAT payers since 1 April 2026. Every business — including those exempt from VAT — has had to be able to receive invoices through the system since 1 February 2026.
The change affects more than 1.7 million entities, including sole proprietorships (JDG) and companies. If you run a small business in Poland and want to avoid penalties when the transition period closes, this guide is for you.
What is KSeF?
KSeF (Krajowy System e-Faktur) is a central IT system run by the Polish Ministry of Finance that stores structured electronic invoices in XML format. Every invoice sent to KSeF receives a unique KSeF reference number and an UPO (Urzędowe Poświadczenie Odbioru — Official Receipt Confirmation), which together confirm its authenticity, integrity and delivery date.
The system replaces the previous model, where PDF or paper invoices travelled between seller and buyer. In KSeF the invoice lands in a central database and is immediately available to both parties. You do not need to email it or store it yourself — the system keeps invoices for 10 years from the end of the calendar year in which they were issued.
Who KSeF applies to, and when
The obligation is being introduced in stages. Here is the full timetable:
| Date | What changes |
|---|---|
| 1 February 2026 | Large companies issue invoices through KSeF. Everyone else — including businesses exempt from VAT — must be able to receive invoices through the system. |
| 1 April 2026 | Issuing invoices through KSeF becomes mandatory for all active VAT payers. |
| 31 December 2026 | End of the transition period for micro-businesses (sales under PLN 10,000 per month). |
| 1 January 2027 | Full obligation for every B2B entity, and financial penalties begin. |
What about B2C invoices?
Invoices for consumers (private individuals without a NIP) do not have to go through KSeF. You can still issue them the traditional way, as a PDF or on paper.
NIP is the Polish tax identification number — the equivalent of a VAT number, and the identifier KSeF uses to route an invoice to the right buyer.
How to generate a KSeF 2.0 token, step by step
An authorization token is the key that lets external applications (such as Invoice.app) talk to KSeF on your behalf. Treat it like a password — keep it somewhere safe.
Important: tokens generated in KSeF 1.0 (the test environment used before 2026) do not work in KSeF 2.0 (production). You have to generate a new one in the current portal.
The taxpayer portal is only available in Polish, so the screenshots below are of the Polish interface. The Polish labels you need to look for are given alongside the English.
Step 1 — sign in to the KSeF Taxpayer Application
Go to ap.ksef.mf.gov.pl/web and sign in using one of these methods:
- Profil Zaufany (Trusted Profile) — the most common method, available through login.gov.pl. It requires a Polish trusted profile, usually set up through a bank or a government office.
- Podpis kwalifikowany (qualified electronic signature) — faster and more reliable. Requires a qualified certificate, for example from Certum or SimplySign.
- Pieczęć elektroniczna (electronic seal) — for companies that hold a qualified electronic seal.
Step 2 — generate a token with the right permissions
Once signed in, go to Tokeny (Tokens) and click Generuj token (Generate token). On the token screen:
- Give the token a descriptive name, such as "Invoice app" — that makes it easy to tell later what each token is for.
- Tick both permissions:
- Wystawianie faktur (issuing invoices) — lets the app send invoices to KSeF.
- Przeglądanie faktur (viewing invoices) — lets the app download invoices you have received, such as purchase invoices from your suppliers.
Note that a token's permissions cannot be changed after it is created. If you forget the viewing permission, you will have to generate a new token.
Step 3 — copy the token and keep it safe
The portal then shows the token — a string of characters you paste into your invoicing app. Copy it straight away and store it somewhere safe, such as a password manager. The portal shows the token only once; if you lose it, you have to generate a new one.
Using KSeF in Invoice.app
Setting up the connection
Paste the generated token into Invoice.app's settings and the KSeF connection is configured automatically. From that point you can send and receive invoices from inside the app.
Sending your first invoice to KSeF
With the token in place, sending an invoice is straightforward and largely automatic:
- Create the invoice as usual — fill in the client details, line items, VAT rates and payment terms.
- Check the buyer's NIP — KSeF requires a NIP on every B2B invoice. Make sure the client's details are complete and match the VAT register.
- Send the invoice to KSeF — Invoice.app generates the structured XML file, encrypts it and submits it to the system.
- Wait for validation — KSeF checks the invoice. Once accepted, it receives an official KSeF reference number and a UPO.
Tip: an invoice sent to KSeF cannot be edited or deleted. If you spot a mistake, the only remedy is to issue a corrective invoice (faktura korygująca).
Tracking status and downloading the UPO
Invoice.app tracks the status of every invoice in real time:
- Pending — the invoice has been sent and is awaiting validation.
- Accepted — the invoice passed validation and received its KSeF reference number. The buyer can see it in their own system.
- Rejected — the invoice contains errors, such as an invalid NIP. Correct the details and send it again.
Syncing purchase invoices
You no longer need to type in invoices for fuel or phone bills by hand. Invoice.app downloads the invoices you receive through KSeF automatically, keeping your local data in step with the national system. Everything you have issued and received sits in one place.
QR codes on invoices
Invoice.app adds a QR code to the PDF version of any invoice sent to KSeF. The recipient can scan it with a phone and check the document directly in the national system.
Common mistakes when adopting KSeF
- A missing or invalid buyer NIP — KSeF requires a NIP on every B2B invoice, entered without dashes or spaces. Check that your client records are up to date.
- A token without the viewing permission — tick both permissions when generating the token. They cannot be changed afterwards.
- Trying to edit an invoice already sent — an invoice in KSeF is immutable. The only remedy is a corrective invoice.
What KSeF gives a small business
- Faster VAT refunds — the refund period drops from 60 to 40 days for invoices issued through KSeF.
- No archiving — the system keeps documents for 10 years, so you do not have to archive invoices yourself.
- No more JPK_FA — the tax office already has your invoices, so there are no extra files to prepare.
- Immediate delivery — your counterparty sees the invoice as soon as KSeF validates it.
Useful links
- KSeF Taxpayer Application — signing in and managing tokens
- podatki.gov.pl/ksef — the Ministry of Finance's official information page
- KSeF integration in Invoice.app — what the app does with KSeF