Your first KSeF invoice step by step: from account to KSeF number and UPO
The whole path to a first KSeF invoice in Biurko: company from GUS, KSeF connection, counterparty, issue, send, KSeF number and UPO. With a clear line between what to practise on the demo and what is already a real invoice.

Most write-ups of invoicing software stop exactly where the hard part starts — at a clean form and a button labelled “Issue”. Whether the document actually exists in the eyes of the Polish tax administration (accepted by the gateway, assigned a KSeF number, confirmed by a UPO) is left out.
So here is the whole path, step by step: account and company, KSeF connection, counterparty, line item, issue, send, KSeF number, UPO. It describes how Biurko works today (as of 8 October 2026).
Why the hurry? Under the current act KSeF has applied since 1 February 2026 to taxpayers with 2024 VAT sales above PLN 200 million, since 1 April 2026 to other taxpayers, and to the smallest ones from 1 January 2027. Until 31 December 2026, taxpayers whose monthly gross value of B2B invoices subject to KSeF does not exceed PLN 10,000 may issue outside KSeF. Invoices to consumers, receipts with a tax ID and simplified invoices up to PLN 450 do not count towards the limit, nor does till sales. Exceeding the limit is irreversible: from the invoice that crosses it, you issue in KSeF. Under the current act, penalties under Article 106ni of the VAT Act apply from 1 January 2027. On 16 September 2026 the Ministry of Finance announced it will move them to 1 January 2028; that is a bill not yet passed, and it moves only the penalties, not the obligation to use KSeF. The rules are described on the Ministry of Finance portal.
Before you start: where to practise and where to issue for real
To practise without legal effect, use the Biurko demo (demo.biurko.io, 7-day access, the KSeF demo environment). An account on app.biurko.io sends invoices to production KSeF, so every invoice you send there is real. There is no “test / production” switch inside the account: the environment is set by the address you work at. The Ministry of Finance also runs its own KSeF environments for practice — separate services, unrelated to a Biurko account. For an overview, see KSeF environments: where to practise.
The path at a glance
| Step | Where in Biurko | What happens |
|---|---|---|
| 1. Account and company | Sign-up (“Create an account”) | Email, password and company details. You enter the NIP and the GUS lookup fills in name and address (check them — GUS data can be out of date). No card: every new company gets 14 days of the TEAM plan, then moves to the free FREE plan. |
| 2. KSeF connection | KSeF → Connections → “Add connection” | You pick a method (Profil Zaufany or your own KSeF certificate), Biurko verifies the connection and shows “Connected!”. |
| 3. Counterparty | Invoices → Contractors, or pick one in the invoice form | NIP again, data from GUS; Biurko also checks the counterparty’s VAT status in the VAT taxpayer register. |
| 4. Line items | Invoices → “New Invoice”, “Add Line” | Name, quantity, net price, VAT rate and, where needed, a GTU code. The invoice is saved as a draft. |
| 5. Issue | “Issue” | After you confirm, the invoice gets a number from the numbering template. This cannot be undone. |
| 6. Send | “Send to KSeF” | Before connecting to KSeF, Biurko checks the document against the FA(3) schema. The status moves from “Queued” through “Sending” and “Processing” to “Accepted”; KSeF usually answers in 30–90 seconds. |
| 7. KSeF number and UPO | The “KSeF · Document status” card | A 35-character KSeF number comes back; you download the UPO with “Download UPO”. |
| 8. PDF and email | “Download PDF”, “Send by email” | A visualisation with a QR code (KOD I) and the KSeF number; you can email it to the client. |
The proportions are the point. Writing the invoice itself — counterparty, line, amount — is a handful of fields. Everything else is one-time setup of the company and the KSeF connection that you do not repeat for later invoices. I give no timings for individual steps: they depend on whether you already hold KSeF permissions and how fast the gateway answers.
The KSeF connection — the step that needs attention
There are three ways to connect:
Profil Zaufany — the default method.
Your own KSeF certificate — .crt, .pem or .p12 files with a key.
A certificate ordered by Biurko from the Ministry of Finance — type Authentication, and for offline QR codes, type Offline.
With Profil Zaufany you enter the company NIP, download an XML file, sign it in the gov.pl signer (logging in through your bank, mObywatel or ePUAP) and upload the signed file back. The time to sign is limited — when the challenge expires, you start again. A session opened this way does not renew itself: when it ends, you have to sign the XML again. For steady, automatic operation, order a KSeF certificate in Biurko — after the first connection with Profil Zaufany — and use it to connect.
Biurko does not support tokens as a way to connect. Under the current rules KSeF tokens expire on 31 December 2026. At consultations on 9 June 2026 the Ministry of Finance proposed keeping them, but no regulation has been adopted yet, so moving to a KSeF certificate is the safer choice. More on that choice: KSeF certificate or token.
Once connected, Biurko logs in to KSeF in the context of your NIP and acts within the permissions of the person or certificate you used. You can grant and revoke KSeF permissions for staff and your accountant straight from Biurko (KSeF → Permissions), not only in the Taxpayer Application.
Three places where this process breaks
1. No KSeF permissions. The most common cause of “the integration doesn’t work”. Software cannot grant itself permissions — the taxpayer does that on their side. The owner of a sole proprietorship holds owner permissions by virtue of the NIP–PESEL link, so they usually connect with Profil Zaufany without extra forms. A ZAW-FA notification to the tax office is needed in special cases, for example when you log in with a qualified signature of a person without NIP and PESEL, or on behalf of a company with no permissions granted yet.
2. Rejection on the schema side. An invoice that is correct “in human terms” can be invalid against FA(3): a missing required node, a wrong combination of rate and exemption basis, a foreign counterparty without the right identifier. That is why the check before sending makes sense — the message in Biurko says more than the bare error code from the gateway. An invoice rejected by KSeF is not issued: fix the indicated fields and send it again.
3. Treating the PDF as the invoice. A PDF sent by email is not the structured invoice, only its visualisation. In online mode, the KSeF number together with the UPO confirms that the document was accepted — a client who got only the PDF holds a picture of an invoice that lives in KSeF.
Checklist: reproduce this on your own tax ID
Check whether anyone at your company holds KSeF permissions. If it is a company, or someone else is to have access, sort that out before you configure the connection.
Practise first on the Biurko demo (demo.biurko.io). Issue three documents: a standard invoice, a correction and an advance invoice.
Confirm you receive both the KSeF number and the UPO — and that you can still find them two weeks later.
Review the numbering template for January; if you are moving from another program, set a starting number to keep the numbering continuous.
On an app.biurko.io account, issue your first real invoice well ahead of time rather than in the last week before your deadline — every invoice sent from that account is real.
Decide what you do during a gateway outage. After three gateway errors within 60 seconds Biurko routes new submissions to offline24 mode and resends them automatically every 5 minutes; the offline24 deadline is the next business day.
Summary
The first KSeF invoice is not one click but a path: company, connection, document, submission, KSeF number and UPO. Everything else — corrections, advances, purchase-invoice import, VAT registers — starts after that point, and nothing starts before it.
To walk the same path on your own tax ID: create an account at biurko.io — every new company gets 14 days of the TEAM plan with no card. To practise without legal effect, request demo access (the form on biurko.io).
FAQ
How long does the first KSeF invoice take? Most of the time goes on the one-time setup of the company and the KSeF connection. For later invoices what remains is picking a counterparty, the lines and sending, and KSeF usually answers in 30–90 seconds. Administrative time (obtaining permissions, if you lack them) is separate and can be measured in days.
What is a KSeF number and where does it come from? A 35-character identifier assigned by the system once a document is accepted; it contains the seller’s tax ID, the date, a document identifier and a checksum. You never assign it yourself — it comes back from the gateway after submission. Biurko prints it on the invoice PDF and under the QR code.
Do I need the UPO if I already have the KSeF number? Yes. The number identifies the invoice; the UPO (Urzędowe Poświadczenie Odbioru, the official confirmation of receipt) certifies that it was submitted and when. They are two different pieces of evidence, and keeping both is sensible. Biurko fetches the UPO automatically, and on the invoice you can download it as an XML file.
Can I test KSeF without risk? Yes. Use the Biurko demo (demo.biurko.io, 7-day access, the KSeF demo environment) or the Ministry of Finance’s own test environments. An account on app.biurko.io sends invoices to production KSeF, so whatever you send there is real.
Is emailing a PDF enough for the client? It doesn’t replace the invoice. The legal document is the structured invoice inside KSeF; the PDF is a visualisation you send for the recipient’s convenience, not instead of the e-invoice.
Tags
Previous article
How will the 2027 minimum wage affect your ZUS in Poland?
Next article
What actually changes in KSeF from 1 January 2027?