Skip to content

5 Most Common FA(3) Invoice Errors

The FA(3) schema and Polish tax law impose strict requirements on e-invoices. KSeF Guard checks 128 active rules — including these five, which account for the vast majority of issues we see. Each maps to a real validation rule in the engine.

5 Most Common FA(3) Invoice Errors
1

BUS-003: Missing PLN VAT equivalent on foreign-currency invoices

When the invoice currency (KodWaluty) is anything other than PLN, Polish tax law requires that every VAT summary bracket also includes the PLN equivalent of the tax amount. In the FA(3) schema, these are the P_14_*W fields — one for each rate bucket (23%, 8%, 5%, taxi lump sum, etc.). If you have a EUR invoice with a 23% VAT bracket (P_14_1) but omit P_14_1W, this creates a compliance gap.

XPath: /Faktura/Fa/P_14_*W (where * = rate bucket number: 1, 2, 3, ...)

How to fix: For each VAT bracket present on the invoice, add the corresponding P_14_*W element with the PLN amount calculated using the conversion rate applicable to the invoice (per Art. 31a of the VAT Act). For example, if P_14_1 = 230.00 EUR and the rate is 4.50, then P_14_1W = 1035.00 PLN.

2

BUS-044: Line arithmetic mismatch (net amount vs. quantity × adjusted unit price)

Every invoice line has a declared net amount in P_11. KSeF Guard checks that this value is consistent with the line's quantity (P_8B) multiplied by the adjusted unit price (P_9AP_10 + P_10_Dodatki). Even a one-groszy rounding difference will trigger this rule.

XPath: /Faktura/Fa/FaWiersz/P_11

Formula: P_11 = P_8B × (P_9A − P_10 + P_10_Dodatki)

How to fix: Recalculate each line's net amount as quantity times the adjusted unit price. Pay attention to rounding — compute each line independently and round to two decimal places per line, not after summing. If your ERP exports pre-rounded values, verify them against the formula before submission.

3

BUS-072: Missing VAT rate summary bucket (simplified invoices exempt)

The FA(3) schema requires that every VAT rate used on an invoice line has a corresponding summary bucket in the invoice header. If any line declares P_12 = 23 (the 23% rate), the invoice must include the P_13_1 summary section (net total, VAT total, and gross total for the 23% bracket). The same applies to every other rate: 8% needs P_13_2, 5% needs P_13_3, and so on. This rule does not apply to simplified invoices (UPR).

XPath: /Faktura/Fa/P_13_x (where x = rate bucket matching P_12 value)

How to fix: Ensure that for every distinct P_12 value across all invoice lines, a matching P_13_x summary section exists with correctly summed net, VAT, and gross amounts. Most ERP systems generate these automatically, but manual invoice edits or custom XML generators often miss this step.

4

BUS-073: Missing VAT exemption annotation

When any invoice line uses the "zw" (VAT-exempt) rate in P_12, the invoice must include the Zwolnienie annotation section under Adnotacje. This section requires P_19 = 1, plus at least one of P_19A (act provision or instrument issued under the act), P_19B (Directive 2006/112/EC provision), or P_19C (other legal basis) specifying the legal basis.

XPath: /Faktura/Fa/Adnotacje/Zwolnienie/P_19

Required children: P_19A | P_19B | P_19C (legal basis text)

How to fix: Add the Zwolnienie block with P_19 = 1 and populate the appropriate legal basis field. For example, medical services exempt under art. 43 sec. 1 pkt 18 of the VAT Act should set P_19A to "art. 43 ust. 1 pkt 18 ustawy". Without this, the exemption annotation is incomplete.

5

BUS-030: Future invoice date

The invoice issue date (P_1) must not exceed the allowed future-date window (30 days ahead). KSeF actively enforces this rule and will reject invoices with a future issue date beyond the threshold. This is a GOV_MANDATED rule at error severity — KSeF Guard flags it as a hard failure, matching KSeF's own behavior.

XPath: /Faktura/Fa/P_1

Classification: GOV_MANDATED (error severity) — Gov KSeF Enforced

How to fix: Verify the P_1 date value. Common causes include typing "2027" instead of "2026", or copying a template without updating the date. If the invoice genuinely needs a future issue date (e.g., advance invoices), confirm it falls within the allowed window for your use case.

Catch these before submission

KSeF Guard validates all 128 active validation rules offline — including these five — before you submit to KSeF. Run it locally, in CI/CD, or through the desktop app to find and fix errors in seconds before sending to KSeF.

See also: foreign-currency invoices (P_14_1W)split payment (P_18A)correction invoicesduplicate line numbers.