Account
English

KSeF FA(3) Validator

Drop a Polish structured invoice XML (FA(3)). It is checked against the official schema and shown as a readable invoice.

Files are processed in memory and never stored.

About KSeF

KSeF (Krajowy System e-Faktur) is Poland's national e-invoicing system. Issuing invoices through KSeF is mandatory for large taxpayers since 1 February 2026, for most other businesses since 1 April 2026, and for the smallest firms from 1 January 2027. Invoices must follow the logical structure FA(3), published as an XSD by the Ministry of Finance on 25 June 2025, namespace http://crd.gov.pl/wzor/2025/06/25/13775/.

KSeF timeline

DateWhoObligation
1 February 2026Taxpayers with 2024 sales above PLN 200 millionIssue all invoices through KSeF
1 April 2026All other VAT taxpayersIssue through KSeF
1 January 2027Smallest firms (monthly sales up to PLN 10,000) and cash-register invoicesIssue through KSeF
1 January 2027EveryoneEnd of the grace period: penalties for invoices issued outside KSeF, KSeF number required in payments

Foreign companies registered for Polish VAT without a fixed establishment can keep issuing outside KSeF but must be able to receive KSeF invoices from Polish suppliers, usually as XML exported from the system.

Structure of an FA(3) file

An FA(3) invoice is a single Faktura element with four blocks: Naglowek (form code FA (3), schema variant, creation time), Podmiot1 (seller: NIP, name, address), Podmiot2 (buyer, with Podmiot3 for additional parties) and Fa with the invoice data: currency, issue date, number, totals P_13_x/P_14_x per VAT rate, P_15 (amount due), payment terms and the lines in FaWiersz. The viewer maps every block to the usual invoice layout and shows the Polish field codes next to the labels, so an accountant can find P_15 or P_2 at a glance.

Errors the schema finds, and errors it does not

ProblemFound byTypical cause
Wrong namespace or KodFormularza still FA (2)XSDSoftware not updated for FA(3)
Missing or malformed NIPXSD + checksum ruleSpaces, dashes, 9 digits instead of 10
Date not in YYYY-MM-DDXSDLocale formatting
P_15 differs from sum of net + VAT per rateSemantic ruleRounding per line versus per document
Line count above 10,000 or file above 1 MBKSeF onlyBatch invoices; split them

What the validator checks

A file that passes here is structurally ready for submission. KSeF itself additionally verifies the taxpayer's authorisation and issues the KSeF number on acceptance.

Frequently asked questions

Does it support correction invoices and advance invoices?

Yes. FA(3) covers all invoice types through RodzajFaktury (VAT, KOR, ZAL, ROZ, UPR and their correction variants). The type is shown in the header and corrections list the corrected invoice number and the before/after amounts.

Can I check whether a KSeF number is genuine?

Not here. The KSeF number is assigned by the Ministry of Finance system on acceptance and can only be verified by querying KSeF with your credentials or via the official invoice verification page. This tool checks the content of the XML, not its registration.

Is there a Polish version of this page?

Yes: <a href="/pl/ksef-walidator/">Walidator KSeF</a>, with the FAQ in Polish and notes for sole traders.

Does this submit the invoice to KSeF?

No. This is a validator and viewer only. Submission requires authentication with the Polish tax administration through your invoicing software or the government application.

I have an FA(2) file. Is it still accepted?

FA(2) was replaced by FA(3) on 1 February 2026. Files in the old structure are rejected by KSeF. The tool reports the schema version it detects.

Developers: same engine as an API

curl -F file=@invoice.pdf https://einvoicechecker.com/v1/validate
curl -F file=@invoice.xml https://einvoicechecker.com/v1/parse
curl -F file=@invoice.xml "https://einvoicechecker.com/v1/render?lang=en" -o invoice.html