Official rule text
[XML_BOM_PRESENT] File starts with a UTF-8 BOM; KSeF requires UTF-8 without BOM (Weryfikacja faktury)
Why this error occurs
KSeF checks the FA(3) XML in two stages: XSD schema (structure, element order, data types, patterns such as NIP or dates) and semantic rules from the Ministry of Finance information sheet (consistency of amounts, annotations P_16 to P_23, roles of Podmiot2/Podmiot3, bank account formats, currency rates).
How to fix it
Fix the element named in the message. For XSD errors compare the element order and value pattern with the FA(3) schema; for semantic errors apply the cause and fix hints listed on this page. Re-validate before submitting to KSeF: a rejected invoice has no KSeF number and is not issued.
What the validator checks
Typical causes
- File saved as "UTF-8 with BOM" (e.g. Notepad, Excel exports)
Check your invoice
Drop your XML or PDF on the validator and every failed rule is linked to its page here. Free, no account, the file is not stored.
Same check via API:
curl -F file=@invoice.xml https://einvoicechecker.com/v1/validateRelated rules
XML_DISCOURAGED_CHARACTERCharacter discouraged by the W3C XML spec ([#x7F-#x84], [#x86-#x9F], [#xFDD0-#xFDEF],…XML_DISCOURAGED_CHARACTER_MORESummaryXML_ENCODING_NOT_UTF8XML declaration names an encoding other than UTF-8XML_PROCESSING_INSTRUCTIONXML processing instruction (e.gXML_PROCESSING_INSTRUCTION_MORESummary
Frequently asked questions
What does XML_BOM_PRESENT mean?
XML_BOM_PRESENT is a ksef fa(3) rule: File starts with a UTF-8 BOM; KSeF requires UTF-8 without BOM (Weryfikacja faktury)
Will my invoice be rejected because of XML_BOM_PRESENT?
Yes. XML_BOM_PRESENT is flagged "fatal"; validators (KoSIT, Peppol access points, the German ZRE/OZG-RE portals, KSeF) reject the invoice until it is fixed.
Which formats does XML_BOM_PRESENT apply to?
Structured invoices (FA(3) schema) submitted to the Polish KSeF. XSD codes come from the schema, semantic codes from the Ministry of Finance information sheet; KSeF rejects invoices that fail an error-level rule. Syntax: FA3.
Source: KSeF FA(3) schema 1-0E + semantic rules (@ksefuj/validator 0.4). Catalogue generated from the official rule sets on 2026-10-15.