JPK_FA and JPK_VAT — Polish SAF-T
JPK (Jednolity Plik Kontrolny — Unified Control File) is the Polish implementation of the OECD SAF-T standard. Rolled out in 2016 in waves, it is the functional ancestor of KSeF and remains active in 2026 for accounting, banking and stock ledgers.
History: from OECD SAF-T to Polish JPK
The SAF-T (Standard Audit File for Tax) standard was published by the OECD in 2005 to harmonise accounting exports subject to tax audits. Several countries implemented it with nuances: Portugal (2008), Luxembourg (2011), Norway (2014). Poland adopted its version in 2016:
- 1 July 2016 — JPK mandatory for large enterprises. First wave for large enterprises within the meaning of the act on freedom of economic activity.
- 1 January 2017 — SME extension. JPK mandatory for medium-sized enterprises (250-499 employees).
- 1 July 2018 — Generalisation. JPK mandatory for all enterprises, including micro-businesses and sole proprietors.
- 1 October 2020 — JPK_V7M / JPK_V7K. Major overhaul of JPK_VAT into JPK_V7M (monthly) and JPK_V7K (quarterly), replacing the historical VAT-7 return.
- 17 February 2022 — JPK_FA(4). Fourth version of the JPK_FA schema, aligned pre-FA(2) in anticipation of KSeF.
- 1 February 2026 — Partial migration to KSeF. JPK_FA is gradually replaced by real-time KSeF clearance for invoice flows. JPK_VAT remains active for the VAT ledger.
The 7 JPK structures
| Code | Name | Frequency | Subject |
|---|---|---|---|
| JPK_FA(4) | Faktury (invoices) | On request | All issued and received invoices |
| JPK_V7M / V7K | VAT monthly / quarterly | Monthly / quarterly | Sales + purchases ledger + VAT return |
| JPK_KR | Księgi rachunkowe | On request | General accounting book + trial balances |
| JPK_MAG | Magazyn (stock) | On request | Stock movements (in, out, transfers) |
| JPK_WB | Wyciąg bankowy (bank statement) | On request | Consolidated bank statements |
| JPK_EWP | Ewidencja przychodów | On request | Revenue ledger — ryczałt regime |
| JPK_PKPiR | Podatkowa Księga Przychodów i Rozchodów | On request | Book of income and expenses |
Focus JPK_FA — invoices
JPK_FA is the structured export of all invoices issued (and, optionally, received) over a given period. Unlike KSeF, which is a real-time invoice-by-invoice clearance, JPK_FA is a bulk export, retrospective, at the administration's request.
<?xml version="1.0" encoding="UTF-8"?>
<JPK xmlns="http://jpk.mf.gov.pl/wzor/2022/02/17/02171/">
<Naglowek>
<KodFormularza kodSystemowy="JPK_FA (4)" wersjaSchemy="1-0">JPK_FA</KodFormularza>
<WariantFormularza>4</WariantFormularza>
<CelZlozenia>1</CelZlozenia>
<DataWytworzeniaJPK>2026-05-19T18:00:00Z</DataWytworzeniaJPK>
<DataOd>2026-04-01</DataOd>
<DataDo>2026-04-30</DataDo>
<KodUrzedu>1471</KodUrzedu>
</Naglowek>
<Podmiot1>
<IdentyfikatorPodmiotu>
<NIP>5260250274</NIP>
<PelnaNazwa>Spółka Sprzedaży Sp. z o.o.</PelnaNazwa>
</IdentyfikatorPodmiotu>
</Podmiot1>
<Faktura typ="G">
<P_1>2026-04-15</P_1>
<P_2A>FV/2026/04/0078</P_2A>
<P_3A>Klient Sp. z o.o.</P_3A>
<P_5B>7010023492</P_5B>
<P_13_1>8000.00</P_13_1>
<P_14_1>1840.00</P_14_1>
<P_15>9840.00</P_15>
</Faktura>
<FakturaCtrl>
<LiczbaFaktur>142</LiczbaFaktur>
<WartoscFaktur>1248920.50</WartoscFaktur>
</FakturaCtrl>
</JPK>
XML structure: Naglowek (file metadata, period, issuer NIP,
tax office code), Podmiot1 (issuer identity), a sequence of
Faktura (with typ attribute: G = sale,
K = corrective, Z = advance), then
FakturaCtrl (control checksum).
Focus JPK_VAT — VAT ledger
JPK_VAT, in its current JPK_V7M (monthly) or JPK_V7K (quarterly) version, merges the VAT ledger and the VAT return into a single file — removing the legacy paper VAT-7 return since 1 October 2020.
- Declarative part. Monthly totals per VAT rate, output VAT, input VAT, net balance.
- Evidence part. Line-by-line of each invoice in the ledger — issued or received. GTU codes (product category) and procedure codes (procedury) to mention.
- GTU codes (Grupowanie Towarów i Usług). 13 codes to categorise tax-risk goods and services: alcohols, tobacco, vehicles, waste, intellectual services, etc.
- Procedure codes. Special markers: SW (distance sale), EE (electronic services), TP (related parties), TT_WNT (triangular intra-EU acquisition), MR_T (tourism margin scheme), etc.
Articulation with KSeF 2026
The KSeF rollout reshapes the ecosystem:
- JPK_FA gradually residual. Since 1 April 2026, every B2B invoice flows through KSeF, which natively holds the information. The administration no longer needs to request a JPK_FA for these invoices. JPK_FA remains useful for flows outside KSeF (B2C, exports, FA(2) invoices refused under tryb awaryjny).
- JPK_VAT maintained. JPK_V7M remains compulsory monthly, but its sales lines are automatically fed by KSeF (the ministry is preparing a pre-fill module). The purchases lines and the declarative part remain the taxpayer's responsibility — input VAT is not in KSeF, the taxpayer must acknowledge what they deduct.
- JPK_KR / JPK_MAG / JPK_WB. Unchanged. KSeF does not cover general accounting nor banking flows.
Common pitfalls
- Outdated schema. The ministry publishes a new version
each year (JPK_FA(1) to (4), JPK_VAT v1 to v3). Using the old schema
triggers automatic rejection. Verify
WariantFormularzabefore each submission. - Missing electronic signature. JPK is compulsorily signed either by qualified e-IDAS certificate, ePUAP signature (Polish trusted profile), or podpis kwalifikowany. A submission without signature is rejected with code 414.
- Confusing fiscal period and submission period.
DataOd/DataDoindicates the covered fiscal period (tax month), not the submission date. The JPK_V7M filing deadline is the 25th of the following month. - Inconsistent FakturaCtrl. The control checksum
LiczbaFaktur/WartoscFakturmust mathematically match the sum ofFakturaelements in the document. A discrepancy blocks submission with code 417.