KSeF integration: how to pick your route
There is no single "KSeF integration". If you issue invoices in a Polish invoicing suite, KSeF is already inside it and you just switch it on. If you sell through a Polish e-commerce platform, that platform has its own module. If you bill through Stripe, you need a bridge, and that is where we come in. If you're building your own software, you go straight to the API. And if you issue a handful of invoices a month by hand, the government's free Taxpayer App is enough.
This page has one job: to put you in front of the right door before you lose a week solving a problem you don't have. A short table first, then a paragraph on each route.
| How you issue invoices today | What to do |
|---|---|
| Fakturownia, inFakt, wFirma, iFirma, Comarch, Symfonia | Switch KSeF on in your software's settings. No integration needed. |
| BaseLinker, Allegro, idoSell, Shoper | Use your platform's KSeF module. |
| Stripe (Billing, Checkout, subscriptions) | You need a bridge from Stripe to KSeF. |
| Your own software | Integrate with the KSeF API directly. |
| A few invoices a month, by hand | The Taxpayer App, free. |
You issue invoices in a Polish invoicing suite
Fakturownia, inFakt, wFirma, iFirma, Comarch, Symfonia and the rest of the Polish accounting software have had KSeF built in for a long time, because they had to. The mandate hit their customers on 1 February and 1 April 2026. So you aren't integrating anything. You open settings, paste a KSeF token or upload a certificate, and from then on invoices go to the system.
In the cloud services, meaning Fakturownia, inFakt, wFirma and iFirma, KSeF is usually included at no extra charge on every plan. ERP systems differ: Comarch Optima started charging separately for KSeF on 1 August 2026, and Symfonia bills for it annually. Check your own price list, but don't buy a second tool to do something your current one already handles.
This is the answer for most people who ask about KSeF integration at all. We add nothing here and there is no point pretending otherwise.
You sell through a Polish e-commerce platform
BaseLinker, Allegro, idoSell and Shoper shipped their own KSeF modules in the first quarter of 2026, under the same mandate. Payments run through Przelewy24 or PayU, invoices are created in the platform's panel, and the KSeF switch is right there too. Turn it on and check it on your first order.
Our tool has no business here. It doesn't read marketplace orders, only Stripe invoices.
You bill through Stripe
This is where the gap opens. Stripe issues and finalises invoices, but it knows nothing about
Poland's KSeF: not the FA(3) schema, not the KSeF number, and it won't collect the
UPO. You need something in between. Something that listens for the
invoice.finalized event, turns the invoice into FA(3) XML, authenticates with KSeF, encrypts the
document and collects the number.
That's exactly what KSeF Kit does, and exactly where it stops. To be blunt about what it doesn't do: it is not invoicing software. You can't issue an invoice by hand in it, record a cash sale or enter expenses. Without a Stripe account it is no use to you at all. If you're looking for invoicing software, go back to the first route.
The full mechanics, including the places this route usually breaks, are in Stripe to KSeF integration. What you need to collect on the Stripe side for an invoice to pass validation at all is in customer data. If you issue a dozen or so invoices a month, you'll fit inside the free plan.
You're building your own software
KSeF has a public, free REST API at version 2, and the production contract has been frozen since 22 December 2025, so an integration written once doesn't drift every month. The scope of work is larger than the description suggests: authentication, a session with its own AES key, building and validating FA(3), handling rejections, corrections, storing the UPO. We break it down in the KSeF API for developers.
You don't have to start from scratch. We publish the ksef gem under Apache-2.0: pure Ruby, no
Rails and no Stripe, just the protocol. Token and XAdES authentication, RSA-OAEP and AES-256-CBC
encryption, online and batch sessions, building and XSD-validating FA(3), UPO parsing, NIP checksum
validation and NBP-rate conversion. You can take it whether or not you use our app. If you'd rather
run the whole thing yourself, we cover that in self-hosting.
You issue a few invoices a month by hand
The KSeF Taxpayer App (Aplikacja Podatnika) is the Ministry of Finance's free app: it runs in the
browser, with nothing to install and no contract. You can issue an invoice in it, collect the ones
sent to you, download the UPO and generate a token for other software. At a few invoices a month
this is genuinely a good answer, and nobody needs to sell you anything more. The addresses are
ap.ksef.mf.gov.pl for production and ap-test.ksef.mf.gov.pl for the test environment. What
exactly you can do in it, and where it stops making sense, is in
the Taxpayer App.
The boundary is simple. Typing invoices in by hand works right up until there are dozens a month, or until they start appearing in the background without you. At that point the retyping becomes a separate job that somebody has to do every day.
What every route has in common
Whichever row of the table is yours, four things look the same, because the system imposes them.
- Authentication. You need a KSeF token or a certificate. A token is pasted once and you're running immediately; a certificate is free, valid for two years, and is where this is heading. The differences, and the trap in moving from one to the other, are in token or certificate.
- Environments. TEST first, PROD after. TEST runs on fictional identities, so you can't break anything there, while an invoice sent to PROD has been issued and can't be taken back. See the KSeF test environment.
- The FA(3) format. The invoice travels as XML in the FA(3) schema, mandatory since 1 February 2026. FA(2) no longer passes validation, so any guide or library still describing it is describing something KSeF won't accept. We cover the concepts in the structured invoice.
- The KSeF number and UPO coming back. Integration doesn't end at the send. A KSeF number and a UPO come back, proof that the invoice was issued. Both have to be stored and kept.
After that come the parts that depend on what you sell: the QR code on a document handed over outside the system, a KOR correction instead of cancelling, an export invoice for foreign customers, and the NBP rate on invoices in foreign currency. Who the mandate covers and from when is in KSeF mandatory in 2026, and if you're a sole trader, start with KSeF for sole traders.
Zapier and Make: why this integration doesn't exist
The question keeps coming back, so here's the answer once. There is no KSeF app in the Zapier directory. There is none on Make either. This isn't a gap somebody is about to fill.
The reason is technical. To send a single invoice you have to fetch a challenge from the API, sign
it with a key from a .p12 certificate using an XAdES signature or encrypt a token with RSA-OAEP,
generate an AES-256 key for that one session, wrap it with the Ministry of Finance's public key,
encrypt the XML with AES-256-CBC and declare four hashes and sizes at once. An HTTP node in a
no-code tool does none of that, because it has no access to the cryptographic material and nowhere
to keep it. It isn't that nobody got round to it.
Invoicing vendors aren't keen either. Fakturownia has had a "Zapier integration" request open since November 2016 with 109 votes, and in February 2025 it replied that it will not build a native Zapier or Make integration, citing security and limitations on Zapier's own side. The closest thing to no-code is inFakt, which does have a Zapier app, except that inFakt issues the invoice and handles KSeF on its own side. So no-code can get data as far as invoicing software, but not as far as KSeF.
If you have Stripe on your side and what you were really looking for was "Zapier for KSeF", the missing piece is the bridge from Stripe to KSeF, which is exactly the part no-code can't do.