Skip to content
In this article
Error

The invoice did not reach KSeF

The invoice is issued, but the KSeF column shows Rejected or Offline mode. You start with the token and the chosen environment, and finish by retrying the submission.

Are you seeing these symptoms?

  • The **KSeF** column on the invoice list shows **Rejected** or **Offline mode**
  • An invoice sits at **Pending** for more than a quarter of an hour
  • In **KSeF Configuration → System Status** the **Token health** field is red
  • The **Offline queue** field grows with every new invoice
  • The invoice has neither a KSeF number nor a retrieved UPO receipt

Submission to the National e-Invoice System is governed by three things: a valid token, the right environment, and KSeF itself being reachable. Almost every blockage comes down to the first — the KSeF API token is issued for a fixed period and does not renew itself.

You read the invoice state from the KSeF column on the invoice list. The possible values are Pending, Submitted, Accepted, Rejected, Offline mode and Not required. Hover over the marker — the tooltip fills in the rest: for an accepted invoice, the KSeF number and a link to the UPO receipt; for a rejected one, the reason for rejection straight from the Ministry of Finance.

Open the invoice list

How to do it

01

Check the token health

Open KSeF Configuration. The System Status card has four fields: Last successful session, Token health, Offline queue and Environment.

Token health takes three values: Valid, Expiring soon and Expired or invalid. The last of those stops every submission. You generate a new token in the KSeF portal — the app says so directly: "Generate this token in the KSeF portal under API Keys." Paste it into the KSeF API Token field and save. Once a token is stored you see Token is set and a Replace token button.

02

Confirm the environment

The Environment field says where the invoices are going: Sandbox (Test) or Production. The production description leaves no doubt: "Live KSeF. Invoices submitted here are legally binding." An invoice sent to the sandbox does not exist as far as the tax office is concerned, even though in Heltio it looks accepted.

The token is tied to the environment. After switching to production, upload the production token — a sandbox token gives Expired or invalid.

03

Test the connection

The Test Connection button queries KSeF here and now. The answer is either Connection successful. KSeF is reachable. or a connection error carrying the text from the Ministry's gateway. That separates "our token is wrong" from "KSeF is not answering", before you start looking for the fault in a single invoice.

04

Retry the outstanding submissions

Retry failed submissions takes every issued invoice in the Rejected or Offline mode state and queues it for resubmission. It is acknowledged by the message Failed submissions queued for retry.

A single rejected invoice can be retried from its own tooltip, where there is a resend action.

When something does not work

Error

Expired or invalid

What this means: The KSeF API token has expired, or it belongs to a different environment from the one selected.

What to do: Generate a new token in the KSeF portal and paste it into **KSeF API Token**. Check that the token's environment matches the **Environment** field.
Error

Connection failed: {error}

What this means: Heltio received no answer from KSeF. The text in braces comes from the Ministry's gateway, not from us.

What to do: Repeat **Test Connection** in a few minutes. If the error persists, check the KSeF availability announcements — the invoices wait in the queue and are not lost.
Warning

KSeF unavailable at issue time. Retry: {schedule}. Deadline: 7 days.

What this means: The invoice was created while KSeF was not answering, and was saved in offline mode.

What to do: Once connectivity returns, use **Retry failed submissions**. The seven-day deadline runs from the issue date — after it, the invoice needs a correction.
Error

KSeF rejected this invoice. Issue a correction to fix and resubmit.

What this means: The document arrived but did not pass the Ministry's checks — most often because of the buyer's NIP or a duplicated invoice number.

What to do: Open the invoice, read the rejection reason in the tooltip on the KSeF marker, then issue a correcting invoice. A rejected invoice cannot be edited in place.
Info

KSeF not required for this buyer.

What this means: A buyer outside Poland, or a document KSeF does not accept.

What to do: This is not a fault. Pro forma invoices also do not go to KSeF — the app says so when you issue one: “Proforma invoices are not submitted to KSeF. A PDF will be generated.”

Who has access

Clinic Admin

The KSeF Configuration screen is opened only by the clinic owner and administrator. Someone without that permission sees a refusal suggesting they contact the administrator. The invoice list and the submission state are visible to anyone with access to billing.

Related articles

Was this article helpful?

Didn't find an answer? Write to us.

Open the contact form