Skip to content
codecollab.pl
§ Blog ksef accounting software integration

KSeF and your accounting software - connecting Optima, iFirma, wFirma and Fakturownia

Almost every accounting package used in Poland today has KSeF sending built in - the whole job is authenticating it correctly and getting the data to it

Krystian Kacik 11 min read
Contents

Almost every accounting package used in Poland today has sending to KSeF - Poland’s mandatory national e-invoicing system - built in, and the whole job is authenticating it correctly and getting the data to it. Comarch Optima, iFirma, wFirma, Fakturownia, inFakt, Subiekt, WAPRO, Saldeo: they all send invoices to the national e-invoicing system on their own, no code required. The problem clients call me about almost never concerns KSeF itself - it concerns invoices reaching the accounting package from the store incomplete, late, or twice.

KSeF is already in force: for the largest taxpayers since February 2026, for everyone else since April 2026. Below, how the popular packages differ and where this chain breaks.

What it means that an accounting package is integrated with KSeF

An accounting package integrated with KSeF has a built-in function that turns an issued invoice into a document in the format required by the Ministry of Finance, sends it to the national e-invoicing system, receives the assigned number and the confirmation of acceptance, and then shows the status next to the document. You install nothing and program nothing - you authenticate it once and grant permissions.

Two things get confused constantly and are worth separating:

  • The package’s integration with KSeF - the software vendor builds it, you only click through the configuration
  • Your store’s integration with the accounting package - this is where the real work and the real cost begin

KSeF is the last link in the chain. If the buyer’s VAT number is missing earlier on, or a line has the wrong VAT rate, KSeF will reject the document - but the culprit is sitting several steps back.

Which accounting package supports KSeF - an overview

Every package that matters on the Polish market supports KSeF; they differ in their sales model and in how easy it is to feed them data from your store. What follows is a practical distinction, not a ranking - the best package is usually the one your accountant already knows.

PackageModelWhat it suits best
Comarch ERP Optimalicence + update guaranteeCompanies with a warehouse and trade operations, popular with accounting offices
iFirmaonline subscriptionSole traders and micro companies, bookkeeping bundled with the software
wFirmaonline subscriptionMicro and small companies, good integrations with stores and marketplaces
inFaktonline subscriptionSelf-employed people, with an accountant available in the package
Fakturowniaonline subscriptionCompanies that only want to issue invoices and use an external bookkeeper
Subiekt (InsERT)licence + update subscriptionStores and wholesalers with a warehouse
WAPRO (Asseco)licence + subscriptionTrading and manufacturing companies, extensive warehouse features
SaldeoSMARTsubscriptionAccounting offices, cost document workflow
Mała Księgowośćone-off licenceSimple bookkeeping, one company, no store

Two notes. KSeF features are sometimes only available in higher tiers of a package, and price lists change often - check with the vendor. And if you have a store, more important than the “supports KSeF” label is whether the package has an API or a ready connector for your platform. Without that, somebody will still be retyping orders by hand.

How to connect an accounting package to KSeF step by step

Connecting a package to KSeF is a one-off configuration that takes a simple company a few dozen minutes. The order is the same whether you use Optima, wFirma or Fakturownia.

  1. Verify the company details in the package - VAT number, full legal name, address. KSeF compares them against official registers and rejects documents where they diverge
  2. Prepare your authentication method - depending on your legal form and system version this will be the owner’s qualified signature, a qualified company seal, a Trusted Profile, or a token or certificate generated in KSeF for the software. This layer has changed over time, so check the requirements for your version
  3. Grant permissions in KSeF - the owner or an authorised person specifies who, and which software, may issue and receive invoices on the company’s behalf
  4. Paste the credentials into the package - in Optima, wFirma or Fakturownia this is usually a single “KSeF” window in the company settings
  5. Test on the test environment - send a few typical documents there: a standard invoice, a correction, an invoice for a customer with no VAT number
  6. Send the first real document and check the KSeF number - only an assigned number and a confirmation of acceptance mean the invoice exists in the system
  7. Set up receiving purchase invoices - suppliers issue documents against your VAT number and somebody has to pull them into the books regularly

If you get stuck at step 2 or 3, the problem is usually not technical but formal: a missing signature, a missing power of attorney, or out-of-date data in the register.

Permissions: you, your accountant and the accounting office

Permissions in KSeF are granted by the company, not by the software - nobody sorts that out for you. In practice you need three decisions.

Who issues. Usually you or your sales system. The permission goes to the person or tool that actually generates the documents.

Who receives. Cost invoices from suppliers land in KSeF automatically. If nobody collects them, they simply sit there - and you lose the VAT deduction in the period you were counting on.

What the accounting office can do. The office can have access to receiving only, or to issuing as well. The permission is granted to a named person or an entity and can be withdrawn - no passwords are involved here, KSeF has its own system of authorisations.

What helps: a simple list of “who has which permission and since when”. When an accountant or an employee changes, that is the only way to know in five minutes whose access to revoke.

Where the accounting package should get store invoices from

This is the point where you genuinely hire a developer. An accounting package has no idea an order appeared in your store - somebody has to hand it over. You have four routes, from the cheapest to the most flexible:

RouteHow it worksWhen it makes sense
By handA person retypes orders into the packageUp to a dozen or so invoices a month
File importExport orders from the store, import into the packageSteady, predictable volume
Ready connectorA plugin or an intermediary hub passes orders acrossStandard store, standard invoices
Process-built integrationThe store talks to the package through an API following your rulesAdvance payments, subscriptions, several companies, B2B

In WooCommerce stores I most often meet the third option: orders go to Baselinker, the order-management hub most Polish stores run on, or to a warehouse system, and the invoice is created there and flies to KSeF. How to put that together I laid out in the piece on integrating WooCommerce with an ERP and e-invoicing and in the walkthrough of issuing invoices from Baselinker.

The fourth option is needed less often than it is sold. When it genuinely pays off I described in the article on a custom KSeF integration through the API.

What it costs

The cost splits into two items: the subscription or licence for the accounting package, and the one-off work to connect it to your store. You pay the first to the software vendor, the second to whoever builds it.

  • Online subscription packages (iFirma, wFirma, inFakt, Fakturownia) - a few dozen PLN a month on micro-company tiers, more with a higher document and user count. Price lists change several times a year, check at source
  • Licensed packages (Optima, Subiekt, WAPRO) - a licence plus an update subscription, on the order of a few hundred to a few thousand PLN a year depending on modules and seats
  • A ready store plugin - usually a few hundred PLN a year
  • Implementation and connecting the systems on my side - depends on how many document types and how many exceptions your process has. I do fixed-bid projects usually in the range of around 5,000-10,000 PLN net (Polish market rates); smaller connections I quote after the diagnosis, always in writing before we start

A tip from practice: do not buy the most expensive package “to be safe”. It is cheaper to start with whatever handles today’s volume and move up when you start outgrowing it.

What breaks most often

Rejections in KSeF almost always come from data, not from the connection. The list I check first when a client calls to say “KSeF is not accepting invoices”:

  1. A missing or wrong buyer VAT number - the most common cause. In stores the VAT field is often optional, or the customer types it with spaces and dashes
  2. Company details out of sync - the name in the package differs from the register
  3. VAT rates and units of measure - a product with no rate, or with a unit the schema does not recognise
  4. Duplicated documents - the same order reaches the package twice, because the integration fires both on order placement and on payment status change
  5. A silent send failure - the document did not go through, nobody set up a notification, and a month later there are several dozen invoices to sort out
  6. Purchase invoices never collected - the costs sit in KSeF and the bookkeeping never sees them

Points 1 and 4 are work on the store side: VAT number validation in the cart, an unambiguous order number and a single event that triggers issuing the invoice. That is exactly the piece I handle as part of developing and optimising an existing store.

Where to start

Start by checking where your invoices really come from today. If it is the accounting package and there are a few dozen a month, configuration and permissions are enough. If it is the store or a B2B portal, you need to deal with the data flow, not with KSeF itself.

I start with a free diagnosis: I look at how orders reach the bookkeeping and say straight whether configuration and a plugin will do, or whether a proper implementation is needed. For bigger work you get a quote in writing before we start.

Frequently asked questions

Do I have to buy separate software for KSeF? No. In the popular accounting packages, sending to KSeF is built in, sometimes in a higher tier of the plan. A separate tool only makes sense if your current package is no longer being developed.

Which accounting package integrates best with a WooCommerce store? The most ready-made routes are offered by wFirma, Fakturownia, Optima and Subiekt - either directly or through an intermediary hub such as Baselinker. The choice depends on what your sales look like: for simple orders a ready connector is enough, while advance payments and subscriptions call for a process-built integration.

Can my accounting office send invoices to KSeF for me? Yes, if you grant it the relevant permission in KSeF. Responsibility for issuing documents on time stays with the company, so it is worth agreeing in writing who does what and by when.

What happens when KSeF rejects an invoice? The document is not issued and gets no KSeF number, and the package shows an error code. You have to fix the data at source and send again - which is exactly why a notification on failed sends matters so much.


Sitting on this yourself and unsure where to start? I speed up and repair existing sites and stores - Core Web Vitals, outages, the features that are missing. Tell me what is happening and you will get a concrete quote with a date.

§ Quote in 24h

Your store is slowing down or looks dated, and you do not know where to start?

Describe the scope in two sentences or send a link to your store. I tell you what to fix first, and you get a fixed bid in writing within 24 hours - no "from X" pricing.

Send your scope - quote in 24h