E-invoicing in Poland: A Complete Guide for Businesses
What is Poland e-invoicing?
Poland's KSeF (Krajowy System e-Faktur — National e-Invoice System) is a centralised e-invoicing clearance platform operated by the Ministerstwo Finansów (Ministry of Finance). Under the KSeF regime, all B2B invoices between Polish VAT-registered entities must be issued through and cleared by KSeF before they carry legal validity for VAT purposes.
The KSeF mandate was originally scheduled for 2024 but was postponed after technical issues were identified during testing. The revised schedule, confirmed by the Ministry of Finance in 2024, sets the mandatory date at 1 February 2026 for large taxpayers (those exceeding PLN 200 million turnover in the preceding year) and 1 April 2026 for all remaining VAT-registered taxpayers.
KSeF assigns each submitted invoice a unique KSeF number (Numer KSeF), which becomes the legally binding identifier for that invoice. Paper invoices and PDFs sent outside KSeF will no longer have legal standing for the relevant transaction types once the mandate applies.
The KSeF FA(3) format
KSeF uses the FA(3) logical structure — formally defined in the Ministerstwo Finansów's schema as FA version 3. Key technical characteristics:
- Format: FA(3) XML — Polish-specific schema (namespace
http://crd.gov.pl/wzor/2025/06/25/13775/), version 3 - Submission: REST API submission to KSeF via an encrypted interactive session, authenticated via a KSeF API token
- KSeF number: returned by KSeF on acceptance; must be stored and referenced in correction invoices
- Correction invoices: use
documentType: "credit_note"and populateoriginalInvoiceRefwith the original invoice number and issue date - Access tokens: generated per-company in the KSeF Taxpayer Portal (ksef.mf.gov.pl); each token must be granted
Wysyłka faktur(sending) andDostęp do faktur(inbox access) permissions - GTU codes: Goods and Services Classification codes (GTU_01–GTU_13) identify Annex 15 goods; pass as
countrySpecific.pl.gtuCodes - Split payment (MPP): mandatory for Annex 15 goods and services exceeding PLN 15,000; enable via
countrySpecific.pl.splitPayment: true
Who does it apply to?
| Segment | Status |
|---|---|
| Large taxpayers (>PLN 200M turnover) | Mandatory from 1 Feb 2026 |
| All other VAT-registered Polish taxpayers | Mandatory from 1 Apr 2026 |
| B2C transactions | Voluntary / separate regime |
| Foreign entities without Polish VAT reg. | Exempt from KSeF mandate |
B2G transactions already use a separate e-invoicing platform (PEF — Platforma Elektronicznego Fakturowania), which is Peppol-based; KSeF covers B2B.
Timeline / key dates
- Jan 2022: KSeF voluntary phase begins
- 2024: Mandatory date postponed from Jun 2024 after technical audit
- 1 Feb 2026: Mandatory for large taxpayers (>PLN 200M revenue)
- 1 Apr 2026: Mandatory for all remaining Polish VAT taxpayers
How Clearvo handles Poland e-invoicing
Clearvo handles per-entity KSeF token management, FA(3) XML generation, encrypted submission to KSeF, KSeF number retrieval, UPO archival, and inbound invoice delivery.
Outbound (sending invoices):
- Register your KSeF API token once at clearvo.io/pl-setup
- Submit invoices via the standard
POST /api/einvoicing/v1/sendendpoint — Clearvo generates FA(3) XML and submits under your NIP - KSeF number is returned in the API response and persisted for correction invoice references
- UPO (Urzędowe Poświadczenie Odbioru) — the Ministry-signed XML receipt — is fetched after acceptance and stored for audit purposes
Inbound (receiving invoices):
- KSeF stores all invoices addressed to your NIP in a buyer inbox
- Clearvo polls your inbox every 5 minutes and fires an
invoice.receivedwebhook for each new invoice - Each inbound invoice includes a White List (Biała Lista) check on the supplier's registered bank accounts — the result appears in
invoiceData.whiteList
What you send: standard Clearvo invoice fields. Supply NIP numbers in supplier.taxId / buyer.taxId (with PL prefix) or via countrySpecific.pl.sellerNip / countrySpecific.pl.buyerNip.
What you get back: the KSeF number, submission timestamp, and upoAvailable flag.
{
"invoiceNumber": "FV/2026/02/00145",
"issueDate": "2026-02-10",
"taxPointDate": "2026-02-10",
"dueDate": "2026-03-12",
"currency": "PLN",
"supplier": {
"name": "Acme Software sp. z o.o.",
"taxId": "PL1234567890",
"address": {
"street": "ul. Marszałkowska 100",
"city": "Warszawa",
"postalCode": "00-026",
"country": "PL"
}
},
"customer": {
"name": "Polski Holding Technologiczny SA",
"taxId": "PL9876543210",
"address": {
"street": "ul. Floriańska 5",
"city": "Kraków",
"postalCode": "31-019",
"country": "PL"
}
},
"lines": [
{
"description": "Usługi programistyczne — luty 2026",
"quantity": 80,
"unitPrice": 250.00,
"taxRate": 23,
"taxCategory": "S"
}
],
"paymentMethod": "przelew",
"bankAccount": {
"iban": "PL61109010140000071219812874"
},
"countrySpecific": {
"pl": {
"splitPayment": false,
"gtuCodes": []
}
}
}
Credential setup
Each entity that submits or receives invoices via KSeF must register a KSeF API token with Clearvo:
- Log into the KSeF Taxpayer Portal at ksef.mf.gov.pl under your company NIP
- Navigate to Zarządzanie tokenami (Token management)
- Click Wygeneruj token (Generate token); enable both
Wysyłka fakturandDostęp do fakturpermissions - Copy the token — it is shown only once
- Register it at clearvo.io/pl-setup using your Clearvo entity API key
Once registered, Clearvo uses this token for all outbound submissions and inbound inbox polling under your NIP.
UPO — the official receipt
After each invoice is accepted by KSeF, Clearvo automatically fetches the UPO (Urzędowe Poświadczenie Odbioru) — the Ministry of Finance-signed XML receipt that proves legal acceptance. The UPO is stored against the submission record and can be retrieved via the Clearvo API. It must be retained for 10 years (Poland's statutory retention period).
The status API response includes "upoAvailable": true once the UPO has been fetched.
White List (Biała Lista podatników VAT)
Poland's White List is the Ministry of Finance's public registry of active VAT taxpayers and their registered bank accounts. The buyer bears the risk: paying a supplier's invoice to a bank account not on the White List causes the buyer to lose input VAT deduction rights for that transaction (Art. 108a uVAT).
Clearvo checks every inbound invoice against the White List at receipt time and includes the result in invoiceData.whiteList:
{
"whiteList": {
"statusVat": "Czynny",
"ibanChecked": "61109010140000071219812874",
"ibanOnWhiteList": true,
"registeredAccounts": ["61109010140000071219812874"],
"checkDate": "2026-02-10"
}
}
The check is informational — payment decisions remain with the buyer. When the MF API is unavailable outside Poland, statusVat is "unavailable".
Correction invoices
Correction invoices in KSeF use rodzajFaktury: KOR. Send them as documentType: "credit_note" with an originalInvoiceRef block:
{
"documentType": "credit_note",
"invoiceNumber": "FV-KOR/2026/02/00001",
"issueDate": "2026-02-20",
"originalInvoiceRef": {
"invoiceNumber": "FV/2026/02/00145",
"issueDate": "2026-02-10",
"reason": "Incorrect unit price"
}
}
Getting started
Full credential setup guide and API reference are at clearvo.io/docs. The interactive setup page at clearvo.io/pl-setup walks through KSeF token generation step by step. Clearvo supports the KSeF test environment (api-test.ksef.mf.gov.pl) for pre-production validation — select test environment during credential registration.
Related country guides
- Hungary — RTIR real-time reporting, B2B mandatory
- Romania — RO e-Factura clearance, mandatory since 2024
- Estonia — Peppol BIS 3.0, B2G mandatory
Frequently asked questions
When does KSeF become mandatory in Poland? KSeF became mandatory for large taxpayers (annual turnover exceeding PLN 200 million) from 1 February 2026. All remaining VAT-registered Polish taxpayers must comply from 1 April 2026. The voluntary phase began in January 2022.
What is a KSeF number and why does it matter?
The KSeF number is the unique identifier assigned by the Ministry of Finance's system to each invoice upon successful submission. It is the legally binding reference for that invoice — not the invoice number you assign. Correction invoices must reference the original invoice via originalInvoiceRef.
Does KSeF apply to foreign companies selling to Polish businesses? Foreign entities without a Polish VAT registration are exempt from the KSeF mandate directly. However, Polish-registered entities (including Polish subsidiaries of foreign groups) are fully subject to KSeF. Foreign businesses with a Polish VAT number should assess their obligation based on the type of registration they hold.
What XML format does KSeF use?
KSeF uses the FA(3) schema — a proprietary Polish XML format defined by the Ministerstwo Finansów. It is not based on UBL or Peppol. The 2025 schema version (namespace http://crd.gov.pl/wzor/2025/06/25/13775/) introduced structural changes from the earlier format; Clearvo generates compliant XML automatically.
What is the White List and do I need to check it?
The Biała Lista (White List) is Poland's registry of active VAT taxpayers and their registered bank accounts. As a buyer, if you pay an invoice to a bank account not on the White List you lose the right to deduct input VAT on that transaction. Clearvo automatically checks the White List for every inbound invoice you receive via KSeF and flags the result in invoiceData.whiteList.
What happens if KSeF is unavailable when I need to submit an invoice? The Ministry of Finance publishes scheduled maintenance windows for KSeF. During planned unavailability, invoices may be submitted in a local offline mode and uploaded to KSeF within a defined window after service resumes. Clearvo retries automatically when the service is restored.
Ready to handle e-invoicing in Poland?
One API, all 31 countries. Sign up and get your API key within 24 hours.
Get started free →