Blog— Anton Ignashev

KSeF in enova365, Optima and Subiekt GT: seven months in

KSeF in enova365, Optima and Subiekt GT: seven months in

Why This Post Is Dated September and Not January

Every comparison of KSeF support across Polish ERPs was written before the mandate started. Same question in all of them — will your system be ready? — and all of them went stale in April, when the obligation reached everyone below the 200 million złoty threshold. Large taxpayers went first, on 1 February. Everyone else on 1 April.

The useful question now is a different one. Seven months of real invoices have run through these systems. What broke — and does the choice of ERP explain any of it?

Barely, and not where people expect. I write here mostly about enova365, Optima and Subiekt GT as integration targets, and I recently put their APIs side by side. This is the KSeF row of that table, expanded. The honest version is shorter, and stranger, than any vendor comparison would allow.

All Three Send. Close That Row.

enova365 shipped 2.0 API support well before the deadline and includes it in the system. Comarch has had a KSeF module inside Optima since the 2023/2024 line, so anyone on a supported version already has it. InsERT pushed the KSeF work through the Subiekt GT 1.89 wave — the version your Sfera licence wants activated anyway.

Three vendors, three architectures, one identical outcome: an invoice leaves the system, the national register accepts it, a KSeF number comes back. In seven months I have not seen a single project where sending was the thing that failed.

Which has a practical consequence. If a vendor's KSeF pitch is still about sending — about compliance, about readiness — they are quoting you for a problem that arrived with your licence. Ask them about receiving instead, and watch what happens.

The Half That Was Never Scoped

Here is the change nobody costed properly. Before the mandate, a purchase invoice arrived because a supplier chose to send it to you: an email, a PDF, sometimes paper. The arrival was somebody's decision — and if it never arrived, the supplier eventually chased it.

Now the structured invoice in KSeF is the invoice. The PDF in your inbox is a courtesy copy of a document you already legally received. Nobody has to send you anything.

So a supplier who stopped emailing — and why wouldn't they, they issued it into the national system — is a supplier whose invoices quietly stop appearing in your books. Nothing errors. Nothing is missing, in the sense a system can detect. From your ERP's point of view, that supplier just went quiet.

This is the same failure shape I keep running into elsewhere: an absent field is not an empty field, and systems report absence as calm. A document you never pulled looks exactly like a document that doesn't exist.

The measurement, and it takes one hour. Take one closed month. Pull your KSeF inbound list for it — every structured invoice issued to your NIP in that period. Count it. Now count the purchase invoices in your register for the same month. Two numbers.

They will not match. The direction tells you what you are dealing with. More in KSeF than in the books is the expensive one: those are deductions you have not taken and documents you do not know you hold. I have seen that gap run into double-digit percentages at companies that consider their accounting tidy, and the cause is always the same — the process still starts with an email.

All three of these ERPs can pull the inbound list. None of them will tell you that you never looked.

The Three Quiet States

Sending works. Not sending is where the risk moved — and all three systems handle it the same unhelpful way: the failure is an absence.

One: issued, never sent. The document sits in your books with a number from the series and no KSeF number. Not rejected — nobody ever attempted it. The send died on a credential, a queue, a service that stopped, a person who was going to get to it later. Your ERP holds a document that is, as far as the tax authority knows, not an invoice. No error shows, because no operation failed. There was no operation.

Two: sent, rejected, unread. A submission came back refused — a validation problem, a schema issue, a permission gone stale. Somewhere there is a message saying so. Rejections are rare enough that nobody built a habit of checking, and rare things with no habit attached turn up in an audit rather than in a report.

Three: offline24, clock running. An invoice issued in offline mode has to reach KSeF within 24 hours. That part is new: it is the only deadline in Polish accounting measured in hours. Everything else in the calendar runs in days or months — the 15th, the 20th, the 25th — and a team built around a monthly rhythm has no reflex for a clock that expires overnight. Offline24 also puts two dates on one document, the offline issue date and the date KSeF accepted it, and for period assignment they are not interchangeable. Check which one your system stores, and which one your reports read, before you lean on either.

None of the three raises an alarm for any of this. Not carelessness on the vendors' part — an ERP alerts on operations that fail, and all three of these are operations that never ran.

What an Agent Can Actually Read

Here the API comparison starts to matter again, and here the three do diverge — not in KSeF capability, but in how cheaply something outside the ERP can see the state.

enova365 exposes the invoice record, its KSeF number and its submission state through the WebAPI, which makes a nightly reconciliation a small job. Optima's answer depends on your version and your module licences, which is the recurring theme with Optima: the capability usually exists, the question is whether your particular installation has the endpoint. Subiekt GT keeps the pattern it keeps everywhere — the data is reachable through Sfera on the Windows host, at the cost of a small service that owns a COM session and needs babysitting.

Different effort, same reachable facts. In all three cases you can answer, from outside, the only three questions that matter: which documents have no KSeF number, which submissions came back refused, and which offline invoices are still inside their day.

The Audit, and the First Thing Worth Building

One afternoon, on your own data, no vendor involved:

  1. Inbound coverage. KSeF inbound count against purchase register count, one closed month. The gap is your number.
  2. Unsent and quiet. Sales documents in the books with no KSeF number and no recorded failure, listed with age in days. The oldest one tells you how long a document can sit unnoticed in your process.
  3. Rejections. Every refused submission from the last six months, and for each one, how many days passed before a person acted. If you cannot answer, that is the answer.
  4. Custody. Who generated your KSeF certificate, and when does it expire? It is valid for at most two years from issue, which for most companies means a date somewhere in 2028 sitting in nobody's calendar — and with a type-2 certificate, expiry means you cannot issue offline at all any more. The 2028 part is not urgent. The part where one named person holds it and nobody else can get to it is urgent today, and it is the same access question that predicts how every integration project will go.

Then build the boring thing. A read-only nightly job that emails three counts to one person. No write access, no approvals, no risk — and it makes visible a class of problem that is currently invisible in all three systems. If the counts come back at zero every morning for a month, you have bought certainty for almost nothing. That is a good outcome too, and the cheapest one on offer.

Running enova365, Optima or Subiekt GT and not sure what KSeF is quietly not telling you? Get in touch. This read-only reconciliation is the first thing I build on all three — it costs little, argues with nothing, and it is the only honest way to find out whether there is a bigger project here at all.

Check a Polish VAT counterparty in seconds, free

KsięgoAI checks a NIP against the VAT white list and VIES, scores the risk and saves proof of due diligence. Works in Telegram and Claude.

Try KsięgoAI→

Let’s talk about your project

Free 30-minute consultation. We’ll figure out if and how I can help.

Book a Free 30-Minute Call

Select a date

November 2026
Mon
Tue
Wed
Thu
Fri
Sat
Sun
← Back to Blog

Related Posts

What Subiekt nexo and Subiekt GT cost in 2026: licence prices, the Abonament, and the 30 days that raise the renewal by half
Blog

What Subiekt nexo and Subiekt GT cost in 2026: licence prices, the Abonament, and the 30 days that raise the renewal by half

Subiekt nexo for 3 workstations is 1 275 zł net, Subiekt GT 1 045 zł, nexo PRO 2 575 zł. Those are perpetual licences, and then there's the yearly Abonament: 349 zł for nexo if you renew within 30 days of expiry, 539 zł if later. Plus Sfera (the API), the accounting-office client licences, and a comparison with Optima and enova365.

Read more→
What Comarch ERP Optima costs in 2026: the subscription list, Basic vs Pro, and three costs it leaves out
Blog

What Comarch ERP Optima costs in 2026: the subscription list, Basic vs Pro, and three costs it leaves out

Optima's price list is public: Podstawowy 59 zł a month, Logistyka Basic 75 zł, Księga Handlowa 175 zł. The catch is the word Pro: it's a top-up on Basic, not a separate tier, so full accounting in Finanse costs 250 zł, not 200. Plus the Podstawowy limits, how HR counts employees for accounting offices, and two worked examples.

Read more→
December pay paid in January 2027: a 2026 or a 2027 cost? The 8 January payday and ZUS by 15 or 22 February
Blog

December pay paid in January 2027: a 2026 or a 2027 cost? The 8 January payday and ZUS by 15 or 22 February

December payroll paid in January is a 2026 cost, but only if the pay leaves on the date in the client's pay rules and the ZUS contributions reach ZUS on time. 10 January 2027 is a Sunday, so the statutory deadline ends on Friday 8 January. The same pay lands in the employee's 2027 PIT-11. Here's what an office checks in December and in February.

Read more→