Check the KSeF numbers in your payment titles
Check each transfer on an MT940 or CAMT.053 statement for its KSeF number or collective identifier, and match payments to invoices. Free, on your device.
From 1 January 2027, paying a structured invoice to another active VAT payer by transfer means putting the invoice's KSeF number in the payment title, or a collective identifier when one transfer pays several invoices. Until then, this check shows what your titles carry already.
MT940 or CAMT.053 from your online banking; MT942, CAMT.052 and CAMT.054 work too. A PDF statement cannot be read here, and bank CSV files are not read yet: export MT940 or CAMT.053 instead.
Match with your invoices (optional)
FA(3) XML files downloaded from KSeF and named by their KSeF number, as Aplikacja Podatnika names them, a ZIP of them, the _metadata.json of a KSeF export, or a list. The KSeF number is not inside the XML, so a file renamed without it cannot be matched.
One invoice a line: the KSeF number, the gross amount and, if you have them, the VAT amount and the seller's NIP, separated by semicolons or tabs, as a spreadsheet copies them. A header line is skipped.
Free, and everything runs in your browser: the statement and the invoices are not uploaded, and nothing is kept.
Klarbon reads your bank statement in the browser and shows, for each transfer, whether its payment title carries a valid KSeF number, a collective identifier, a number with a likely typo, or none. Add your invoices and it matches each payment to them by the gross amount, or in a split payment by the VAT. It is free, needs no account, and nothing is uploaded.
What changes on 1 January 2027?
From 1 January 2027, an active VAT payer who pays a structured invoice to another active VAT payer by transfer, or with another payment instrument that carries a title, gives the invoice's KSeF number in the payment title. When one transfer pays several invoices, it gives a collective identifier instead, which KSeF generates for that set of invoices (Ministry of Finance). The same applies to a third party paying for the buyer, to the issuer when it collects by direct debit, and to the message of a split payment (MPP). The rule is article 108g of the VAT Act, and for split payments the amended article 108a(3)(3) (questions and answers, question 43). Invoices issued in offline mode that have not reached KSeF because of an announced failure need no number.
The bill that defers KSeF penalties passed the Sejm on 6 November 2026 and is before the Senate (Sejm print 3245).
How do I check a statement?
- Export the statement from your online banking as MT940 or CAMT.053. MT942, CAMT.052 and CAMT.054 work too.
- Choose the file. Klarbon reads every transfer and its title in your browser.
- Read the table. Outgoing transfers come first, because a missing number there is your own title; incoming ones follow.
- Filter by status, then download the table as Excel or CSV, or print it.
- Add your invoices, if you want the payments matched to them.
What does each status mean?
| Status | What Klarbon found |
|---|---|
| KSeF number | 35 characters whose NIP check digit, date and CRC-8 check characters are right (KSeF API documentation) |
| Collective identifier | 35 characters with IZ after the NIP; only KSeF knows which invoices it covers |
| Likely typo | Something shaped like a KSeF number whose check fails, with the part that is wrong: the NIP, the date, the 12 characters or the check characters |
| No number | Nothing shaped like a KSeF number in the title |
Polish banks split a title in an MT940 statement into fields of 35 characters (~20 to ~25), so a KSeF number often runs from one field into the next. Klarbon joins them as the payer typed them before it searches. In a split payment message (/VAT/.../IDC/.../INV/.../TXT/...) it reads the VAT amount and says which field holds the number. Payments booked before 1 January 2027 are marked.
How does matching with invoices work?
Give Klarbon the invoices as FA(3) XML files, a ZIP of them, the _metadata.json of a KSeF export, or a list. The KSeF number is not part of the invoice's XML: KSeF assigns it on acceptance and returns it in the UPO (Ministry of Finance). Aplikacja Podatnika names every invoice it downloads after its KSeF number, and puts several in a ZIP (user manual, section 5.3.2), so keep the file names. A list has one invoice a line: the KSeF number, the gross amount and, if you have them, the VAT amount and the seller's NIP, separated by semicolons or tabs.
Each transfer then shows matched, when its amount equals the gross amount, or in a split payment its VAT equals the invoice's VAT; amount differs, with the difference; or not among your invoices. A collective identifier gets a box for the KSeF numbers it covers, which you find in KSeF; once pasted, they are matched like the rest. Under the table, Klarbon lists the invoices with no payment on the statement.
Example (fictional): a transfer of PLN 615.00 titled 1234563218-20270105-1F2E3D4C5B6A-5C, against an invoice of PLN 600.00 with that number, shows "amount differs" by PLN 15.00.
What does it not do?
It reads structured statements only: for a PDF statement, export MT940 or CAMT.053 from your bank. Bank CSV files are not read yet. It does not connect to KSeF, so it cannot decode a collective identifier or confirm that a number belongs to a real invoice. It does not write a payment file; that is planned. It shows what the titles carry and is not tax advice: whether a payment needs a number depends on who pays whom, and how. See also what a KSeF number is and what a collective identifier is.
Frequently asked questions
From when must a payment title carry the KSeF number?
For payments made from 1 January 2027, under article 108g of the Polish VAT Act. From the same day the KSeF number also goes into the message of a split payment (MPP). Before that date the check shows what your titles already carry.
Is the KSeF number the invoice number?
No. The invoice number (field P_2) is the seller's own. The KSeF number is the 35 character number KSeF assigns when it accepts the invoice; it is returned in the UPO and is not part of the invoice's XML file.
Which bank files can I use?
MT940 and CAMT.053, the exports Polish online banking offers, and also MT942, CAMT.052 and CAMT.054. A PDF statement cannot be read here. Bank CSV files are not read yet.
Where do I get the KSeF numbers of my invoices?
From the file names: Aplikacja Podatnika names every invoice it downloads after its KSeF number. Your accounting software or a KSeF export (its _metadata.json) has them too. You can also paste a list of numbers with their gross amounts.
What does "likely typo" mean?
The title holds something shaped like a KSeF number, but its check fails: the NIP's check digit, the date, the 12 characters after the date or the two check characters at the end. Klarbon says which part, and with your invoices it names the closest invoice number.
Are my statement and invoices uploaded?
No. The check runs in your browser and nothing is kept. Klarbon only counts that a statement was checked and that invoices were matched, without any number or amount.
Sources
- Ministry of Finance, KSeF: Numer KSeF i zbiorczy identyfikator, version 2.2 (in Polish) ksef.podatki.gov.pl
- Ministry of Finance, KSeF 2.0 questions and answers, question 43 (in Polish) ksef.podatki.gov.pl
- Ministry of Finance, KSeF 2.0 API documentation: the KSeF number and its CRC-8 check (in Polish) github.com
- Ministry of Finance, Aplikacja Podatnika KSeF 2.0 user manual, section 5.3.2 (PDF, in Polish) ksef.podatki.gov.pl
- Sejm, print 3245: the bill deferring KSeF penalties (PDF, in Polish) api.sejm.gov.pl
Related
- Open any e-invoice. Check it. Convert it.
- E-invoice tools
- What is a KSeF number?
- What is a KSeF collective identifier?
- E-invoicing in Poland
- Open a Polish KSeF invoice
- Bank statement tools
- What happens to my files?
- What is MT940?
- What is CAMT.053?
- Understanding KSeF structured invoice
- Check a KSeF QR code
- Am I affected by e-invoicing?