Search
Poland

Regional spotlight

Formats? Mandates?
We've got you covered!

  • Overview of B2G, B2B and B2C e-invoicing in Poland.
  • Key formats, networks and channels you may need to support.
  • High-level regulatory and compliance considerations.

Read the Regional spotlight

e-invoicing in Poland

Poland uses KSeF (Krajowy System e-Faktur), the national e-invoicing system, as the centralised platform for all invoice traffic. Both domestic and cross-border invoices are reported to KSeF using the FA(3) structured invoice format defined by the Polish tax authority. For domestic B2B transactions, KSeF is the sole delivery channel — invoices are issued through KSeF, and KSeF handles delivery to the recipient. For cross-border invoicing, invoices are reported to KSeF and additionally sent via the Peppol network when full Peppol address details are provided.

Poland is currently supported only for selected partners. Please contact Maventa Support for more information on how to set this up with your ERP for Polish companies.

Polish company account registration

When registering a new Polish company via the API, the Polish VAT number must be used as the company identifier. At the moment, company registration requires the vendor to have KYC approval from Maventa. Contact Maventa support to get started.

Identifier Description Format Validation
VAT number Polish VAT identifier (NIP) PL1234567890 Structural validation via VIES

KSeF authentication

For Maventa to send and receive invoices on behalf of a Polish company, it must act as that company’s authorised technical operator in KSeF. This requires a KSeF authentication token, which the end customer generates once and the partner submits to Maventa.

There is no separate registration step in KSeF — every Polish company already exists in the system. The end customer only needs to log in and generate an authentication token.

The partner must first be registered as a trusted vendor with Maventa (part of the KYC approval described above). Contact Maventa Support to set this up.

Submitting the token

Collect the KSeF token from each end customer and submit it to Maventa with POST /v1/services/ksef/tokens. Once the token is active, invoices are sent and received automatically — the end customer does not need to log in to the KSeF portal for day-to-day operations.

The KSeF plan is that the token authentication method will expire on 31 December 2026. Plan token renewal with your end customers ahead of this date.

How an end customer generates a KSeF token

Share these steps with your end customers. The token is generated in the KSeF 2.0 Taxpayer Application. Logging in supports several methods: the mObywatel app, e-ID, online banking, a Trusted Profile (Profil Zaufany), or a qualified electronic signature or electronic seal.

Step-by-step: generating a KSeF authorisation token

  1. Log in to the KSeF 2.0 Taxpayer Application using the mObywatel app, e-ID, online banking, a Trusted Profile, or a qualified electronic signature or seal.
  2. Navigate to Tokens (Polish: Tokeny) in the side menu.
  3. Select the required permissions — both wystawianie faktur (issuing invoices) and przeglądanie faktur (viewing invoices).
  4. Generate and copy the token. Copy the token value immediately after it appears — it may not be retrievable again. The value is a long string, for example 20260212-EC-1ECC3F2000....
  5. Share the token securely with the partner through their software integration — never by email or another unencrypted channel. The partner submits it to Maventa via POST /v1/services/ksef/tokens.

Sending in Poland

KSeF reporting and delivery

All invoices sent through Maventa for Polish companies are reported to KSeF. When Maventa sends an invoice to KSeF, the invoice is converted to the FA(3) format — the official KSeF structured invoice schema, mandatory from 1 February 2026. For each successfully submitted invoice, KSeF returns a UPO confirmation and the sender can download both the UPO and the cleared FA(3) document via the API.

Domestic invoices are routed exclusively to KSeF by Maventa — the sender does not need to take any additional steps. KSeF acts as the delivery platform and handles forwarding the invoice to the recipient. No other delivery channel is used for domestic traffic.

Cross-border invoices are reported to KSeF and additionally sent via the Peppol network — but only when the full Peppol address details are provided in the sending API metadata. This means both the recipient’s Peppol endpoint ID and the operator’s Peppol identifier must be explicitly included.

Every invoice that is successfully posted to KSeF gets the DELIVERED action, available via GET /v1/invoices/{id}/actions. The DELIVERED action’s channel_details.external_number field contains the KSeF ID.

If the full Peppol address details are not provided for a cross-border invoice, the invoice is reported to KSeF but is not delivered to the recipient via Peppol or any other channel. The invoice status shows as SENT because KSeF accepted it, even though the invoice has not actually reached the recipient. Maventa does not automatically reroute these invoices — the sender must manually reroute the invoice to email or print if these delivery channels are enabled for the sender account.

Email and print delivery

Email and postal delivery (printing) are available as additional delivery channels but are not applied automatically by Maventa. If an invoice needs to be delivered via email or print — for example when Peppol delivery was not possible or no Peppol address was provided — the sender must reroute the invoice to these channels manually. Printing is handled in Finland, and all postal deliveries are sent from Finland.

UPO — official confirmation of receipt

For every invoice successfully submitted to KSeF, Maventa receives a UPO file (Urzędowe Poświadczenie Odbioru — Official Confirmation of Receipt). The UPO is issued by the Polish tax authority system and serves as formal proof that the invoice was received and registered by KSeF.

The UPO typically contains:

The KSeF ID is also available via GET /v1/invoices/{id}/actions in the field channel_details.external_number.

Downloading the UPO and cleared document

Both the UPO file and the CLEARED_DOCUMENT (the FA(3) file as submitted to KSeF) are listed in the files array of the GET /v1/invoices/{id} response. Each file entry includes an id, filename, type, and mimetype.

File type Description
UPO Official Confirmation of Receipt from KSeF. Available only for sent invoices.
CLEARED_DOCUMENT The FA(3) invoice file as registered with KSeF. Can be downloaded for bookkeeping or legal compliance purposes.

To download a file, use GET /v1/invoices/{id}/files/{file_id} with the id from the file entry.

Why is the UPO important?

The UPO serves as legal evidence that the invoice was delivered to the official KSeF platform. It provides an audit trail for compliance, dispute resolution, and customer support. The UPO can be stored in ERP or invoice management systems as the official delivery confirmation for Polish invoices.

Archiving is the partner’s responsibility. Polish invoices must be archived for 10 years.

Receiving in Poland

For domestic traffic, invoices sent by other Polish companies arrive via KSeF. Maventa retrieves these invoices from KSeF and delivers them to the recipient’s Maventa account, where they can be downloaded. For international traffic, invoices can be received via the Peppol network or directly from other Maventa customers — this requires Peppol SMP registration (see below).

Received cross-border invoices are not currently reported to KSeF. KSeF is primarily the structured invoice system for invoices issued by entities in scope — especially domestic Polish transactions. Invoices from foreign suppliers typically remain outside KSeF unless the supplier has a Polish fixed establishment participating in the supply or voluntarily uses KSeF.

Address Type Description Example address Activation Requirement
Peppol address Official identifier for the Peppol network. Uses the VAT number with scheme 9945. 9945:PL3140678169 Created when the company registers to receive from Peppol

Peppol SMP registration

To receive invoices via Peppol, a Polish company must first be registered in the SMP (Service Metadata Publisher). The SMP registration determines which document formats the company can receive over the Peppol network.

Peppol registration is available for Polish companies using the VAT number with scheme 9945 — for example 9945:PL3140678169.

The following document types are registered in the SMP:

Peppol BIS Billing 3.0 — Invoice

DocumentIdentifier urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1

ProcessIdentifier urn:fdc:peppol.eu:2017:poacc:billing:01:1.0

Peppol BIS Billing 3.0 — Credit Note

DocumentIdentifier urn:oasis:names:specification:ubl:schema:xsd:CreditNote-2::CreditNote##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1

ProcessIdentifier urn:fdc:peppol.eu:2017:poacc:billing:01:1.0

Scanning

Scanning is available in Poland via the AutoScan solution.

For step-by-step instructions on enabling receiving, registering for Peppol, and setting up scanning, see the invoice receiving integration guide.

e-invoicing formats used in Poland

ERP integrations for Polish companies should use Peppol BIS Billing 3.0 for both sending and receiving. This is currently the only format with a guaranteed working conversion to and from the Polish FA(3) format used by KSeF.

Format Standard Notes
FA(3) Polish national standard Official KSeF structured invoice schema defined by the Polish tax authority, mandatory from 1 February 2026. All invoices sent to KSeF are converted to this format.
Peppol BIS Billing 3.0 EN16931 Recommended format for ERP integrations. Used for cross-border Peppol delivery alongside KSeF reporting.

Maventa also supports localised PDF for both sent and received invoices, with the legal invoice data included. The PDF is available in English, Finnish, Swedish, Norwegian (Bokmål and Nynorsk), Dutch, and Polish.

Back to top

AI Chat Support 24/7

  • Get help via AI chat available 24/7 whenever it suits you
  • Chat extensively uses Maventa support pages, websites, and blogs in its answers
  • If you need assistance that the AI cannot provide, you can also ask a customer service agent to join the conversation
  • Support requests processed Monday to Friday
Cancel Open chat

Got feedback?

Did you not find what you were looking for? Or was something explained unclearly? Or just want to share your thoughts? We are happy to hear your feedback!

Note: This form is not a way to get support, this is only for feedback for the documentation website. If you need support, please contact Maventa support.

Integration Guide Services & Reach API Specification Changelogs Integration guide Getting Started Invoice sending Consumer Invoicing Printing Email invoicing Invoice receiving Scanning Detect Fraud reporting Webhooks Reference implementations Maventa Connector Embeddable User Interface Peppol Network Document Exchange Invoice Response Self-billing support Invoicing formats Validation Peppol BIS 3.0 Finvoice 3.0 Document types and type codes Maventa JSON (table) Maventa JSON (json schema) Companies and Settings Department Company Users Billing Accounts receivable Ropo's reminder and collection service Amili Kassavirta Amili Perintä Services and reach Maventa services and reach e-invoicing in Finland Mass Printing Service e-invoicing in Sweden e-invoicing in Norway e-invoicing in Denmark e-invoicing in the Netherlands e-invoicing in Belgium e-invoicing in Germany e-invoicing in Estonia e-invoicing in Latvia e-invoicing in Poland e-invoicing in Italy e-invoicing in France e-invoicing in Spain Api specification API overview Getting Started Common & authentication API Invoices API Documents API Companies & settings API Lookups API Detect API Validator API Receivables API Billing API Scanning API B2CFI API B2CNO API B2CSE API Partner API Getting Started Account Configuration API Methods Invoice Sending API Methods Invoice Receiving API Methods B2C Norway API Methods B2C Finland API Methods Other API Methods Changelogs Product changelog Developer Changelog
Clear Send

Enter your credentials to Maventa testing environment, to authenticate and try things out with the Swagger UI. This will fetch a Bearer token using OAuth2 with the endpoint POST https://ax-stage.maventa.com/oauth2/token. The token is stored in your browser's session storage (cleared when you close the tab) and used in Swagger calls done from this documentation website. The token is valid for 1 hour.

Never use your production credentials here. This is only for testing the Maventa test environment in the Swagger UI.
Reset All None
eui global company lookup document:receive document:send invoice:receive invoice:send company:read company:write validate receivables:assignments analysis billing:reports partner:invoice_delivery_actions partner:lookups partner:takeovers partner:lyanthe_scan_service fi_bank_message:send fi_bank_message:receive
Cancel Sign In