FA(3) field lengths and number formats
Every field of an FA(3) invoice (the XML structure used in KSeF, Poland's national e-invoicing system) has a data type, and the type sets how long the text may be or how a number is written. These are the types the schema defines, with the fields that use them.
| Type | Rule | Official description (Polish) | Used by |
|---|---|---|---|
| TZnakowy | Text, 1 to 256 characters | Typ znakowy ograniczony do 256 znaków | SystemInfo NrEORI NrKlienta OpisRoli P_1M P_2 WZ P_19A and 44 more |
| TZnakowy512 | Text, 1 to 512 characters | Typ znakowy ograniczony do 512 znaków | Nazwa AdresL1 AdresL2 P_7 P_7Z ZNaglowek Akapit Opis |
| TZnakowy50 | Text, 1 to 50 characters | Typ znakowy ograniczony do 50 znaków | UU_ID Indeks PKWiU CN PKOB Jednostka OpisInnegoTransportu OpisInnegoLadunku and 5 more |
| TZnakowy20 | Text, 1 to 20 characters | Typ znakowy ograniczony do 20 znaków | GTIN GTINZ |
| TZnakowy2 | Text, up to 256 characters (may be empty) | Typ znakowy ograniczony do 256 znaków | WKom SKom |
| TNumerTelefonu | Text, up to 16 characters | Numer telefonu | Telefon TelefonPU |
| TGLN | Text, 1 to 13 characters | Typ Globalnego Numeru Lokalizacyjnego | GLN |
| TNrRB | Text, 10 to 34 characters | Numer rachunku | NrRB |
| SWIFT_Type | must match [A-Z]{6}[A-Z0-9]{2}([A-Z0-9]{3}){0,1} | Kod SWIFT | SWIFT |
| TNrVatUE | must match (\d|[A-Z]|\+|\*){1,12} | Numer Identyfikacyjny VAT kontrahenta UE | NrVatUE |
| TNIPIdWew | must match [1-9]((\d[1-9])|([1-9]\d))\d{7}-\d{5} | Identyfikator wewnętrzny | IDWew |
| TNumerKSeF | must match ([1-9]((\d[1-9])|([1-9]\d))\d{7}|M\d{9}|[A-Z]{3}\d{7})-(20[2-9][0-9]|2[1-9][0-9]{2}|[3-9][0-9]{3})(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])-([0-9A-F]{6})-?([0-9A-F]{6})-([0-9A-F]{2}) | Numer identyfikujący fakturę w Krajowym Systemie e-Faktur (KSeF) | NrKSeFFaKorygowanej NrKSeFFaZaliczkowej |
| TKwotowy | Decimal number, up to 18 digits in all, up to 2 after the decimal point; must match -?([1-9]\d{0,15}|0)(\.\d{1,2})? | Wartość numeryczna 18 znaków max, w tym 2 znaki po przecinku | P_13_1 P_14_1 P_14_1W P_13_2 P_14_2 P_14_2W P_13_3 P_14_3 and 31 more |
| TKwotowy2 | Decimal number, up to 22 digits in all, up to 8 after the decimal point; must match -?([1-9]\d{0,13}|0)(\.\d{1,8})? | Wartość numeryczna 22 znaki max, w tym 8 znaków po przecinku | P_9A P_9B P_10 P_9AZ |
| TIlosci | Decimal number, up to 22 digits in all, up to 6 after the decimal point; must match -?([1-9]\d{0,15}|0)(\.\d{1,6})? | Typ wykorzystywany do określenia ilości. Wartość numeryczna 22 znaki max, w tym 6 po przecinku | KursWalutyZ KursWalutyZK KursWalutyZW P_8B KursWaluty KursUmowny P_8BZ |
| TProcentowy | Decimal number, up to 9 digits in all, up to 6 after the decimal point; from 0 to 100 | Wartość procentowa z dokładnością do 6 miejsc po przecinku | Udzial P_12_XII P_12Z_XII |
| TNaturalny | Whole number greater than 0 | Liczby naturalne większe od zera | P_NrWierszaNST NrWiersza NrWierszaFa NrWierszaZam |
| TDataT | From 2006-01-01 to 2050-01-01 | Data zdarzenia w okresie od 2006-01-01 do 2050-01-01 | P_1 P_6 P_6_Od P_6_Do P_22A DataWystFaKorygowanej P_6Z P_6A |
| TData | From 2016-07-01 to 2050-01-01 | Data zdarzenia w okresie od 2016-07-01 do 2050-01-01 | DataZaplaty DataZaplatyCzesciowej Termin |
| TDataU | From 1990-01-01 to 2050-01-01 | Data zdarzenia w okresie od 1990-01-01 do 2050-01-01 | DataUmowy DataZamowienia |
| TDataCzas | From 2021-10-01T00:00:00Z to 2050-01-01T23:59:59Z | Data i czas zdarzenia w okresie od 01.10.2021T00:00:00Z do 01.01.2050T23:59:59Z | DataGodzRozpTransportu DataGodzZakTransportu |
How to read the number rules
- Numbers use a decimal point, never a comma, and no thousands separators.
- The patterns do not allow leading zeros or a plus sign; a minus sign is allowed.
- "Up to 18 digits in all, up to 2 after the decimal point" means at most 16 digits before the point.
Have a ZIP of KSeF XML invoices?
Turn it into an Excel workbook and PDFs. Free up to 5 files, nothing uploaded.
Questions
How long can an invoice number (P_2) be in FA(3)?
Up to 256 characters. P_2 uses the type TZnakowy, which allows 1 to 256 characters.
How long can the name of goods or a service (P_7) be?
Up to 512 characters. P_7 uses the type TZnakowy512.
How many decimal places can a unit price have?
Up to 8. Unit prices (P_9A, P_9B) use the type TKwotowy2. Amounts such as P_11, P_13_1 or P_15 use TKwotowy, with up to 2.
What is the earliest issue date FA(3) accepts?
The type of P_1, TDataT, allows dates from 2006-01-01 to 2050-01-01.
Source: schemat_FA(3)_v1-0E.xsd (Ministry of Finance, KSeF documentation repository). Read 2026-11-10.