هذه المقالة متاحة حاليًا باللغة الإنجليزية فقط. الترجمة قريبا.
Odoo Poland Localization 2026: KSeF E-Invoice, VAT & JPK Setup
Poland's National e-Invoicing System (Krajowy System e-Faktur, KSeF) becomes mandatory for B2B invoicing in 2026 after multiple postponements. The Ministry of Finance confirmed the new staged timeline in 2025: the largest taxpayers (annual sales above PLN 200 million) must use KSeF from 1 February 2026, with all other VAT-registered taxpayers following from 1 April 2026. Beyond KSeF, Poland requires Standard Audit Files for Tax (Jednolity Plik Kontrolny, JPK) covering invoices (JPK_FA), VAT (JPK_V7M/V7K), and accounts (JPK_KR), making it one of Europe's most digitally-controlled tax environments. Odoo's l10n_pl localization is well-developed, with l10n_pl_edi providing KSeF integration.
Key Takeaways
- Ministry of Finance / KAS administers VAT (23%), CIT (19%/9%), and PIT (12%/32%)
- KSeF mandatory: large taxpayers (>PLN 200M) from 1 Feb 2026; all VAT-registered from 1 Apr 2026
- Odoo
l10n_plprovides chart of accounts;l10n_pl_ediprovides KSeF FA(2) integration- JPK_V7M/V7K replaced traditional VAT returns since October 2020 — combined declaration + records
- Split payment (Mechanizm Podzielonej Platnosci, MPP) mandatory for specific Annex 15 goods/services
- White List of VAT taxpayers verification required for B2B payments above PLN 15,000
- Statutory reports include JPK_V7, JPK_FA, JPK_KR, CIT-8, PIT-11
Poland Tax Framework Overview
KAS (Krajowa Administracja Skarbowa) under the Ministry of Finance enforces:
- VAT: 23% standard rate; 8% reduced (food in restaurants, hotels, some construction); 5% (basic foods, books); 0% on exports and intra-EU supplies; exempt for financial services, healthcare, education
- CIT (Corporate Income Tax): 19% standard; 9% for small taxpayers (revenue under EUR 2M)
- PIT (Personal Income Tax): 12% (up to PLN 120,000) and 32% (above)
- Solidarity Levy: 4% on personal income above PLN 1 million
- Sugar Tax / Health Levies: On sugary beverages, retail (specific industries)
Poland enforces compliance through multiple data points — KSeF clears invoices in real-time; JPK files provide audit trail; the White List validates VAT taxpayer status; split payment ensures VAT collection on high-risk supplies.
Required Odoo Localization Modules
| Module | Purpose | Edition |
|---|---|---|
l10n_pl | Poland chart of accounts and VAT | Community |
l10n_pl_edi | KSeF FA(2) integration | Enterprise |
l10n_pl_jpk | JPK file exports (V7, FA, KR, MAG) | Enterprise / Custom |
l10n_pl_account_check | Polish bank file formats (Elixir) | Community |
account_reports | VAT, CIT report templates | Enterprise |
hr_payroll_l10n_pl | ZUS, PIT-4, PFRON | Enterprise / Custom |
The OCA Poland community (project-poland) supplements Odoo Enterprise with additional JPK and KSeF flavors. Active community development ensures keeping pace with KAS schema updates.
Chart of Accounts Setup
Polish accounting law (Ustawa o rachunkowosci) and the National Accounting Standards govern the chart structure. The l10n_pl chart provides:
- 0: Aktywa trwale (fixed assets)
- 1: Srodki pieniezne (cash and equivalents)
- 2: Rozrachunki (settlements - receivables and payables)
- 3: Materialy i towary (materials and goods)
- 4: Koszty rodzajowe (expenses by nature)
- 5: Koszty wedlug funkcji (expenses by function, optional)
- 6: Produkty i rozliczenia (products and adjustments)
- 7: Przychody (revenues)
- 8: Kapitaly i fundusze (capital and funds)
Configure the company record with:
- NIP (Numer Identyfikacji Podatkowej, 10 digits) - tax ID
- REGON (9 or 14 digits) - statistical number
- KRS (10 digits) - National Court Register
- PKD code - business activity classification
- KSeF authorization (UPL-1 grant or qualified signature)
VAT Configuration
Configure VAT tax records:
| Tax Name | Rate | Type | Notes |
|---|---|---|---|
| VAT 23% Sprzedaz | 23% | Sales | Standard |
| VAT 8% Sprzedaz | 8% | Sales | Reduced (some foods, construction, hotels) |
| VAT 5% Sprzedaz | 5% | Sales | Basic foods, books |
| VAT 0% Eksport | 0% | Sales | Exports outside EU |
| WDT (Intra-EU) | 0% | Sales | Goods to EU VAT-registered |
| VAT Zwolniony | 0% | Sales | Exempt - financial, healthcare |
| VAT 23% Zakup | 23% | Purchase | Recoverable |
| Reverse Charge MPP | 23% | Purchase | Mandatory split payment goods |
Annex 15 to the VAT Act lists goods and services subject to mandatory split payment when the invoice value exceeds PLN 15,000 gross. Items include construction services, electronics (tablets, smartphones), steel, copper, metals scrap, fuel.
<record id="account_tax_pl_23_sale_mpp" model="account.tax">
<field name="name">VAT 23% Sprzedaz - MPP (Annex 15)</field>
<field name="amount">23</field>
<field name="amount_type">percent</field>
<field name="type_tax_use">sale</field>
<field name="l10n_pl_split_payment_required">True</field>
<field name="l10n_pl_jpk_code">P_19</field>
</record>
KSeF Integration
KSeF (Krajowy System e-Faktur) is the National e-Invoicing System operated by KAS. The flow:
- Invoice approved in Odoo
l10n_pl_edigenerates FA(2) XML per KSeF schema- Authentication: token (UPL-1 grant) or qualified electronic signature/seal
- POSTs invoice to KSeF API (https://ksef-api.mf.gov.pl)
- KSeF assigns KSeF Reference Number (NumerKSeF) and stores the invoice
- Buyer can retrieve from KSeF using their own credentials
- The seller can deliver KSeF reference (and PDF visualization) to the buyer outside KSeF
Key KSeF facts:
- Invoice issuance date is when KSeF accepts and stamps the invoice
- "Faktura ustrukturyzowana" (structured invoice) replaces traditional invoices for B2B
- KSeF stores invoices for 10 years - replacing the seller's archival burden
- B2C invoices remain optional in KSeF; consumers can request paper or PDF
Phased mandate:
| Date | Scope |
|---|---|
| 1 February 2026 | Active VAT taxpayers with sales above PLN 200M (2024 figures) |
| 1 April 2026 | All other active VAT taxpayers |
| 1 January 2027 | Exempt VAT taxpayers and certain B2B simplified invoices (likely) |
The schedule has shifted multiple times; verify the current Ministry of Finance announcements before assuming dates.
JPK Files
Poland's Standard Audit Files for Tax (Jednolity Plik Kontrolny):
| JPK File | Purpose | Frequency |
|---|---|---|
| JPK_V7M / JPK_V7K | Combined VAT declaration + records | Monthly / Quarterly |
| JPK_FA | Sales invoice register | On audit demand |
| JPK_KR | Accounting books | On audit demand |
| JPK_MAG | Warehouse movements | On audit demand |
| JPK_PKPIR | Tax book of revenues and expenses | On audit demand |
JPK_V7 is the most operationally important — submitted monthly/quarterly to MoF, it combines the VAT return with detailed record-level data. KSeF will eventually subsume JPK_FA functionality, but JPK_V7 remains separate.
Odoo's l10n_pl_jpk module exports JPK files in the prescribed XML schema with proper code mappings.
Split Payment (MPP)
Mandatory split payment applies when:
- The invoice contains at least one Annex 15 item
- The gross invoice value exceeds PLN 15,000
Buyer pays:
- Net amount + non-Annex-15 VAT to seller's regular bank account
- VAT on Annex-15 items to seller's special VAT account
The seller's VAT account is restricted (used only for VAT payments to the tax office and certain other VAT-related transfers). This mechanism ensures VAT cannot be pocketed.
Configure invoices:
- Identify Annex 15 items at product level (boolean flag)
- Display "Mechanizm podzielonej platnosci" (Split Payment Mechanism) on the invoice
- Suppress payment terms allowing direct full payment
White List Verification
Before paying any B2B invoice above PLN 15,000 gross to a Polish supplier, the buyer must verify the supplier's bank account against the White List of VAT Taxpayers. Payment to an unlisted account exposes the buyer to:
- Joint liability for the supplier's unpaid VAT
- Disallowance of the cost as deductible
Odoo workflows should call the White List API (https://wl-api.mf.gov.pl) at payment time and either confirm or block the transfer.
Payroll Considerations
Polish payroll components:
| Item | Employee | Employer | Notes |
|---|---|---|---|
| ZUS Pension | 9.76% | 9.76% | Social insurance |
| ZUS Disability | 1.5% | 6.5% | |
| ZUS Sickness | 2.45% | 0% | Voluntary for self-employed |
| ZUS Accident | N/A | 0.67%-3.86% | Industry-specific |
| Health Insurance (NFZ) | 9% | 0% | On gross (no longer deductible against PIT) |
| Labour Fund | N/A | 1% | |
| FGSP (Solvency Fund) | N/A | 0.1% | |
| PPK (Employee Capital Plans) | 2% | 1.5% | Optional opt-out |
| PIT | 12%/32% | N/A | Brackets at PLN 120,000 |
| PFRON | N/A | Variable | If 25+ employees, disability quota |
PIT-4 monthly withholding and ZUS contribution remittance follow strict deadlines.
Reporting Requirements
A Polish Odoo deployment must produce:
- JPK_V7M/V7K: Monthly or quarterly VAT declaration + records by the 25th
- JPK_FA: On KAS demand within 3 days
- JPK_KR: On KAS demand
- CIT-8: Annual corporate income tax return by end of March
- PIT-11: Annual employee income statement by end of February
- ZUS DRA / RCA / RZA: Monthly social insurance returns
- PFRON: Monthly disability fund payment if applicable
- Intrastat: Monthly intra-EU trade statistics
Implementation Checklist
- Confirm NIP, REGON, KRS, PKD code
- Obtain qualified electronic signature/seal or KSeF token (UPL-1)
- Install
l10n_plandl10n_pl_edi; configure NIP, KSeF auth - Verify chart of accounts; map VAT control accounts
- Configure VAT 23%, 8%, 5%, 0%, exempt; reverse charge codes
- Tag Annex 15 products for mandatory split payment
- Implement White List verification at payment
- Configure KSeF submission (test environment first, then production)
- Build JPK_V7 export per current MoF schema
- Configure payroll with current ZUS rates and 2026 PIT brackets
- Schedule monthly filings: JPK_V7 by 25th, ZUS by 15th, PIT-4 by 20th
Common Pitfalls
Wrong KSeF auth type: Token-based auth (UPL-1) versus qualified signature have different setup. Choose based on company structure and renew tokens before expiry.
Missing Annex 15 product flag: Selling Annex 15 items without MPP marking exposes buyers to joint liability — they may refuse payment or insist on rebilling.
Incorrect JPK_V7 schema version: KAS updates JPK_V7 schema periodically. Outdated versions cause submission rejection.
White List skipped: B2B payments above PLN 15,000 to unlisted accounts trigger joint VAT liability. Always verify before transfer.
KSeF dates confused: Invoice date in KSeF is when KSeF accepts (not when the seller drafted). VAT recognition date may differ. Configure date logic explicitly.
ECOSIRE provides Odoo localization for Poland, including KSeF integration, JPK exports, and ZUS-compliant payroll. Contact us for implementation or explore our accounting services.
Frequently Asked Questions
When is KSeF mandatory for my company?
Per the 2025 announcements: 1 February 2026 for active VAT taxpayers with 2024 sales above PLN 200 million. 1 April 2026 for all other active VAT taxpayers. Smaller and exempt taxpayers may have later dates per subsequent legislation. Confirm the current schedule with your tax advisor as the timeline has changed multiple times.
Can we still issue paper invoices after KSeF mandate?
For B2B transactions in scope of the mandate, the structured KSeF invoice is the official document. The seller may also send a PDF copy outside KSeF for buyer convenience, but the legal invoice is the KSeF version. B2C remains flexible — paper or PDF is acceptable, but B2C can opt into KSeF voluntarily.
Does KSeF replace JPK_FA?
Eventually, yes — once all B2B invoices flow through KSeF, JPK_FA's role diminishes. However, JPK_FA remains required during the transition for invoices not yet in KSeF and for historical periods. JPK_V7 (combined VAT declaration) continues independently of KSeF.
How does Odoo handle the White List verification?
Odoo's l10n_pl extensions can call the White List API at vendor onboarding and at payment authorization. The verification result is logged on the vendor record with timestamp. ECOSIRE's deployment pattern uses scheduled re-verification monthly plus on-demand at payment time to keep the data fresh.
What is the difference between JPK_V7M and JPK_V7K?
JPK_V7M is monthly (for monthly VAT taxpayers); JPK_V7K is quarterly (for quarterly VAT taxpayers, mostly small entities). Both have the same schema covering declaration + records. Frequency choice depends on your VAT settlement period configured with KAS.
بقلم
ECOSIRE TeamTechnical Writing
The ECOSIRE technical writing team covers Odoo ERP, Shopify eCommerce, AI agents, Power BI analytics, GoHighLevel automation, and enterprise software best practices. Our guides help businesses make informed technology decisions.
ECOSIRE
قم بتحويل أعمالك باستخدام Odoo ERP
تنفيذ وتخصيص ودعم خبير Odoo لتبسيط عملياتك.
مقالات ذات صلة
كيفية إضافة زر مخصص إلى عرض نموذج Odoo (2026)
إضافة أزرار إجراءات مخصصة إلى طرق عرض نموذج Odoo 19: طريقة إجراء Python، وعرض الميراث، والرؤية المشروطة، ومربعات حوار التأكيد. تم اختبار الإنتاج.
كيفية إضافة حقل مخصص في Odoo بدون الاستوديو (2026)
قم بإضافة حقول مخصصة عبر وحدة مخصصة في Odoo 19: وراثة النموذج، وامتداد العرض، والحقول المحسوبة، وقرارات المتجر/غير المتجر. الكود أولاً، يتم التحكم في الإصدار.
كيفية إضافة تقرير مخصص في أودو باستخدام التخطيط الخارجي
أنشئ تقرير PDF يحمل علامة تجارية في Odoo 19 باستخدام web.external_layout: قالب QWeb، تنسيق الورق، ربط الإجراء. مع طباعة الشعار + تجاوزات التذييل.