LazyTools

🔒 Every tool runs in your browser — the files and values you enter are never uploaded to any server. How it works

🧐 KSeF Invoice Pre-Checker (FA(3))

Catch the obvious rejections before KSeF does — structure, required fields and NIP check digits, verified locally in seconds. Unofficial by design: only KSeF acceptance is legal validation.

This is an unofficial pre-check — it verifies structure, required fields and NIP check digits, not full XSD-schema or business-rule conformance. Legal validation happens only when KSeF itself accepts the invoice and assigns its KSeF number. Nothing you load here is uploaded anywhere.

Rate this tool:
Anonymous — no account, no identifier

How the ksef invoice pre-checker (fa(3)) works

KSeF is a clearance system: an invoice that fails validation is rejected and legally doesn't exist, so errors surface at the worst moment — submission. This pre-checker runs the cheap checks early: the XML is well-formed; the root and required elements (Naglowek, Podmiot1, Podmiot2, Fa) are present; the schema variant is the current FA(3); the issue date, invoice number, currency code and total are present and sane; line items exist; the net totals are self-consistent; and — the classic silent killer — the seller's and buyer's NIP numbers pass Poland's mod-11 checksum, which catches most typos in a tax ID. Each check reports pass, warn or fail with a plain explanation.

Honest scope: this is a rule-based pre-check, not the Ministry of Finance's XSD-schema validation and not KSeF's business rules — an invoice can pass here and still be rejected, and only KSeF's acceptance (with a KSeF number) has legal effect. What it will catch is the mundane majority of failures: a mistyped NIP, a missing required field, a malformed date, an FA(2) file where FA(3) is required. From January 2027 the stakes rise — the penalty grace period ends — so a ten-second local pre-check before submission is cheap insurance.

Frequently asked questions

Is this an official KSeF validation?

No — explicitly not. It's an unofficial structural pre-check. Legal validation happens only when KSeF itself accepts the invoice and assigns a KSeF number. Use this to catch obvious problems earlier and cheaper.

What does it actually check?

Well-formed XML; required elements (Naglowek, Podmiot1/2, Fa); FA(3) vs FA(2) variant; P_1 date format, P_2 number, ISO currency code, numeric P_15 total; presence of FaWiersz line items; consistency between line nets and the P_13 VAT-group sums; and mod-11 checksum validity of both NIPs.

How does the NIP checksum work?

A Polish NIP's tenth digit is a check digit: multiply the first nine digits by the weights 6,5,7,2,3,4,5,6,7, take the sum modulo 11, and it must equal the last digit. It catches most single-digit typos and swaps — the most common reason an otherwise-fine invoice carries a wrong tax ID.

Why would an invoice pass here but fail in KSeF?

KSeF validates against the full FA(3) XSD schema plus business rules (field interdependencies, code lists, correction-invoice logic) that go far beyond structural checks. This tool covers the frequent, cheap-to-catch failures, not the long tail.

Is the invoice I check uploaded anywhere?

No — all checks run in your browser and the page works offline. Pre-submission invoices are confidential business data; that's precisely why this doesn't have a server side.

Related file converters

From the blog