formats6 min read

FA_VAT Format Guide: Poland's KSeF Invoice Schema Explained

Deep dive into Poland's FA_VAT e-invoice format used in KSeF. Schema structure, mandatory fields, XML examples, versioning, and how FA_VAT compares to EN 16931, ZUGFeRD, and FatturaPA.

By EU E-Invoicing HubPublished: 20 February 2026Updated: 8 April 2026

FA_VAT Format Guide: Poland's KSeF Invoice Schema Explained

If you're doing e-invoicing in Poland, FA_VAT is the format you need to understand. Unlike Germany's XRechnung (a European standard) or Italy's FatturaPA (an older proprietary format), FA_VAT is Poland's own XML schema — designed from the ground up for the KSeF clearance model.

This guide explains what FA_VAT actually is, how the schema is structured, what the mandatory fields are, and how to handle edge cases.

What Is FA_VAT?

FA_VAT (short for Faktura ustrukturyzowana — structured invoice) is the XML schema used for all KSeF e-invoices in Poland. It is:

  • A pure XML format — no PDF wrapper (unlike Factur-X or ZUGFeRD)
  • Defined and maintained by the Ministerstwo Finansów (Polish Ministry of Finance)
  • Submitted to the KSeF platform via a REST API — the format itself is validated server-side before a KSeF reference number is issued
  • Versioned — the current mandatory version is FA(2), sometimes referred to as FA_VAT v2

The schema is publicly available on the Polish tax authority's portal: podatki.gov.pl/ksef.

FA(1) vs FA(2): Understanding the Versions

When KSeF launched in voluntary mode in 2021, it used FA(1). The Ministry released FA(2) in 2023 ahead of the (then-planned) mandatory rollout. Key changes in FA(2):

  • Extended support for margin scheme invoicing (VAT marża)
  • Better handling of fiscal receipts converted to invoices (paragon fiskalny z NIP)
  • Improved structure for intra-group transactions and self-billing
  • Additional KSeF-specific metadata fields
  • Stricter validation rules that reject previously tolerated edge cases

FA(1) invoices are no longer accepted by KSeF as of the mandatory mandate date. All software must generate FA(2).

Schema Structure Overview

An FA_VAT FA(2) invoice is an XML document with a root element of <Faktura> in the namespace http://crd.gov.pl/wzor/2023/06/29/12648/. The high-level structure is:

<Faktura>
  <Naglowek>          <!-- Header: KSeF schema version, creation timestamp -->
  <Podmiot1>          <!-- Seller (sprzedawca) -->
  <Podmiot2>          <!-- Buyer (nabywca) -->
  <Podmiot3>          <!-- Optional: third party (e.g., recipient for triangular supply) -->
  <Fa>                <!-- Invoice body: type, date, line items, totals -->
    <KodWaluty>       <!-- Currency code (ISO 4217) -->
    <P_1>             <!-- Invoice date (data wystawienia) -->
    <P_2>             <!-- Invoice number (numer faktury) -->
    <P_6>             <!-- Sale/supply date (data dokonania/zakończenia dostawy) -->
    <FaWiersze>       <!-- Line items -->
      <FaWiersz>      <!-- Individual line item -->
        <NrWierszaFa> <!-- Line number -->
        <P_7>         <!-- Product/service description -->
        <P_8A>        <!-- Unit of measure -->
        <P_8B>        <!-- Quantity -->
        <P_9A>        <!-- Net unit price -->
        <P_11>        <!-- Net line value -->
        <P_12>        <!-- VAT rate code -->
    </FaWiersze>
    <Adnotacje>       <!-- Invoice annotations / special flags -->
    <Rozliczenie>     <!-- VAT summary by rate -->
    <Platnosc>        <!-- Payment terms -->
    <WarunkiTransakcji> <!-- Transaction conditions (optional) -->
  </Fa>
</Faktura>

This is a simplified view. The full FA(2) XSD has over 200 possible elements, though most are optional.

Mandatory Fields

The following fields are always required regardless of invoice type:

Field Element Description
Schema version <Naglowek>/<SchemaVersion> Must be 1-0E for FA(2)
Creation timestamp <Naglowek>/<DataCzasWytworzenia> ISO 8601 datetime
Seller NIP <Podmiot1>/<DaneIdentyfikacyjne>/<NIP> 10-digit Polish tax ID
Seller name <Podmiot1>/<DaneIdentyfikacyjne>/<PelnaNazwa> Full legal name
Seller address <Podmiot1>/<Adres> Full address including postal code
Buyer NIP <Podmiot2>/<DaneIdentyfikacyjne>/<NIP> Required for all VAT-registered buyers
Buyer name <Podmiot2>/<DaneIdentyfikacyjne>/<PelnaNazwa>
Invoice number <Fa>/<P_2> Sequential invoice number
Invoice date <Fa>/<P_1> Date of issue
Supply date <Fa>/<P_6> Date goods delivered / service completed
Currency <Fa>/<KodWaluty> ISO 4217, e.g., PLN, EUR, USD
Line items <Fa>/<FaWiersze> At least one <FaWiersz> required
VAT summary <Fa>/<Rozliczenie> Totals by VAT rate

VAT Rate Codes in FA_VAT

FA_VAT uses specific numeric codes for VAT rates rather than the percentage directly:

Code Rate Description
23 23% Standard rate
8 8% Reduced rate (food, hospitality)
5 5% Reduced rate (basic food, books)
0 0% Zero rate (exports, intra-Community)
ZW Exempt VAT-exempt supplies (zwolnienie)
NP Not subject Outside VAT scope (nie podlega)
OO Reverse charge Odwrotne obciążenie

Corrective Invoices (Faktury Korygujące)

When you need to correct a KSeF invoice that has already received a reference number, you must issue a corrective invoice (faktura korygująca) — you cannot simply re-submit the original.

The corrective invoice in FA_VAT:

  • Has <RodzajFaktury>KOR</RodzajFaktury> in the <Fa> element
  • Contains a reference to the original invoice's KSeF reference number in <DaneFaKorygowanej>/<NrKSeF>
  • Shows the corrected values (not just the delta — the full corrected invoice data)
  • Is submitted through KSeF and receives its own KSeF reference number

The buyer must confirm receipt of the corrective invoice in KSeF before they are required to adjust their VAT deduction — this is an important difference from paper corrective invoices.

How FA_VAT Compares to Other European Formats

Feature FA_VAT (Poland) XRechnung (Germany) FatturaPA (Italy) Factur-X (France)
Format Pure XML Pure XML (UBL/CII) Pure XML PDF + embedded XML
EN 16931 compliant No (Polish-specific) Yes No Yes
Government clearance Yes (all invoices) No Yes (SDI) No (PDP routing)
Buyer NIP required Yes No Codice Fiscale/P.IVA No
Offline mode Yes (specific procedure) N/A No N/A
Multi-currency Yes Yes No (EUR only implied) Yes

The most important practical difference: in Poland, the government validates every invoice before it is legally valid. In Germany, compliance is a bilateral matter between sender and receiver.

Testing Your FA_VAT Implementation

Before going live with KSeF, always test in the dedicated KSeF test environment (środowisko testowe):

  • Test environment URL: https://ksef-test.mf.gov.pl/
  • Uses a separate test NIP — do not use your real NIP in the test environment
  • Test credentials are separate from production

Most accounting software has a built-in "KSeF test mode" that routes submissions to the test environment. Enable this and submit at least 5–10 test invoices covering:

  1. Standard domestic sale (23% VAT)
  2. Mixed-rate invoice (multiple VAT rates on one invoice)
  3. Zero-rated export
  4. Corrective invoice referencing an existing KSeF test invoice
  5. Advance payment invoice

The FA(2) XSD schema and official documentation are maintained at podatki.gov.pl/ksef. Schema changes are announced with minimum 3 months' notice.

polandkseffa-vatxmlschemaformate-invoice