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:

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

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):

Inbound (receiving invoices):

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:

  1. Log into the KSeF Taxpayer Portal at ksef.mf.gov.pl under your company NIP
  2. Navigate to Zarządzanie tokenami (Token management)
  3. Click Wygeneruj token (Generate token); enable both Wysyłka faktur and Dostęp do faktur permissions
  4. Copy the token — it is shown only once
  5. 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

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 →