KSeFGPT
Get started for free
Guide
July 2, 202612 minRafał Zeidler

How to check invoice status in KSeF after submission?

You sent an invoice to KSeF, but you do not know whether it has been accepted, is still being processed, or was rejected? Check the status, reference number, KSeF number and UPO step by step.

How to check invoice status in KSeF after submission?

Article Summary

Invoice status in KSeF shows whether a document is still being processed, has ended successfully, or needs error diagnostics. The fact that an invoice was submitted is not enough to treat it as accepted.

Statuses 100 and 150 are transitional states, 200 means invoice success, and error statuses require reading the details before any resubmission. Do not confuse a technically successful HTTP response with the invoice status stored in the document status field.

Session status, invoice reference number, KSeF number and UPO are different parts of the same process. Only their combination tells you whether to wait, download confirmation or diagnose rejection.

Invoice status in KSeF in one sentence

After sending XML, check the status of the same invoice or session, do not automatically submit a second version, save the KSeF number and UPO when the invoice succeeds, and read the error code, description and response details before making the next decision.

The invoice was sent to KSeF, but you do not know whether it has already been accepted, is still being processed or was rejected. This guide walks through the decisions after submission, from transitional status to KSeF number, UPO or error diagnostics.

What to check immediately after submission

After submission, there should be both a technical and business trace. If you only have a general sent message, you do not yet have full control over the process.

The minimum data set is the session reference number, invoice reference number, the seller invoice number from the invoice number field, seller tax ID, submission date, status, possible KSeF number and UPO information. These elements let you return to the same operation instead of guessing whether the document needs to be sent again.

ElementWhat it meansWhat it is used forWhat not to confuse it with
Session reference numberIdentifier of the technical sending sessionLets you check the session and invoice status in that sessionIt is not the KSeF number
Invoice reference numberIdentifier of the document inside the sessionLets you check the status of a specific invoiceIt is not the seller invoice number
Seller invoice numberInvoice number from the seller systemHelps find the document in accountingIt does not confirm acceptance by KSeF
Seller tax IDTaxpayer context in which the document was sentHelps avoid checking the wrong entityIt does not replace permissions
Invoice statusState of a specific documentDecides whether to wait, download UPO or diagnose an errorIt is not an HTTP status
KSeF numberIdentifier of an accepted invoiceConfirms that the document entered circulation in KSeFIt is not entered into XML before submission
UPOOfficial receipt confirmationDocuments acceptance of the invoice or sessionIt is not generated for a rejected invoice

Invoice status, session status and reference number

Session status describes the state of the sending container. Invoice status describes a specific document inside that session. A reference number lets you return to the technical operation, but it is not the KSeF number.

In an interactive session, you can track a single document sent within the session. In a batch session or when multiple invoices are involved, you also need to check how many documents were processed correctly, how many were rejected and what statuses individual invoices have.

The KSeF number appears only after the invoice has been accepted. If you only see a reference number, you are still tracking the operation, not confirming document acceptance.

ConceptScopeMost important decision
Session statusWhole session or sending packageWhether the session is still running, has been processed or needs diagnostics
Invoice statusOne document in the sessionWhether the invoice is waiting, has succeeded or has an error
Reference numberTechnical operationWhich session or invoice to query again
KSeF numberInvoice accepted by the systemWhich identifier to save in records and link to UPO
UPOAcceptance confirmationWhat to save after invoice or session success

Invoice status codes and the next step

The key rule after submission is simple: monitor a transitional status, archive a success and diagnose an error. There is no single button or single code that replaces checking invoice status.

The table below is a practical decision map. It does not replace the full API documentation, but it helps avoid the most common mistakes after XML submission.

StatusWhat it meansWhat to doWhat not to do
100Invoice accepted for further processingKeep monitoring the same invoice or sessionDo not immediately submit a second version
150Processing is in progressWait for the final result and refresh status in the same traceDo not look for UPO as final confirmation yet
200Invoice successSave the KSeF number, acceptance date and UPODo not confuse it with a technically successful HTTP response
405Processing cancelled because of a session errorCheck the description and details, including session contextDo not reduce diagnostics to the code alone
410Problem with permissions or access scopeCheck tax ID, entity, session and issuing permissionDo not correct XML if the problem is access
415Invoice with attachment cannot be sentRead the response details and metadataDo not assume that the invoice was accepted
430Invoice file verification errorCheck XML, structure, schema and required dataDo not look for UPO for a rejected file
435File decryption errorCheck encryption, metadata and file preparation methodDo not retry without checking configuration
440Duplicate invoiceCheck the original session reference number and original KSeF number if they were returnedDo not change the invoice number only to bypass the error
450Document semantics errorCheck the meaning of the data and dependencies indicated in the detailsDo not limit checking to XSD only
500 or 550Unknown error or operation cancelled by the systemKeep identifiers and establish the state of the previous operationDo not retry automatically without checking whether success already occurred

When to wait and when to react

If the invoice status is 100 or 150, the basic reaction is to continue monitoring the same submission. Do not internally publish that the invoice has already been accepted, but do not automatically treat it as rejected either.

If the invoice status is 200, move to the KSeF number, acceptance date and UPO. This is the stage of organizing confirmations, not looking for the cause of an error.

If the status indicates an error, you are not looking for UPO. You read the code, description, details and possible duplicate data. Only then decide whether to correct data, fix permissions, find the original submission or repeat the technical operation.

Does session status 200 mean every invoice succeeded?

Do not treat session status as automatic confirmation that every document succeeded. Sessions and invoices have separate control levels. Especially with packages, you need to check counters for correctly and incorrectly processed invoices and the list of documents in the session.

In practice, it is not enough to check whether the session is processed. You need to determine which invoices in that session succeeded, which have errors and which identifiers must be saved. This protects you from a situation where the package looks handled, but a single invoice still needs correction.

What to check in the sessionWhy it mattersTypical mistake
Session statusShows the state of the sending containerTreating it as the status of every invoice
Correct invoice counterShows how many documents were processed correctlyNot comparing it with the number of submitted invoices
Incorrect invoice counterShows how many documents have an errorIgnoring rejected invoices in the package
Invoice list in the sessionLets you check the status and identifiers of each invoiceArchiving only session data
Rejected invoice listContains error details for invalid documentsResubmitting the whole package instead of diagnosing specific items

Missing UPO with invoice status

Missing UPO is not a diagnosis on its own. For statuses 100 and 150, UPO is not yet the target point because the invoice still has no final result.

For status 200, check the KSeF number, generated UPO download link, link expiry time and the tool through which the document was submitted. The UPO download link is part of the status response and may require querying the status again if the link has expired.

If the problem is missing visible confirmation, go to the guide Missing UPO in KSeF. This article focuses on status after submission, not the full UPO recovery procedure.

Error status and resubmission

Resubmission makes sense only after establishing what happened to the previous operation. If you do not know whether the document already received a KSeF number or whether the API indicated a duplicate, a second submission can only make the event trace harder to interpret.

For status 440, first find the original session and original KSeF number if they were returned. For XML, semantics or permission errors, fix the source of the problem, not only the final file.

The detailed diagnostic procedure is covered in Invoice rejected by KSeF.

How to check status in an app or accounting system

In a user workflow, start with the right entity. Select the correct seller tax ID or company context, because a status read in the wrong entity will not explain the real submission.

Then find the invoice by seller invoice number, date, counterparty, reference number or KSeF number if it has already been assigned. Check the document status, not only the status of the last action in the interface.

If the invoice succeeded, save the KSeF number and download UPO in the tool that handled the submission. If the status indicates an error, read the details. Button names are not listed here as definitive because application interfaces and manuals can change.

How to check status through the KSeF API

In an API integration, status is checked in stages. First you establish the session, then the documents in the session, and only after a specific invoice succeeds do you move to UPO. UPO does not replace status. It is the next step after confirmed success.

Typical control paths include the session list, details of a specific session, invoice list in a session, details of a specific invoice and rejected invoice list.

The integration should save at least the session reference number, invoice reference number, status, KSeF number, acceptance date, errors and UPO information. Without this data, later handling of complaints, duplicates or missing confirmation becomes manual.

How KSeFGPT organizes statuses after submission

In KSeFGPT, post-submission status is meant to be readable for someone who does not want to analyze a raw API response. After handling submission, the app helps you see whether the document was passed to KSeF, what status it has, whether a KSeF number appeared and whether UPO is available for the handled document.

This distinction matters: KSeFGPT organizes statuses and confirmations for invoices sent through the app. Do not assume that the tool will retrieve UPO for every invoice that was previously sent by another ERP or another integration. In that case, look for confirmation in the system that performed the submission, in the KSeF Taxpayer Application or in your own API integration.

In practice, this means one work trace: invoice, status, KSeF number and confirmation are linked in the same context. That makes it easier to distinguish a processed document from an accepted one, and an error from a missing visible UPO.

KSeFGPT view after sending an invoice to KSeF with status and KSeF number

Check invoice status in one place

KSeFGPT helps send an invoice to KSeF, monitor status, save the KSeF number and handle UPO for documents sent through the app.

Go to KSeFGPT

Most common mistakes when checking status

The most common errors do not come from one difficult code. They come from mixing layers: HTTP, session, invoice, reference number, KSeF number and UPO.

MistakeWhy it is riskyHow to handle it correctly
Confusing a technically successful HTTP response with invoice status 200The endpoint may have responded correctly, while the invoice may still be processingRead the invoice status field
Confusing the reference number with the KSeF numberThe reference number does not confirm document acceptanceWait for the KSeF number after invoice success
Resubmitting at status 100 or 150It may lead to a duplicate or create chaos in the operation traceMonitor the same submission
Treating session status as the status of every invoiceA package may contain both correct and incorrect documentsCheck the invoice list and counters
Looking for UPO for a rejected invoiceUPO is not generated for a document that was not acceptedDiagnose the error code
Ignoring the incorrect invoice counterYou may miss invoices that require correctionCompare counters with the document list
Copying status from the wrong tax ID contextA status from another context does not apply to this submissionCheck the entity and permissions

Frequently Asked Questions

What does status 100 mean in KSeF?

Status 100 means that the invoice has been accepted for further processing. It is not final success and it is not rejection. Continue monitoring the same invoice or session instead of submitting the document again.

What does status 150 mean in KSeF?

Status 150 means that processing is still in progress. At this stage, do not look for UPO as final confirmation yet and do not assume that the document was rejected.

Does invoice status 200 mean that I have a KSeF number?

Invoice status 200 means that invoice processing succeeded. Then check the KSeF number, acceptance date and UPO path. Do not confuse it with a technically successful HTTP response from an endpoint.

Does session status 200 mean that all invoices succeeded?

Do not simplify it that way. Session status must be read together with the invoice list, document statuses and counters for correctly and incorrectly processed invoices. When multiple invoices are involved, check each document separately.

Does missing UPO mean rejection?

Not always. Missing UPO can mean processing is still ongoing, the wrong seller tax ID context, an expired link, checking the wrong session, a tool limitation or rejection. First check the status and KSeF number.

Is the reference number the same as the KSeF number?

No. The reference number identifies a technical operation, session or invoice inside a session. The KSeF number identifies an invoice accepted by the system and appears only after document success.

Can I submit the invoice again when the status does not change?

Do not automatically send a second version only because the status remains transitional. First check the same session, the same invoice, the reference number and any duplicate details.

How do I check rejected invoices in a session?

In an API integration, check the invoice list in the session and the rejected invoices endpoint. In a user application, look for the error view, document status and response details, not only the message shown after clicking submit.

Recommendation

After sending an invoice to KSeF, work in a fixed sequence: check status, check identifiers, decide whether to wait, download UPO or diagnose an error. Do not start with resubmission and do not archive only the reference number as proof of acceptance.

If you need the full process, start with Sending invoices to KSeF. After success status, go to UPO in KSeF. When confirmation is not visible, use the guide Missing UPO in KSeF. For a document error, go to Invoice rejected by KSeF.

Monitor KSeF invoice submission in KSeFGPT

Send an invoice to KSeF, check its status, save the KSeF number and handle UPO for documents sent through the app.

Go to KSeFGPT

Sources

This article was prepared based on official materials from the Ministry of Finance, CIRF documentation and KSeF API 2.0 documentation, verified on July 2, 2026.

  1. KSeF API 2.0

    Ministry of Finance · accessed: July 2, 2026

    Documentation of invoice and session statuses, UPO download links, session counters and status-checking endpoints.

  2. KSeF API 2.0 - test environment

    Ministry of Finance · accessed: July 2, 2026

    Test OpenAPI documentation used to verify integration endpoints and statuses.

  3. CIRFMF/ksef-api

    CIRF / Ministry of Finance · accessed: July 2, 2026

    Official technical documentation repository for KSeF API 2.0 for integrators.

  4. Session: status check and UPO download

    CIRF / Ministry of Finance · accessed: July 2, 2026

    Description of checking session status, invoice list in a session, rejected invoices and downloading invoice and session UPO.

  5. Interactive session

    CIRF / Ministry of Finance · accessed: July 2, 2026

    Description of invoice submission in an interactive session, asynchronous verification and document reference number.

  6. Batch session

    CIRF / Ministry of Finance · accessed: July 2, 2026

    Description of sending multiple invoices in a ZIP file and using the batch session reference number.

  7. KSeF number and collective identifier

    Ministry of Finance · accessed: July 2, 2026

    Official explanation of the KSeF number, its assignment after invoice acceptance and its return in UPO.

  8. KSeF number

    CIRF / Ministry of Finance · accessed: July 2, 2026

    Technical description of the KSeF number structure and its role as an identifier of an accepted invoice.

  9. Invoice verification

    CIRF / Ministry of Finance · accessed: July 2, 2026

    Description of technical and semantic invoice checks and duplicate rules.

  10. Technical KSeF topics

    Ministry of Finance · accessed: July 2, 2026

    Technical FAQ about KSeF, including practical topics related to UPO.

Related articles