Przemysław Zalewski

For companies that invoice in Poland

KSeF in your own system, next to the accounting app

Your invoices come out of your own system: an OMS, a CRM, a SaaS, maybe one built with AI. Since 2026 they have to go through KSeF. I add sending and receiving to that system, test it on the KSeF test environment first, and keep it working when the schema or the API changes.

See price and start date → Book a free 30‑min call

Hourly at $36⁠–⁠54/h excl. VAT. The integration usually takes one to three weeks. Details in the configurator →

Przemysław Zalewski

Sound familiar?

KSeF integration problems I fix in 2026

Why does KSeF return 429 when we send invoices?

In KSeF 2.0 an interactive session accepts at most 180 invoice sends an hour per context and IP address; overruns return 429 with Retry-After, and repeated overruns can make the block much longer (KSeF API limits).

I send larger volumes in batch mode, put sending behind a queue that honors Retry-After, and when your volume justifies it, prepare the request for higher limits that the Ministry has accepted from integrators since February 2026.

Our KSeF integration stopped working in February 2026

Tokens generated for KSeF 1.0 cannot be used in KSeF 2.0 and were not migrated, the Ministry announced on 4 December 2025 (KSeF). An integration still holding an old token cannot sign in.

I move the integration to the KSeF 2.0 API with a new token or certificate, test it on the KSeF test environment with test data, and only then switch production on your accounts.

Sound like you? Book a free 30‑min call →

How do we pull purchase invoices from KSeF automatically?

Since 1 February 2026 invoices are received through KSeF, and KSeF sends no notifications, so nothing reaches your system unless it asks (KSeF FAQ).

I add the incremental download the Ministry documents: export windows that each pick up where the last one ended, deduplication by KSeF number, and each purchase invoice saved in your system with its KSeF number.

KSeF rejected our FA(3) invoice with a schema error

The FA(3) structure applies from 1 February 2026, and KSeF rejects an invoice that does not match it, including a filled optional section with a missing required field (KSeF for IT).

I validate every invoice against the official schema before it leaves your system, the same check my free KSeF invoice validator runs in the browser, and turn errors into messages your team can act on.

Facing one of these? Book a free 30‑min call →

Scope

What the integration covers

Sending FA(3) invoices

Invoices generated by your system, validated against the official schema before they leave.

UPO and KSeF numbers

Confirmations collected and stored next to each invoice in your system.

Receiving invoices

Purchase invoices fetched from KSeF into your system, if you want them there.

Corrections and offline mode

Corrective invoices and the offline procedures, so a KSeF outage does not stop sales.

Process

How it works

  1. A short call

    Which system issues invoices, which invoice types, how many a month.

  2. One to three weeks

    The integration, tested on the KSeF test environment with test data.

  3. Production

    Switching to production with your certificate or token, on your accounts.

  4. Monthly care

    Optional care for schema and API changes, which the Ministry announces in its changelog.

Systems I can connect

  • Your own OMS, CRM or SaaS, including apps built with AI.
  • Older desktop systems with a database or an API to read invoices from.
  • Systems of foreign companies that sell in Poland, documented in English.

Track record

Proof

I built the free KSeF invoice validator: it checks an FA(3) invoice against the official schema in your browser and explains errors in plain words. Run one of your invoices through it before we talk.

Suppression-list platform: MVP to product, 300+ GB in production

The problem
A UK email publisher needed suppression lists built to grow to terabyte scale with constant-time sign‑up and zero-downtime deploys.
What I did
I led a small team from MVP to the full platform. Postgres partitioning by tenant and list, parallel request pipelines, blue/green deploys. One‑click unsubscribe shipped four months before Google and Yahoo announced the requirement.
Result
300+ GB and millions of events in production, zero-downtime deploys, an opt‑out path that kept working through a deliberate backend outage, and a compliance feature that landed before the deadline existed. In August 2026 I found orphaned table partitions left behind by deleted accounts and sales demos, stopped them piling up and recovered about 140 GB.

300+ GB outage-tested opt‑out blue/green

Back-office task management: team lead of four, no product manager

The problem
A back-office tool needed new features, a UI refresh and a faster pipeline, with no product manager in sight.
What I did
I led four engineers and kept coding. Trunk-based development with CI/CD, live updates over server-sent events, a stopped parallel initiative that analysis showed would not pay off, priorities set directly with department managers. A survey of the 100+ operators who used the tool rated the changes a clear improvement.
Result
“Measurable changes in some key metrics” and “a true bias for action”, in the public LinkedIn recommendation of my manager on that project, now a CTO.

team of 4 manager recommendation

An AI coding agent as a team member, under enforced rules

The problem
Coding agents write code faster than a team can review it. A team of four wanted the speed without a slop swamp on main.
What I did
I authored the rule set shared by Claude Code and Codex: mechanical checks over written rules, lint and test gates for security, API surface and CSP, agents working on main with hooks, every PR reviewed by a human, AI‑assisted content disclosed as such.
Result
In 2026 about two thirds of merged pull requests across two products were built with coding agents, and nearly all went through my review or merge. I merged 260+ PRs of my own and reviewed 300+ of other engineers’. My commits across those two products went from under 1,000 in 2025 to 7,500+ by October 2026.

~2/3 PRs with agents 300+ reviews 7,500+ commits in 2026

Want the number before the call?

Hourly at $36⁠–⁠54/h excl. VAT. The integration usually takes one to three weeks.

See price and start date → Book a free 30‑min call

Good to know

KSeF details that integrations get wrong

Penalties: up to 100 percent of the VAT

The VAT Act sets penalties of up to 100 percent of the VAT on an invoice issued outside KSeF, or 18.7 percent of the gross amount when no VAT is shown, from 1 January 2027 (VAT Act, art. 106ni).

A bill would move penalties to the end of 2027

On 20 October 2026 the government adopted a bill postponing the penalties to the end of 2027. It still has to pass parliament, and KSeF stays mandatory either way (Ministry of Finance).

The KSeF number goes in the transfer title

From 1 January 2027 a VAT‑registered buyer paying a KSeF invoice by bank transfer must give its KSeF number, so your system has to show it to whoever pays (VAT Act, art. 108g, KSeF).

Crossing 10,000 PLN switches you over for good

The monthly 10,000 PLN exemption ends on 31 December 2026. The invoice that crosses it and every later one go through KSeF, even if a later month is lower (KSeF).

Offline invoices carry two QR codes

An offline invoice not yet in KSeF has an “OFFLINE” code and a “CERTYFIKAT” code. The second needs a separate type 2 certificate (KSeF for IT, KSeF certificates).

Certificates last at most 2 years

KSeF certificates are valid for up to 2 years, and the login and offline types are issued separately, so every integration has a renewal date (KSeF certificates).

FAQ

Questions

Since when is KSeF mandatory?
According to the Ministry of Finance, since 1 February 2026 for companies with 2024 sales above PLN 200 million, and since 1 April 2026 for everyone else.
Our accounting app already supports KSeF. Do we need this?
Only if invoices are issued outside it, in your own system. Then that system needs to send them, or hand them to the accounting app reliably.
Do you need access to our production?
Not at first. Everything is built and tested on the KSeF test environment with test data. For production, the certificate or token is issued to your company and stays in your systems, so access ends when you revoke it.
How long does it take?
Usually one to three weeks, depending on the system and the invoice types.
What happens when the schema or the API changes?
That is what the optional monthly care covers: I follow the Ministry changelog, update the integration and test it on the KSeF test environment before production. It is care, not an on‑call SLA; how I work explains why.
What does it cost?
Hourly, 36 to 54 USD excl. VAT, and the integration usually takes one to three weeks. The configurator shows a price range and the start date before we talk, and after the call you get the scope and the price in writing within 24 hours.
Are there KSeF penalties in 2027?
The current law says yes, from 1 January 2027 (VAT Act). A government bill from 20 October 2026 would move them to the end of 2027, and KSeF stays mandatory either way (Ministry of Finance).
What happens to our invoices when KSeF is down?
They are issued offline with two QR codes and sent later: by the next business day in offline24 mode, or within 7 business days after a failure announced by the Ministry (KSeF for IT).
Do invoices for clients outside the EU go through KSeF?
Yes. They are issued in KSeF and then sent to the buyer in an agreed way, for example as a PDF with a QR code (KSeF).
Why does KSeF return 429 when we send invoices?
In KSeF 2.0 an interactive session accepts at most 180 invoice sends an hour per context and IP address; overruns return 429 with Retry-After, and repeated overruns can make the block much longer (KSeF API limits). I send larger volumes in batch mode, put sending behind a queue that honors Retry-After, and when your volume justifies it, prepare the request for higher limits that the Ministry has accepted from integrators since February 2026.

In 30 minutes you will know if we are a fit

You bring the problem, I bring the questions. Want a number first? The configurator shows hours, a price range and the start date.

or write to ciunkos@gmail.com

After you book you get a calendar invite. Nothing else to fill in.

My pledge

  • Reply within 24 hours. I reply within 24 hours on working days, personally, not a bot. Weekend messages: by Monday noon.
  • Late means free. If I am late, the first hour of work is free. You do not have to ask.
  • Scope in writing within 24 hours. A free 30‑minute call with no company deck, then the scope and the price in writing within 24 hours. You decide.
  • The person who does the work. You talk to the person who does the work. No sales layer, no handoff.
  • Follow‑up only with news. I follow up only when I have something new for you. Never a “did you see my offer”.
  • Honest “not a fit”. If I am not the right person, I say so on the call and point you to someone who is.

Calls this week · work can start now · B2B contract · Wrocław, Poland (CET), remote

You own the code, domain and accounts from day one. Nothing is held hostage.