Skip to content

KSeF checks syntax.
The law demands substance.

We check both.

KSeF validates FA(3) XML. Polish tax law and official FA(3) guidance define obligations that schema validation alone does not prove. KSeF Guard checks 128 active validation rules offline before submission.

FA(3) v13775 128 rules Offline — data stays on disk
128 validation rules · Source-backed evidence

What a KSeF rejection actually costs you

Invoice date shifts

Your invoice is legally dated when KSeF accepts it, not when you sent it. A rejection on the 10th fixed on the 12th means your invoice is dated the 12th.

VAT period disruption

Shifted dates push invoices into the next reporting period, creating discrepancies between your accounting system, KSeF, and the JPK_VAT filing.

Batch blocking

One invalid invoice in a batch submission blocks the entire set. Hundreds of invoices delayed by a single error.

256
Invoices tested on official KSeF API
107
Additional catches beyond KSeF — and growing
0
False negatives
21
Gov-enforced rules

We submitted 256 invoices to the official KSeF test API. It accepted 98 non-compliant invoices that should have been caught. KSeF Guard flags all 107 rules the API misses — 55 legal requirements, 52 best-practice and security.

Structural errors caught first

Before any business rules run, KSeF Guard validates your XML against the official FA(3) schema — catching the structural errors that cause immediate KSeF rejection.

FA_2026_03_0001.xml
Valid
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?xml version="1.0" encoding="UTF-8"?>
<Faktura xmlns="http://crd.gov.pl..." xmlns:etd="http://crd.gov.pl..." xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org...">
<Naglowek>
<KodFormularza kodSystemowy="FA (3)" wersjaSchemy="1-0E">FA</KodFormularza>
<WariantFormularza>3</WariantFormularza>
<DataWytworzeniaFa>2026-03-10T09:00:00Z</DataWytworzeniaFa>
<SystemInfo>KSeF Guard Showcase</SystemInfo>
</Naglowek>
<Podmiot1>
<DaneIdentyfikacyjne><NIP>1111111111</NIP><Nazwa>ACME Sp. z o.o.</Nazwa></DaneIdentyfikacyjne>
<Adres><KodKraju>PL</KodKraju><AdresL1>ul. Marszalkowska 1, Warszawa</AdresL1></Adres>
</Podmiot1>
<Podmiot2>
<DaneIdentyfikacyjne>
<NIP>2222222222</NIP>
<Nazwa>XYZ Trading Sp. z o.o.</Nazwa>
</DaneIdentyfikacyjne>
<Adres><KodKraju>PL</KodKraju><AdresL1>ul. Poznanska 10, Poznan</AdresL1></Adres>
<JST>2</JST><GV>2</GV>
</Podmiot2>
<Fa>
<KodWaluty>PLN</KodWaluty>
<P_1>2026-03-10</P_1>
<P_2>FV/2026/03/0001</P_2>
<P_13_1>1000.00</P_13_1><P_14_1>230.00</P_14_1>
<P_15>1230.00</P_15>
<Adnotacje>
<P_16>2</P_16><P_17>2</P_17><P_18>2</P_18><P_18A>2</P_18A>
<Zwolnienie><P_19N>1</P_19N></Zwolnienie>
<NoweSrodkiTransportu><P_22N>1</P_22N></NoweSrodkiTransportu>
<P_23>2</P_23>
<PMarzy><P_PMarzyN>1</P_PMarzyN></PMarzy>
</Adnotacje>
<RodzajFaktury>VAT</RodzajFaktury>
<FaWiersz>
<NrWierszaFa>1</NrWierszaFa><P_7>Uslugi konsultingowe IT</P_7>
<P_8A>godz</P_8A><P_8B>10.00</P_8B><P_9A>100.00</P_9A><P_9B>123.00</P_9B>
<P_11>1000.00</P_11><P_11A>1230.00</P_11A><P_11Vat>230.00</P_11Vat><P_12>23</P_12>
</FaWiersz>
</Fa>
</Faktura>
FA_2026_03_0156.xml
XSD Error
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<?xml version="1.0" encoding="UTF-8"?>
<Faktura xmlns:etd="http://crd.gov.pl..." xmlns:xsi="http://www.w3.org..."
xmlns="http://crd.gov.pl...">
<Naglowek>
<KodFormularza kodSystemowy="FA (3)" wersjaSchemy="1-0E">FA</KodFormularza>
<WariantFormularza>3</WariantFormularza>
<DataWytworzeniaFa>2026-03-18T15:30:00Z</DataWytworzeniaFa>
<SystemInfo>KSeF Guard Showcase</SystemInfo>
</Naglowek>
<Podmiot1>
<DaneIdentyfikacyjne>
<NIP>999-999-99-99</NIP>
Fix: NIP must be exactly 10 digits without dashes — e.g. 9999999999
<Nazwa>TechStar Sp. z o.o.</Nazwa>
</DaneIdentyfikacyjne>
<Adres>
<KodKraju>PL</KodKraju>
<AdresL1>ul. Wspolna 30, Wroclaw</AdresL1>
</Adres>
</Podmiot1>
<Podmiot2>
<DaneIdentyfikacyjne>
<NIP>1111111111</NIP>
<Nazwa>DataCenter Sp. z o.o.</Nazwa>
</DaneIdentyfikacyjne>
<Adres>
<KodKraju>PL</KodKraju>
<AdresL1>ul. Serwerowa 5, Poznan</AdresL1>
</Adres>
<JST>2</JST>
<GV>2</GV>
</Podmiot2>
<Fa>
<KodWaluty>PLN</KodWaluty>
<P_1>2026-03-18</P_1>
<P_2>FV/2026/03/0156</P_2>
<P_13_1>1666.66</P_13_1>
<P_14_1>383.33</P_14_1>
<P_13_3>0.95</P_13_3>
<P_14_3>0.05</P_14_3>
<P_15>2051.00</P_15>
<Adnotacje>
<P_16>2</P_16>
<P_17>2</P_17>
<P_18>2</P_18>
<P_18A>2</P_18A>
<Zwolnienie>
<P_19N>1</P_19N>
</Zwolnienie>
<NoweSrodkiTransportu>
<P_22N>1</P_22N>
</NoweSrodkiTransportu>
<P_23>2</P_23>
<PMarzy>
<P_PMarzyN>1</P_PMarzyN>
</PMarzy>
</Adnotacje>
<RodzajFaktury>VAT</RodzajFaktury>
<FP>1</FP>
<FaWiersz>
<NrWierszaFa>1</NrWierszaFa>
<P_7>Serwery i osprzet sieciowy</P_7>
<P_8A>szt</P_8A>
<P_8B>1</P_8B>
<P_9A>1626.01</P_9A>
<P_11>1626.01</P_11>
<P_12>23</P_12>
</FaWiersz>
<FaWiersz>
<NrWierszaFa>2</NrWierszaFa>
<P_7>Konfiguracja i wniesienie sprzetu</P_7>
<P_8A>szt</P_8A>
<P_8B>1</P_8B>
<P_9A>40.65</P_9A>
<P_11>40.65</P_11>
<P_12>23</P_12>
</FaWiersz>
<FaWiersz>
<NrWierszaFa>3</NrWierszaFa>
<P_7>Kabel sieciowy promocyjny</P_7>
<P_8A>szt</P_8A>
<P_8B>1</P_8B>
<P_9A>0.95</P_9A>
<P_11>0.95</P_11>
<P_12>5</P_12>
</FaWiersz>
<Platnosc>
<Zaplacono>1</Zaplacono>
<DataZaplaty>2026-03-17</DataZaplaty>
<FormaPlatnosci>6</FormaPlatnosci>
</Platnosc>
</Fa>
</Faktura>
PASS FA_2026_03_0001.xml FAIL FA_2026_03_0156.xml
XSD Error Line 14: NIP pattern violation — expected [0-9]{10}, got 999-999-99-99
XSD: schema FA(3) 1-0E • 128 rules • libxml2

128 active validation rules with source-backed evidence

Rules trace back to Art. 106e of the VAT Act, Ministry of Finance regulations, or the official FA(3) brochure. SHA-256 verified source quotes — not paraphrases.

Rule Explorer 128 rules
Search rules...
Rule ID
Description
Classification
KSeF Gov Enforced
Severity
KSEF-BUS-003
All P_14_*W fields required for foreign currency in corresponding rate brackets
GOV_MANDATED
ERROR
KSEF-BUS-006
Exchange rate missing for foreign currency invoice
GOV_MANDATED
ERROR
KSEF-BUS-030
Invoice issue date exceeds the allowed future-date window
GOV_MANDATED
KSeF Gov Enforced
ERROR
KSEF-BUS-044
Line net value consistent with quantity × adjusted unit price
GOV_MANDATED
ERROR
KSEF-BUS-072
Tax rate must be consistent with net amount bucket (simplified invoices exempt)
BEST_PRACTICE
ERROR
KSEF-BUS-074
P_19=1 without providing exemption basis (P_19A/B/C)
GOV_MANDATED
KSeF Gov Enforced
ERROR
↓ 122 more rules
KSEF-BUS-006 GOV MANDATED ERROR KSEF GUARD ONLY

Exchange rate missing for foreign currency invoice

Brak kursu waluty dla faktury w walucie obcej

Problem

Foreign currency invoice has VAT amounts in foreign currency (P_14_*W), but no exchange rate is provided. Either KursWalutyZ (global invoice rate) or KursWaluty (per-line rate) must be specified.

How to Fix

Provide the exchange rate in KursWalutyZ (global rate for the entire invoice) or KursWaluty (per-line rate). The rate should follow Art. 31a — the average NBP rate from the last business day before the tax obligation arises.

Source Quote

“The exchange rate used to calculate the amount of tax, in cases referred to in sec. VI of the Act. When amounts used for determining the tax base are provided in a foreign currency, the exchange rate applicable to a given line of the invoice shall be indicated.”

DESCRIPTION SHA-256: c2fd221e087382ca…

Auditor-ready reports

Export to Text, CSV, JSON, or branded PDF. Every report includes source-backed evidence for each finding — bilingual, in Polish and English.

PDF A4 · DejaVu Sans · EN
Expand
KSeF Guard
Validation Report
Date: 2026-05-03
KSeF Guard
KSeF Guard
Walidator FA(3)
Executive Summary
Files
6
PASS
1
FAIL
5
Pass Rate
17%
Rules evaluated: 128 | Errors: 9 | Warnings: 4 | XSD: 1
File Index
# Status Filename Błędy Ostrz. XSD Risk Str.
1 FAIL FA_2026_01_0201.xml 1 1 0 25 1
2 FAIL FA_2026_02_0042.xml 3 1 0 65 2
3 FAIL FA_2026_02_0099.xml 1 1 0 25 4
4 FAIL FA_2026_02_0187.xml 2 1 0 25 6
5 PASS FA_2026_03_0001.xml 0 0 0 0 7
6 FAIL FA_2026_03_0156.xml 2 0 1 40 9
FAIL FA_2026_01_0201.xml Errors: 1 | Warnings: 1
[ERROR] KSEF-BUS-044 Legal
Problem:
Line net value (P_11 — net amount) does not match the formula: quantity (P_8B) × (unit price P_9A − discount P_10 + surcharge P_10_Dodatki). Please check the line calculation.
What to fix:
Check the invoice line calculations — the net amount (P_11) should equal P_8B × (P_9A − P_10 + P_10_Dodatki), rounded to grosz (tolerance: 0.02 PLN).
Evidence:
Value: NrWierszaFa=2; P_8B=10.00; P_9A=50.00; P_11=0.00
Path: /Faktura/Fa/FaWiersz/P_11
Line: 44
XML Preview Line 44
41<FaWiersz>
42 <NrWierszaFa>2</NrWierszaFa><P_7>Instalacja paneli</P_7>
43 <P_8A>szt</P_8A><P_8B>10.00</P_8B><P_9A>50.00</P_9A><P_9B>0.00</P_9B>
44 <P_11>0.00</P_11><P_11A>0.00</P_11A><P_11Vat>0.00</P_11Vat><P_12>23</P_12>
45</FaWiersz>
Fix: P_11 = 500.00
Quote:
"11) Value of goods delivered or services provided covered by the transaction, excluding tax amount (net sales value)"
Source: Ustawa o VAT Art. 106e ust. 1 pkt 11
TXT Expand
ksef-guard v1.0.0 | Preset: recommended | 128 rules
────────────────────────────────────────────────────
✗ FA_2026_01_0201.xml — FAIL
XSD: pass | Rules: 128 evaluated, 1 error(s), 1 warning(s)
[FAIL] KSEF-BUS-044 [GOV_MANDATED]
Problem: Wartość netto wiersza (P_11 — kwota netto) nie odpowiada formule…
Line net value (P_11 — net amount) does not match the formula…
Fix:Sprawdź obliczenia na pozycjach faktury — wartość netto (P_11)…
Check the invoice line calculations — the net amount (P_11)…
Evidence: NrWierszaFa=2; P_8B=10.00; P_9A=50.00; P_11=0.00
Path:/Faktura/Fa/FaWiersz/P_11
Source:Ustawa o VAT Art. 106e ust. 1 pkt 11
[WARN] KSEF-BUS-140 [BEST_PRACTICE]
Problem: Pozycja faktury ma zerową kwotę netto (P_11 — kwota netto = 0) przy stawce opodatkowanej…
Invoice line has zero net amount (P_11 — net amount = 0) with a taxable rate…
✗ FA_2026_02_0042.xml — FAIL
✗ FA_2026_02_0099.xml — FAIL
✗ FA_2026_02_0187.xml — FAIL
✓ FA_2026_03_0001.xml — PASS
✗ FA_2026_03_0156.xml — FAIL
────────────────────────────────────────────────────
Summary: 1 pass, 5 fail (6 files) in 285ms
Schema: FA(3) 1-0E | Registry: 1.0.0
CSV Expand
file_name file_status risk_score violation_type code severity classification
FA_2026_01_0201.xml FAIL 25 RULE KSEF-BUS-044 error GOV_MANDATED
FA_2026_02_0042.xml FAIL 65 RULE KSEF-BUS-003 error GOV_MANDATED
FA_2026_02_0099.xml FAIL 25 RULE KSEF-BUS-030 error GOV_MANDATED
FA_2026_02_0187.xml FAIL 25 RULE KSEF-BUS-006 error GOV_MANDATED
FA_2026_03_0001.xml PASS 0 - - - -
FA_2026_03_0156.xml FAIL 40 XSD FA3-XSD-E001 error -
15 rows · 18 columns · UTF-8 BOM
JSON Expand
{
"rule_id": "KSEF-BUS-044",
"result": "FAIL",
"severity": "error",
"classification_tag": "GOV_MANDATED",
"source_ref": "Ustawa o VAT Art. 106e ust. 1 pkt 11",
"problem_pl": "Wartość netto wiersza (P_11)…",
"problem_en": "Line net value (P_11 — net amount)…",
"reason_code": "KSEF-BUS-044_LINE_ARITHMETIC_MISMATCH|xml_line=44",
"fix_pl": "Sprawdź obliczenia na pozycjach…",
"fix_en": "Check the invoice line calculations…",
"quote_pl": "11) wartość dostarczonych towarów…",
"quote_en": "11) Value of goods delivered…",
"evidence_value": "NrWierszaFa=2; P_8B=10.00…",
"evidence_path": "/Faktura/Fa/FaWiersz/P_11",
"evidence_line": 44,
"correction_hint": "P_11 = 500.00",
"legal_basis": [
{ "title_pl": "Wymogi ustawowe…", "source": "Art. 106e ust. 1 pkt 8", }
]
}

KSeF Guard vs the Competition

107 rules beyond KSeF — 55 legal, 52 best-practice and security.

Free tier · 128 rules · Offline

KSeF Guard vs the Competition
Feature KSeF Guard ksefuj.to Sorgera CFOall KSeFka
Privacy & Security
Data privacy Validation runs offline — invoice data stays local Browser-side processing Cloud upload required Cloud upload required Offline desktop app
Offline / air-gapped Yes — validation runs offline. License, payments, updates may connect. Browser-based, offline after load No — cloud required No — cloud SaaS Yes — runs offline
No telemetry Verified — no analytics, no tracking Amplitude + Vercel (anonymized) Cookies + analytics Unknown
Validation Depth
Catches beyond KSeF 107 rules beyond KSeF (55 legal)
Validation rules beyond XSD 128 with source-backed evidence 44 semantic rules, cites Art. 31a XSD-focused, no citations Undisclosed, no citations XSD validation only
KSeF API conformance tested 256 invoices, 0 false negatives (conformance v9)
Legal source provenance SHA-256 verified quotes from VAT Act Cites Art. 31a (no full chain)
XSD schema validation Full libxml2 Yes Yes Yes Yes
Smart fix hints Bilingual problem + fix per rule XPath + fix hints Line-level highlighting Suggestions + live fixes XSD error messages
Workflow & Reporting
Batch processing 5,000 files/day (Standard), unlimited (Pro) Multiple files Up to 50 files (paid) Bulk, up to 1,000/mo Single file
PDF audit report White-label PDF with legal chain No No No No
Export formats TXT, CSV, JSON, PDF None None XLS, XML, CSV None
Rule configuration Per-rule enable/disable, YAML profiles No No Limited No
CLI for CI/CD Exit codes 0–130, JSON output Yes (npm package) No No No
Bilingual interface Polish + English Polish, English, Ukrainian English only Polish + English Polish only
Price & Access
Entry price Free (10 files/day) Free Free (10/day), €15/1k credits 120 PLN/mo (~€27) Free
Unlimited usage €89/month (Pro) N/A Pay-per-use credits No unlimited (max 1,000/mo) N/A
Platform Windows desktop + CLI (Linux CLI) Web browser Web browser Web / cloud Desktop (Windows, macOS, Linux)
Open source No — SHA-256 verified rule provenance Apache 2.0 No No No
Product status Available Released Released Released Released

✓ yes · ✗ no · — unknown or not tested

Conformance v9 methodology: 256 test invoices submitted to KSeF test API 2.3.0 on 2026-05-25. Results: 0 false negatives, 98 false-positive fixtures (94 active rules, plus 4 from inactive rules). Including 12 additional rules verified by static analysis and batch testing, KSeF Guard validated 107 rules beyond KSeF API, of which 55 are legal requirements.

Comparison based on publicly available information as of May 2026. We strive for accuracy — contact [email protected] if any claim needs correction.

Ready to try the deepest KSeF validator?

Download Free

For accounting offices

Validating invoices for many clients?

Check whole folders of FA(3) invoices locally, with PDF/CSV/JSON reports per client — before they reach KSeF.

See how it works for offices →

Frequently Asked Questions

What is KSeF and do I need this tool?
KSeF (Krajowy System e-Faktur) is Poland's mandatory structured e-invoicing system. If your business issues invoices in Poland, they must conform to the FA(3) XML schema. KSeF Guard validates your invoices locally before submission.
Is my invoice data sent anywhere?
No. KSeF Guard validates invoices on your local machine. Validation runs offline. License activation, payments, and automatic updates may connect — but invoice content is never transmitted.
How does KSeF Guard compare to cloud alternatives?
KSeF Guard validates offline — invoice data stays on your machine. It checks validation rules with source-backed evidence. Starts free, with paid tiers for batch validation and advanced exports. See the comparison page for a detailed feature breakdown.
How many rules does KSeF Guard check?
128 active validation rules across six classifications: GOV_MANDATED (legally required checks based on the VAT Act), BEST_PRACTICE (recommended validations from the Ministry of Finance brochure), HEURISTIC (smart anomaly detection like weekend issuance), SECURITY (data integrity checks), BATCH_CHECK (cross-invoice consistency validations), and INFERRED (rules derived from schema structure and domain logic).
What's the difference between Standard and Pro?
Standard offers 5,000 files/day, 3 activations, GUI export and PDF, and rule configuration. Pro adds unlimited quota, 10 activations, YAML configuration, white-label PDF, export presets, and CI/CD documentation.
Can I cancel my subscription?
Yes. Your subscription remains active until the end of the current billing period. There is no automatic renewal after cancellation.
How does VAT work?
Prices are listed as net. VAT is automatically applied by DodoPayments (Merchant of Record) based on your location.
What is white-label PDF?
White-label PDF is a validation report featuring your own logo and company header instead of KSeF Guard branding. You can share it with clients or auditors as a branded document.
Does passing KSeF Guard guarantee KSeF will accept my invoice?
No. KSeF Guard validates against the FA(3) schema and 128 legal and best-practice rules, and it intentionally catches issues the KSeF API does not — in conformance v9 it had 0 false negatives. But final acceptance is decided by KSeF, and factors outside the file (your authorizations, permissions, or session state) can still cause a rejection. A PASS means the invoice is structurally and substantively sound, not a guarantee of acceptance.
Does KSeF Guard support FA(2), or only FA(3)?
KSeF Guard targets the current FA(3) structured-invoice schema — the format mandated for KSeF. Older FA(2) files are not validated; convert them to FA(3) first. See our FA(2)-to-FA(3) migration guide for the field-level differences.
Which operating systems are supported?
KSeF Guard's desktop application and CLI are distributed for Windows 10 and later (64-bit). macOS and Linux desktop builds are not offered at this time.

Stop guessing. Start validating.

Free for up to 10 invoices/day. No account required. Invoice data stays on your machine.

Download Free