Back to blog

How to send an invoice to KSeF — step by step

Published on August 23, 20264 min read
This walkthrough is about Poland. KSeF is the Polish national e-invoicing system, and these steps apply to businesses registered for tax in Poland.

This is a hands-on walkthrough — no theory, just the steps. It shows how to send an invoice to KSeF with Invoice.app: setting up the connection, creating and sending the invoice, checking its status and downloading the UPO. For background on KSeF itself — what it is, who it applies to, how to generate a token — start with our complete KSeF guide.

What you need to start

Before you begin, make sure you have:

Step 1 — set up the KSeF connection

Open your company settings in Invoice.app and go to the KSeF section. Paste the token you generated in the Taxpayer Application and save.

The app verifies the connection automatically — it checks that the token is valid and carries the right permissions. If all is well, you see a confirmation.

After the first connection Invoice.app syncs the last 30 days of invoices, both issued and received, so you have the full set straight away.

Setting up the KSeF connection in Invoice.app

Step 2 — create the invoice

Creating an invoice works as usual. Fill in the client details, line items, VAT rates and payment terms. A few things matter for KSeF:

  • The client's NIP — required for business clients (B2B). For private individuals (B2C) it is not, and Invoice.app marks the invoice in KSeF as issued to a party without a tax identifier.
  • Invoice type — pick the right one from the selector: VAT, corrective, advance and settlement invoices, plus corrections to advance and settlement invoices. When issuing a correction, choose the original invoice from the list and give the reason.

Step 3 — send the invoice to KSeF

After saving, open the invoice detail view and press "Send to KSeF". A confirmation dialog appears — check the details and confirm.

Before sending, Invoice.app validates the invoice against the KSeF FA(3) schema. If anything is missing or malformed you get a list of errors to fix. The usual causes:

  • An invalid client NIP format
  • Required fields left empty, such as an item name or a VAT rate
  • A VAT rate that does not fit the transaction type

Once the errors are fixed, send again. When validation passes, the invoice goes to KSeF and its status changes to "Pending".

Step 4 — check the invoice status

After sending, Invoice.app polls KSeF for the status every few seconds. You do not have to do anything — just watch the status on the invoice detail screen.

Invoice statuses in KSeF:

  • Not submitted — the invoice exists but has not been sent to KSeF yet.
  • Pending — sent, waiting for KSeF to validate it.
  • Accepted — KSeF accepted the invoice. It receives an official KSeF reference number and a QR code. From this point the client sees it in their own system.
  • Rejected — KSeF found errors. Read the message, correct the data and send again.
  • Error — something went wrong in transmission, such as a connection failure. You can retry without editing the document.
KSeF invoice statuses in Invoice.app

Step 5 — download the UPO

The UPO (Urzędowe Poświadczenie Odbioru) is the official confirmation that KSeF accepted your invoice. It matters for tax purposes: it is the proof that the invoice was properly filed.

The UPO becomes available once KSeF accepts the invoice. To get it, open the invoice details → the KSeF section → "Download UPO". You can choose the format:

  • PDF — a readable rendering, good for archiving or sending to the client.
  • XML — a structured file you can import into other accounting software.

You can share or save the downloaded document through the system share sheet — AirDrop, email, files.

To send the client a PDF with the QR code, use "Send to client". That is particularly useful for foreign counterparties and for consumers (B2C), who have no access to KSeF.

Downloading the UPO from the KSeF section in Invoice.app

Common problems and how to solve them

  • Validation errors (invalid NIP, missing fields) — correct the invoice and send again. Invoice.app points at exactly which fields need attention.
  • The token expired or has the wrong permissions — generate a new one in the KSeF Taxpayer Application. Remember to tick both permissions: issuing and viewing.
  • KSeF rejected the invoice — read the error message in the invoice details. The usual causes are a NIP that does not match the VAT register, a malformed XML structure, or exceeding API limits.
  • Editing a sent invoice — invoices accepted by KSeF are immutable. The only way to correct one is to issue a corrective invoice.

Syncing purchase invoices

Invoice.app does not only send: it also downloads invoices from KSeF automatically. In the sync section pick a date range and start the import — the app fetches every purchase invoice issued to your NIP.

The KSeF sync screen in Invoice.app

In summary

Sending an invoice to KSeF with Invoice.app is five steps:

  1. Set up the connection — paste the KSeF token into the company settings.
  2. Create the invoice — fill in the details and pick the invoice type.
  3. Send it to KSeF — confirm, then wait for validation.
  4. Check the status — watch the automatic updates.
  5. Download the UPO — keep the confirmation for tax purposes.

The whole thing takes a couple of minutes. For more on what KSeF is and who it applies to, read our complete KSeF guide for small businesses. For the integration details, see the KSeF feature page.

Frequently asked questions

Paste the KSeF token into your company settings in Invoice.app, create an invoice with a valid buyer NIP, then press “Send to KSeF” in the invoice detail view. The app validates the document and submits it to KSeF.

Sending itself takes a few seconds. Validation on the KSeF side usually takes anywhere from a few seconds to a few minutes. Invoice.app checks the status automatically every few seconds and tells you the outcome.

The UPO (Urzędowe Poświadczenie Odbioru) is the official confirmation that KSeF accepted the invoice. It is the proof that the document was properly filed, and it is available to download as PDF or XML once the invoice is accepted.

Read the error message in the invoice details in Invoice.app. The usual causes are an invalid buyer NIP, missing required fields or a wrong VAT rate. Correct the data and send the invoice again.

Ready to get started with KSeF?

Download Invoice.app and start submitting e-invoices to Poland's National e-Invoicing System today.

Download on the App StoreGet it on Google PlayOpen the web app