KSeF number: check whether an invoice number is valid
Paste the KSeF number from an invoice or receipt confirmation. The validator splits it into tax ID, date and identifier and computes the checksum before you use it in a transfer or ledger.
KSeF number
Valid
Structure and checksum match. Only KSeF can show whether the invoice exists.
| Type | invoice |
| Issuer tax ID | 5265877635 |
| Date accepted by KSeF | 26 August 2025 |
| CRC-8 checksum | AF / expected AF |
Prepared by Radif Partners · Method · VAT Act, regulations and ministry notices checked on 25 October 2026
The KSeF number is the identifier the system assigns to every invoice it accepts. It always has 35 characters in four parts separated by hyphens: the issuer's 10-digit tax ID (NIP), the date of acceptance as year, month and day, a 12-character hexadecimal technical identifier and a 2-character checksum. The checksum is a CRC-8 computed over the first 32 characters, so a copying mistake almost always breaks it. The number has legal weight: under Article 106na(3) of the Polish VAT Act the invoice is received on the day the number is assigned, and from 1 January 2027 an active VAT payer paying another active VAT payer for a KSeF invoice by bank transfer must give it in the transfer reference, under Article 108g. The validator checks the structure and the checksum on the spot, without connecting to KSeF; it does not confirm that an invoice with that number exists in the system.
What the number is made of
The structure is described on the ministry page on the KSeF number and in the KSeF 2.0 API documentation. The example from the documentation:
5265877635-20250826-0100001AF629-AF
| Part | Characters | In the example |
|---|---|---|
| issuer tax ID | 10 digits | 5265877635 |
| date of acceptance | 8 digits, YYYYMMDD | 20250826 |
| technical identifier | 12 characters: digits and letters A to F | 0100001AF629 |
| CRC-8 checksum | 2 hexadecimal characters | AF |
With three hyphens that makes 35 characters. The checksum uses polynomial 0x07 with an initial value of zero, over the 32 characters before the last hyphen. For the example it comes out as AF, as in the number.
Where the number has legal effect
- Day of receipt. Under Article 106na(3) of the VAT Act it is the day the number is assigned, which matters for VAT deduction.
- Official receipt confirmation. The number appears in the confirmation the system issues once it accepts the invoice; see the page on transaction confirmation.
- Transfer. From 1 January 2027 you give the number in the reference of a transfer paying a KSeF invoice when both parties are active VAT payers (Article 108g), whatever the amount and whether or not split payment is used.
- QR code. This number is printed under code I of an invoice issued online, as the QR code guide explains.
When there is no number yet
An offline invoice gets its number only after sending. Work out how long you have here:
Send the invoice to KSeF by
Send the invoice to KSeF by
28 December 2026
| Counted from | 23 December 2026 |
| Working days | 1 |
| Days off skipped | 24 December 2026 (Christmas Eve), 25 December 2026 (Christmas Day), 26 December 2026 (Second day of Christmas), 27 December 2026 |
| QR codes when handing it over outside KSeF | two: OFFLINE and CERTIFICATE |
The number appears in the header of the downloaded file and in the invoice reader, which shows it alongside the party details.
The number in your books and correspondence
It is worth recording the KSeF number in your purchase and sales records next to the invoice number assigned by the issuer. These are two different identifiers: the number in field P_2 comes from the seller’s own numbering, while the KSeF number comes from the system and is unique across Poland. Give both when talking to a trading partner, in a complaint and for a correction. A corrective invoice must state the KSeF number of the invoice it corrects, so without it the correction will be rejected or incomplete.
When you pay several invoices in one transfer, you can use the collective identifier from KSeF instead of listing every number. The validator on this site checks individual numbers; the collective identifier has a different structure.
The validator also helps when importing data from a bank or accounting software: paste the number from a transfer reference and you see at once whether it was cut short or garbled by a banking system that truncates long references.