How to Choose KSeF Invoicing Software for a Small Business?

Selecting KSeF invoicing software requires checking automatic FA(3) schema submission, UPO retrieval, and status tracking. From 1 January 2027, the monthly 10,000 PLN sales exemption ends, requiring all businesses to use the system.

9 min read 13 views
How to Choose KSeF Invoicing Software for a Small Business?

Last updated: 9 November 2026

You issue an invoice, click “Send” and see a green tick. But did it actually reach KSeF, Poland's national e-invoicing system? Did it get a KSeF number? Where is the UPO, the official confirmation that the system accepted it? KSeF invoicing software that only exports an XML file leaves those questions to you.

There are fewer than eight weeks until 1 January 2027. From that day the monthly 10,000 PLN exemption no longer applies and KSeF covers everyone: sole proprietorships (JDG in Polish) as well as small Polish subsidiaries of foreign companies. From that day the KSeF number also goes into the payment title of transfers between active VAT payers.

Below: what happens after you send an invoice, six selection criteria, a worked example and a 10-minute checklist.

What happens to an invoice after you click “Send”

A structured invoice is an XML file in the FA(3) schema. Your software sends it to KSeF, and the system checks permissions and whether the file matches the schema. If everything is in order, KSeF accepts the document and assigns it a KSeF number.

According to the Polish Ministry of Finance, the number is assigned automatically once the invoice is accepted, it is returned in the UPO, and it is not part of the XML file. In practice: you cannot type it in yourself, so your software has to fetch it from KSeF and store it with the invoice.

The UPO (Urzędowe Poświadczenie Odbioru, the official confirmation of receipt) is the document KSeF returns after accepting an invoice. It carries the assigned number, so it is your proof that the system took the document. An XML export alone gives you neither.

A KSeF number is 35 characters long (how it is built). Here is an invented example:

1234567890-20270115-ABCDEF123456-9C
  • 1234567890: NIP, the Polish tax ID (usually the seller's)

  • 20270115: date in YYYYMMDD format

  • ABCDEF123456: technical part assigned by the system

  • 9C: checksum

Why a KSeF number and UPO on every invoice matter in 2027

Four reasons these two items should sit next to the invoice, not in a separate portal:

  • Bank transfers. From 1 January 2027, an active VAT payer paying another active VAT payer by transfer must put the KSeF number in the payment title (one invoice) or a collective identifier (several invoices). This also covers split-payment transfers, according to the Ministry (Article 108g of the VAT Act). The duty sits with the payer, but your customer will need that number from you.

  • Proof of acceptance. The UPO shows that KSeF accepted the invoice. Without it you only have your own “I sent it”.

  • JPK_V7. The KSeF number is reported in the JPK_V7 ledger for invoices issued in KSeF (description). If your software did not store it, you hunt for it by hand.

  • Penalties. Under current law, the penalties in Article 106ni of the VAT Act start on 1 January 2027 and can reach 100% of the VAT on the invoice, or 18.7% of the amount due when the invoice carries no VAT.

On 20 October 2026 the government adopted a bill that would move the penalties to 1 January 2028 (Sejm print no. 3245). According to the sources I checked on 9 November 2026, it is still only a bill, and the duty to issue invoices in KSeF stays as it is. Check its status on the Sejm website before relying on it.

This is general information, not tax advice. For your own situation, talk to a Polish tax advisor.

How to choose KSeF invoicing software: 6 criteria

1. Sending to KSeF without uploading files by hand

Check whether the software sends the invoice to KSeF on its own after you issue it. Exporting XML and uploading it in the free government Taxpayer Application (ksef.podatki.gov.pl) works for a handful of invoices a year. At a dozen a month it is a mistake waiting to happen.

2. Status and KSeF number visible on the invoice

The invoice list should tell you whether an invoice is waiting, sent, accepted or rejected. For an accepted one, you should see the KSeF number and be able to copy it in one click. If you have to look it up in another system, the software leaves the job half done.

3. UPO available for every invoice

The UPO should be reachable from the invoice itself, not from a separate portal. Ask how long the software keeps it and whether you can download it on every plan.

4. Clear handling of rejections

KSeF rejects an invoice that fails the permission check or does not match the FA(3) schema. Good software then shows more than an error code: it tells you what to fix. A rejected invoice gets no KSeF number, so as far as the system is concerned it does not exist until you send a correct one.

5. Receiving purchase invoices from KSeF

Since 1 February 2026, every company must be able to receive invoices through KSeF, including those still issuing outside the system. Software that only sends forces you to run a second tool for costs.

6. Pricing without traps

Ask about the monthly document limit on the free plan and what exactly you get on higher plans. Check that the KSeF number and UPO are available on every plan, not just the top one. Also ask how the software connects to KSeF: ideally through a permission you grant yourself and can withdraw at any time.

Example: one invoice from issue to payment

The Polish subsidiary of a foreign group (a sp. z o.o., the Polish limited company) issues an invoice on 15 January 2027 to a Polish company that is an active VAT payer: PLN 10,000 net + 23% VAT = PLN 12,300 gross.

  1. The accountant issues the invoice in the software.

  2. The software sends the FA(3) file to KSeF. The status changes from “queued” to “accepted”.

  3. The invoice now shows the KSeF number, and the UPO can be downloaded.

  4. The customer sees the invoice in KSeF and pays by transfer, putting the KSeF number in the payment title.

  5. When VAT is settled, the same number lands in the JPK_V7 ledger.

If step 2 had ended with “rejected”: no number, no UPO. You fix the error named in the message and send again, keeping an eye on the invoice issue deadline.

How it works in Biurko

I'm a software developer, I run my own JDG (sole proprietorship) and issue my invoices in Biurko, so the criteria above come from my own run-ins with KSeF. Specifically:

  • After you issue an invoice, Biurko sends it to KSeF (FA(3)). You do not export or upload files.

  • On every invoice you see the sending status and, once accepted, the KSeF number and a UPO to download.

  • You connect through a permission that you grant in KSeF and can withdraw yourself at any time, in the KSeF portal or through Profil Zaufany (Poland's trusted-profile login).

  • Biurko also receives purchase invoices from KSeF.

  • The FREE plan includes unlimited sending to KSeF. Paid plans start at PLN 29 net per month; check the pricing page on biurko.io for what exactly each plan includes.

  • The interface is available in Polish, English and Ukrainian.

Biurko also covers the steps after the invoice: VAT registers, JPK_V7M/V7K with submission to the Ministry's gateway and UPO, flat-rate income tax (ryczałt) records and ZUS contributions. It does not keep a KPiR (the simple tax ledger) or full accounting for companies. If you need those, an accountant or another program still does that part.

Checklist: test any invoicing tool in 10 minutes

  • Issue a test invoice and check that the software sends it to KSeF on its own.

  • See whether the invoice shows a sending status and, after acceptance, a KSeF number you can copy.

  • Download the UPO for that invoice from the invoice itself, without logging in to another portal.

  • Check the documentation or ask the vendor how a rejection is shown and whether the message says what to fix.

  • Find out how the software connects to KSeF and whether you can withdraw the permission yourself.

  • Check that it receives purchase invoices from KSeF.

  • Read the pricing: document limit, what each plan includes, KSeF number and UPO on every plan.

Summary

Good KSeF invoicing software does not stop at an XML file. It sends the invoice to KSeF, shows the status, stores the KSeF number and gives you the UPO on the invoice. From 1 January 2027 you will put that number in transfers, and the UPO is your confirmation of acceptance.

Run the checklist on the tool you use today. If you are switching before 1 January 2027, you can try Biurko on the FREE plan: no card, unlimited sending to KSeF. Create an account at biurko.io.

Frequently asked questions

Does invoicing software have to show the KSeF number?

The law puts duties on the taxpayer, not on the software. From 1 January 2027 an active VAT payer paying another active VAT payer by transfer must give the KSeF number in the payment title (Article 108g of the VAT Act). Software that shows the number on the invoice saves you from looking it up in the Taxpayer Application.

What is the UPO in KSeF?

The UPO (Urzędowe Poświadczenie Odbioru) is the official confirmation of receipt that KSeF returns after accepting an invoice. It confirms that the system took the document and carries the KSeF number assigned to it. A rejected invoice gets neither a number nor a UPO, so check that the status says “accepted” first.

Can I still issue invoices outside KSeF after 1 January 2027?

Until 31 December 2026 you could issue invoices outside KSeF if monthly sales on them, VAT included, did not exceed PLN 10,000 (Ministry of Finance, Article 145m). From 1 January 2027 that exception ends, so invoices to businesses go through KSeF. Ask an advisor about consumer invoices.

Is there free invoicing software that sends to KSeF?

Yes. The Ministry of Finance offers a free Taxpayer Application in which you can issue an invoice by hand. Some programs also have free plans, including Biurko (the FREE plan with unlimited sending to KSeF). Before choosing, check the monthly document limit and whether the KSeF number and UPO come with the plan.

What should I do when KSeF rejects an invoice?

A rejected invoice gets no KSeF number, so as far as the system is concerned it has not been issued. KSeF checks permissions and conformity with the FA(3) schema, so start looking there. Fix the data, send the invoice again and watch the statutory issue deadline. If in doubt, ask your accountant.


Tags

#invoicing software
Share

Previous article

How to Choose Invoicing Software for a JDG Before 2027?

Stay in the loop

An email when we publish a new article — and nothing else.

We respect your privacy. Unsubscribe at any time.

Cookies

We use only essential cookies. Visit statistics are kept on our server, with nothing saved on your device. Website Policy