Error codes · KSeF · Poland

KSEF-001Fixable here

KSeF NIP validation failed — bad format or wrong identifier field

This is the rejection, word for word: „[KSEF-001] 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.“

Three patterns cause almost every KSEF-001. (1) Formatting: the NIP is exported with a country prefix (PL1234567890) or separators (123-456-78-90); the NIP element is digits-only so the prefix and punctuation are rejected. (2) Check digit: a transposed or mistyped digit makes the number fail the weighted checksum (weights 6,5,7,2,3,4,5,6,7 mod 11). (3) Wrong field: a Polish buyer's NIP is written to NrVatUE or NrID, leaving DaneIdentyfikacyjne/NIP empty. KSeF uses the NIP in Podmiot2 to deliver the invoice, so a misplaced number can fail validation or misdeliver.

What to have readyPolish NIP (Tax ID)
What we doStrip any country prefix, spaces and separators so the NIP is 10 bare digits, then verify the check digit before submission. Make sure a Polish counterparty's NIP lives in DaneIdentyfikacyjne/NIP — reserve NrVatUE for the EU VAT identifiers of foreign trading partners. Invoice Navigator removes a PL prefix and formatting characters and re-runs the checksum deterministically; a number that still fails the check digit, or an empty NIP field, is surfaced to the caller because the correct value cannot be guessed from the document.
If you enter it yourself in your invoicing software
Before
<Podmiot2>
  <DaneIdentyfikacyjne>
    <NrVatUE>PL123-456-78-90</NrVatUE>
  </DaneIdentyfikacyjne>
</Podmiot2>
After
<Podmiot2>
  <DaneIdentyfikacyjne>
    <NIP>1234567890</NIP>
  </DaneIdentyfikacyjne>
</Podmiot2>
What the finding looks likeExample
FindingValue missing · KSEF-001
From youPolish NIP (Tax ID)
ThenPassed
ProofSHA-256 and /verify link after the check