🇵🇱Poland E-Invoice Errors
Polish KSeF validation errors (BR-PL-xx codes) for Poland's upcoming mandatory B2B e-invoicing via KSeF.
31 errors documented
KSEF-440ksefbusinessBLOCKEDKSeF Duplicate Invoice Rejection (HTTP 440)
The KSeF system rejected your invoice because it detected a duplicate submission. KSeF checks the combination of seller NIP, invoice number, and invoice date against all invoices submitted in the last 10 years. If a match is found, the API returns HTTP status 440 and the invoice is not accepted.
PL-02CIUS-PL (Poland)countryBLOCKEDPolish invoices should be prepared for KSeF
Polish invoices should be prepared for KSeF. This validation rule ensures Invoice compliance with CIUS-PL (Poland).
KSEF-010KSeFcountryBLOCKEDKSeF XML schema validation failed
Invoice XML must conform exactly to the FA schema version (FA/1 or FA/2). Even minor deviations cause rejection.
PL-R-003ubl-2.1countryBLOCKEDKSeF submission required
Polish invoices must be submitted to KSeF (Krajowy System e-Faktur).
KSEF-009KSeFcountryBLOCKEDBank account not on VAT white list
For split payment (podzielona płatność) invoices, the seller bank account must be registered on the VAT white list (biała lista VAT).
PL-R-004ubl-2.1countryBLOCKEDKSeF session token invalid
KSeF API requires valid authentication token.
PL-R-006ubl-2.1countryBLOCKEDCurrency must be PLN for KSeF
Invoices to Polish KSeF typically require PLN amounts.
KSEF-007KSeFcountryAUTO-FIXKSeF date format invalid — wrong date or timestamp serialisation
KSEF-007 is raised when a date or timestamp in an FA(2)/FA(3) e-invoice does not match the format the KSeF (Krajowy System e-Faktur) XSD requires. The Polish schema uses two different date types: plain calendar dates such as P_1 (data wystawienia / issue date), P_6 (sale date) and the due date must be xs:date in YYYY-MM-DD form, while DataWytworzeniaFa (the technical document creation timestamp in the header) must be a full xs:dateTime with a UTC time-zone designator. Any other shape — a localised 15.04.2026, a slash date, a two-digit year, a date-only value placed in DataWytworzeniaFa, or a timestamp missing its Z / +02:00 offset — is rejected before the business checks even run.
BR-PL-02ksefcountryBLOCKEDInvalid KSeF invoice type
Polish KSeF invoices must use valid invoice type codes.
KSEF-002KSeFcountryBLOCKEDInvoice date too old for KSeF
Invoice issue date cannot be more than 30 days before KSeF submission date. Older invoices will be rejected by the system.
KSEF-003KSeFcountryBLOCKEDInvoice number sequence gap
Invoice numbers must be sequential without gaps within each calendar year. KSeF rejects invoices with numbering gaps or duplicates.
PL-R-007ubl-2.1countryINPUTSplit payment annotation required
High-value Polish invoices may require split payment notation.
PL-R-005ubl-2.1countryINPUTInvalid Polish NIP format
Polish NIP must be 10 digits with valid checksum.
KSEF-006KSeFcountryINPUTUnit code not recognized
Unit of measure must be from Polish classification. Common codes include szt. (piece), kg, m, l, usł. (service).
KSEF-008KSeFcountryINPUTGTU code missing
Certain goods/services require GTU (Grupy Towarów i Usług) classification codes. Required for alcohol (GTU_01), fuel (GTU_02), heating oil (GTU_03), tobacco (GTU_04), and other specific categories.
BR-PL-01peppol-bis-3countryINPUTPolish NIP number required
Polish invoices must include the NIP (tax identification number) for seller and buyer.
KSEF-004KSeFcountryINPUTCurrency code invalid
Currency must be a valid ISO 4217 code. Use PLN for domestic invoices.
KSEF-001KSeFcountryINPUTKSeF NIP validation failed — bad format or wrong identifier field
KSEF-001 fires when a Polish tax identification number (NIP) on a KSeF e-invoice is malformed or placed in the wrong identifier element. A NIP must be exactly 10 digits and pass the official weighted check-digit test; the KSeF schema field that carries it (Podmiot1/Podmiot2 → DaneIdentyfikacyjne → NIP) accepts digits only — no PL prefix, no spaces, no dashes. A second, very common variant is putting a domestic NIP in the EU VAT field (NrVatUE) or a generic identifier (NrID) instead of the NIP element, which both fails validation and breaks routing of the invoice to the correct party inside KSeF.
KSEF-005KSeFcountryINPUTKSeF VAT rate invalid — StawkaPodatku not in the Ministry of Finance dictionary
KSEF-005 is raised when a VAT rate or tax category on an FA(2)/FA(3) invoice does not match the values the KSeF schema and the Ministry of Finance dictionary allow. KSeF does not accept arbitrary percentages or free-text descriptions: each line's rate must map to an allowed value (currently 23%, 8%, 5%, 0%) or to one of the markers — zw (exempt), np (out of scope), and the reverse-charge handling — declared through P_12 and consistent with the document totals (P_13_x / P_14_x). A non-dictionary percentage, or a marker inconsistent with the amounts reported for that group, is rejected.
KSEF-21178KSeF 2.0countryBLOCKEDKSeF UPO (Urzędowe Poświadczenie Odbioru) not found
You requested the UPO (Urzędowe Poświadczenie Odbioru — the official acceptance confirmation) for a KSeF invoice, but the system could not find a UPO matching the provided criteria. Either the invoice has not yet been assigned a UPO, or the search parameters (referenceNumber, KSeF number, sessionReferenceNumber) do not identify a valid invoice.
KSEF-21115ksefbusinessINPUTKSeF error 21115 — invalid authentication certificate
KSEF-21115 ("Nieprawidłowy certyfikat" / invalid certificate) is a gateway error returned during authentication, before any invoice is processed. The KSeF 2.0 API rejected the certificate presented to establish the session, so the connection is never authorised and no document reaches schema or business validation. It is an integration/credential problem, not a fault in the invoice XML — the same certificate fails for every document until it is corrected.
KSEF-21181KSeF 2.0businessBLOCKEDSellers are not identical for all invoices in a KSeF batch
The KSeF 2.0 API rejected a batch session because at least one invoice inside the batch has a Podmiot1 (issuer) NIP that differs from the others. KSeF requires every invoice in a single batch session to belong to the same seller.
KSEF-21180KSeF 2.0countryBLOCKEDKSeF session status does not allow this operation
The KSeF 2.0 API rejected your request because the session referenced by referenceNumber is in a state that does not permit the requested action. Typical example: attempting POST /sessions/online/{ref}/invoices while the session status is 415 (closing) or an already-terminal status such as 445 (no valid invoices). The invoice itself was never processed.
KSEF-21177ksefcountryINPUTInvoice issue date is outside the allowed KSeF window
KSEF-21177 is a server-side validation error returned by the Polish Krajowy System e-Faktur (KSeF) when the FA(2) schema element P_1 (data wystawienia / invoice issue date) is outside the window the platform accepts. KSeF rejects invoices whose issue date is in the future, more than the allowed look-back from the submission timestamp, or in a different reporting period than the one the schema header (DataWytworzeniaFa) declares. The mandate-live behaviour since the February 2026 go-live is strict: the platform returns 400 with this code and the invoice is not stored.
KSEF-21182KSeF 2.0countryBLOCKEDKSeF concurrent export limit reached
The KSeF 2.0 API rejected your invoice export request because the authenticated entity already has the maximum number of concurrent exports in flight. The message returned is "Osiągnięto limit trwających eksportów" (concurrent export limit reached).
KSEF-21401ksefsyntaxINPUTDocument does not conform to the KSeF XSD schema
KSeF error 21401 ("Dokument nie jest zgodny ze schemÄ… (xsd)") is returned when the invoice payload fails XSD schema validation against the FA schema published by the Polish Ministry of Finance. The API rejects the payload before any business validation runs, so no reference number is issued and the invoice is not stored.
KSEF-21121ksefsyntaxBLOCKEDKSeF rate limit reached for this endpoint
KSeF error 21121 ("Limit żądań osiągnięty") is returned when the calling context exceeds the per-endpoint request quota published by the Polish Ministry of Finance. The API rejects the request with HTTP 429 and the client must back off before retrying. Quotas are applied per NIP context, per endpoint, and per time window.
KSEF-21301ksefsyntaxBLOCKEDMissing authorization for this KSeF operation
KSeF error 21301 ("Brak autoryzacji") is returned when the authenticated token has no permission to perform the requested action in the current NIP context. The most common trigger is attempting to issue a self-billing invoice (samofakturowanie) without an active samofakturowanie authorization on the seller's NIP, but any missing permission — invoice-write, credentials-manage, tax-representative — surfaces the same code.
KSEF-21170ksefsyntaxBLOCKEDKSeF interactive session has expired
KSeF error 21170 ("Sesja interaktywna wygasła") is returned when the caller uses a session token whose validity window has elapsed. Interactive sessions have a bounded lifetime set by the Ministry of Finance (currently 2 hours from InitSession, refreshed by activity), and once expired the session cannot be resumed — a fresh authentication challenge is required.
KSEF-21116ksefsyntaxBLOCKEDKSeF authentication token is invalid
KSeF error 21116 ("Nieprawidłowy token") is returned when the AuthorisationToken supplied to /online/Session/InitToken does not match a valid, active token issued for the target NIP context. Unlike 21170 (session expired) or 21302 (token inactive), 21116 means KSeF cannot recognise the token at all — wrong value, wrong environment, or wrong context.
PL-01CIUS-PL (Poland)countryBLOCKEDPolish sellers should include NIP number
Polish sellers should include NIP number. This validation rule ensures Invoice compliance with CIUS-PL (Poland).
Handle Poland Errors in Your Pipeline
The compliance engine auto-remediates Poland e-invoicing errors with controlled safety policies.