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.
How to do it
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.
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.
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.
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
Expired or invalid
What this means: The KSeF API token has expired, or it belongs to a different environment from the one selected.
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.
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.
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.
KSeF not required for this buyer.
What this means: A buyer outside Poland, or a document KSeF does not accept.
Who has access
Clinic AdminThe 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
- KSeF configuration — setting the connection up from scratch.
- Invoices and KSeF — issuing, corrections and the incoming-invoice inbox.