KSeF status and error codes explained
When Poland's national e-invoicing system KSeF does not accept an invoice, it gives the invoice a status code, such as 440 or 450, or answers the request with an error code, such as 21405. Find your code below to see what it means, the usual cause and what to change before you send the invoice again.
In short
What KSeF status and error codes such as 440, 450 or 21405 mean, why Poland's e-invoicing system did not accept the invoice and what to change.
This list covers 32 codes from the official documents below. 5 have their own page; 27 are explained in the table only, as they are system or transport statuses with no fix in the invoice.
Not covered: 21111, 21115, 21117, 21217, 21301, 21304, 21308, 21401, 21406, 9101, 9102, 9103, 9105, 21164, 21165, 21175, 21181, 21182, 21183, 21418, 25001, 25002, 25003, 25004, 25005, 25006, 25007, 25008, 25009, 25010, 25011, 26001, 26002, 30001, 71001, 71002, 71004, 71005, which concern a process other than sending an invoice.
Invoice status codes
| Code | What it means |
|---|---|
| 405 | Processing cancelled because of a session error KSeF invoice status 405 means processing of the invoice was cancelled because of an error in the session it was sent in. Fix what the session status points to, then send the invoice again in a new session. |
| 410 | No permission to issue this invoice |
| 415 | Invoice with an attachment not accepted |
| 430 | Invoice file failed verification |
| 435 | Invoice file could not be decrypted KSeF invoice status 435 means KSeF could not decrypt the invoice file. Ask your software provider to check the encryption, then send the invoice again. |
| 440 | Duplicate invoice |
| 450 | Invoice content failed the semantic checks |
| 500 | Unknown error KSeF status 500 means an unknown error occurred while KSeF processed the invoice or the session. Check the status again later. If it stays at 500, contact KSeF support with the reference number before deciding whether to send the invoice again. |
| 550 | Operation cancelled by the system KSeF status 550 means the system cancelled the operation. Try again, as the KSeF documentation advises. |
Session status codes
| Code | What it means |
|---|---|
| 405 | Batch package failed verification KSeF session status 405 means the elements of the batch package failed KSeF's verification. Ask your software provider to check how the package is built and declared, then send it in a new batch session. |
| 415 | Session key could not be decrypted KSeF session status 415 means KSeF could not decrypt the supplied key. Ask your software provider to check the key encryption and the public key it uses, then open a new session and send the invoices again. |
| 420 | Too many invoices in the session KSeF session status 420 means the session exceeded its limit of invoices. Split the invoices across several sessions and send them again. |
| 430 | Batch archive could not be decompressed KSeF session status 430 means KSeF could not decompress the original ZIP archive of the batch. Ask your software provider to rebuild the package, then send it in a new batch session. |
| 435 | Archive parts could not be decrypted KSeF session status 435 means KSeF could not decrypt the encrypted parts of the batch archive. Ask your software provider to check the encryption of the parts, then send the package in a new batch session. |
| 440 | Session cancelled KSeF session status 440 means the session was cancelled. Open a new session and send the invoices within the time allowed. |
| 445 | No valid invoices in the session KSeF session status 445 means verification found no valid invoice in the session. Correct any reported invoice errors, check that valid invoices are included, and send the invoices again. |
Error codes when sending
| Code | What it means |
|---|---|
| 21001 | Unreadable content KSeF error 21001 means KSeF could not read the content of the request. Ask your software provider to check the request against the details, then send it again. |
| 21155 | Too many invoices in the session KSeF error 21155 means the session has reached the number of invoices it allows. Close the session and send the remaining invoices in a new one. |
| 21157 | Wrong size of a package part KSeF error 21157 means the size of a part of the batch package is not valid. Rebuild the package so each part is within the limit and matches its declared size, then send it in a new batch session. |
| 21161 | Too many package parts KSeF error 21161 means the batch package has more parts than KSeF allows. Split the invoices across several batch sessions and send them again. |
| 21166 | Technical correction not available KSeF error 21166 means a technical correction cannot be sent, because the invoice already has a technical correction that KSeF processed correctly. Check the status of the earlier technical correction instead of sending another. |
| 21167 | Invoice status does not allow a technical correction KSeF error 21167 means a technical correction was sent for an invoice that KSeF processed correctly. Check that hashOfCorrectedInvoice gives the hash of the rejected offline invoice, not of an accepted one. |
| 21173 | Session not found KSeF error 21173 means no session exists with the reference number given. Use the correct session reference number and send the request again. |
| 21178 | UPO not found KSeF error 21178 means KSeF found no UPO, the official receipt, for the criteria given. Correct the numbers and ask for the UPO again. |
| 21180 | Session status does not allow the operation KSeF error 21180 means the status of the session does not allow the operation, such as sending invoices or closing it. Check the session status, and open a new session to send further invoices. |
| 21184 | Session temporarily unavailable KSeF error 21184 means the session is temporarily unavailable because of maintenance work. Try again later, or open a new session to send further invoices, as the details advise. |
| 21205 | Empty package KSeF error 21205 means the package cannot be empty: a declared part was not sent. Send the missing part identified in the details and check that every declared part has been sent. |
| 21208 | Time for sending ran out KSeF error 21208 means the time allowed for the upload or finish requests ran out, and the session was cancelled. Open a new batch session and send the parts within the time allowed. |
| 21402 | Wrong file size KSeF error 21402 means the length of the content sent does not match the declared file size. Ask your software provider to check that the declared size is that of the file sent, then send it again. |
| 21403 | Wrong file hash KSeF error 21403 means the hash of the content sent does not match the declared hash of the file. Ask your software provider to check that the declared hash is computed from the file sent, then send it again. |
| 21405 | Input data failed validation KSeF error 21405 means the data in the request failed validation. Correct what the details name and send the request again. |
| 21470 | Unknown or withdrawn key KSeF error 21470 means the key identifier sent is unknown or points to a withdrawn key. Ask your software provider to use a supported key identifier, then send the request again. |
Read the official document
- KSeF API 2.0, specyfikacja OpenAPI (open-api.json) Source: KSeF API 2.0, specyfikacja OpenAPI (open-api.json), version 2.9.0, published by Ministerstwo Finansów, read on 8 November 2026. Official text in its original language, from Ministerstwo Finansów, KSeF 2.0 Przewodnik dla Integratorów (github.com/CIRFMF/ksef-api), Copyright (c) 2025 Ministerstwo Finansów, under MIT License.
- Weryfikacja faktury Source: Weryfikacja faktury, version 09.04.2026, published by Ministerstwo Finansów, read on 8 November 2026. Official text in its original language, from Ministerstwo Finansów, KSeF 2.0 Przewodnik dla Integratorów (github.com/CIRFMF/ksef-api), Copyright (c) 2025 Ministerstwo Finansów, under MIT License.
Frequently asked questions
Where do I see the KSeF status of an invoice?
Your invoicing program reads it from KSeF after sending: each invoice in a session gets a status code, a description and, where KSeF gives them, details. Status 200 means success, and 100 and 150 mean KSeF is still processing the invoice.
Why does the same number appear twice?
KSeF uses the same numbers for the status of an invoice and the status of a session, with different meanings. For an invoice 440 means a duplicate; for a session it means the session was cancelled. Check which of the two your program shows.
Which codes are not listed?
Statuses that report progress or success, and the error codes for signing in, certificates, tokens, permissions and downloading invoices, which concern a process other than sending an invoice.
Where do the codes come from?
From the Ministry of Finance's KSeF 2.0 API documentation, published under the MIT licence. Each code page quotes the official Polish text and links to the source.