Numer KSeF – struktura i walidacja
Numer KSeF to unikalny identyfikator faktury nadawany przez system. Zawsze ma długość 35 znaków i jest globalnie unikalny – jednoznacznie identyfikuje każdą fakturę w KSeF.
Ogólna struktura numeru
9999999999-RRRRMMDD-FFFFFFFFFFFF-FFGdzie:
9999999999– NIP sprzedawcy (10 cyfr),RRRRMMDD– data przyjęcia faktury (rok, miesiąc, dzień) do dalszego przetwarzania,FFFFFFFFFFFF– część techniczna składająca się z 12 znaków w zapisie szesnastkowym, tylko [0–9 A–F], wielkie litery,FF– suma kontrolna CRC-8 - 2 znaki w zapisie szesnastkowym, tylko [0–9 A–F], wielkie litery.
Przykład
5265877635-20250826-0100001AF629-AF5265877635- NIP sprzedawcy,20250826- data przyjęcia faktury do dalszego przetwarzania,0100001AF629- część techniczna,AF- suma kontrolna CRC-8.
Walidacja numeru KSeF
Proces walidacji obejmuje:
- Sprawdzenie, czy numer ma dokładnie 35 znaków.
- Rozdzielenie części danych (32 znaki) i sumy kontrolnej (2 znaki).
- Obliczeniu sumy kontrolnej z części danych algorytmem CRC-8.
- Porównaniu obliczonej sumy z wartością znajdującą się w numerze.
Algorytm CRC-8
Do obliczenia sumy kontrolnej stosowany jest algorytm CRC-8 z parametrami:
- Polinom:
0x07 - Wartość początkowa:
0x00 - Format wyniku: 2-znakowy zapis szesnastkowy (HEX, wielkie litery)
Przykład: jeśli obliczona suma kontrolna wynosi 0x46, do numeru KSeF zostanie dodane "46".
Przykład w języku C#:
csharp
using KSeF.Client.Core;
bool isValid = KsefNumberValidator.IsValid(ksefNumber, out string message);Przykład w języku Java:
OnlineSessionIntegrationTest.java
java
KSeFNumberValidator.ValidationResult result = KSeFNumberValidator.isValid(ksefNumber);