Skip to main content
KSeF 2.0

Poland KSeF 2.0 Validator: what it covers, what it doesn't and whether it fits your Odoo

Poland KSeF 2.0 Validator fits if you run Odoo 17, 18, 19 or 20 and want to validate your FA(3) invoices and keep their readiness, queue and KSeF lifecycle inside Odoo. It does not send invoices: that is done by Odoo's l10n_pl_edi, which exists in 18, 19 and 20 but not in 17, where the FA(3) is uploaded ready-made from outside Odoo. Validation runs on FlexigoTech Cloud and needs the subscription.

FlexigoTech · Editor in charge: Víctor Gómez · Updated 4 November 2026

Key facts

Module
KSeF 2.0
Versions
Odoo 17, 18, 19 and 20
Checked
in the module's source code, version 20.0 · against the sources linked at the end
Reading time
6 min

Who does each part of the KSeF work

The quickest way to decide whether the module fits is to separate what it does from what Odoo does, what you do and what sits outside the subscription. The table summarises its Odoo Apps listing and its README.

Part of the workWho does itWhat the documentation says
Generating the FA(3)l10n_pl_edi in Odoo 18, 19 and 20; outside Odoo in 17The FA(3) comes from l10n_pl_edi or a file you upload
Validating the FA(3) against the KSeF schemaThe module, on FlexigoTech CloudWith the subscription, and it keeps a signed report
Sending the invoice to KSeFOdoo's l10n_pl_ediThe module has no HTTP client towards KSeF
Checking whether partners, company and invoices are readyThe moduleMigration validator for partner, company and invoice readiness
Mandate-wave datesThe modulePer-company mandate-wave and legal-policy metadata, with configurable dates
Queue of invoices ready to uploadThe moduleDetects l10n_pl_edi and keeps that queue
KSeF number, UPO checksum, rejection reason, retries and rate limitThe moduleTracks the lifecycle of that data
Offline24 and awaria casesThe moduleQR payloads and a next-working-day deadline
KSeF certificates and tokensThe moduleInventory, plus authorisation and delegation records
Audit logThe moduleImmutable, with masking for NIP, PESEL and credentials
Configuring the moduleYouSetup is outside the subscription
Migrating the database to another Odoo versionYou or whoever you chooseFlexigoTech does not handle migrations
Importing historical dataYou or whoever you chooseOutside the subscription
Accounts on each platform, Odoo and hostingYouYou contract and pay for them yourself
A validation run in form view with the Run and Export checklist buttons, the score it reached and, below, one row per invoice showing its result, error code and reason
A validation run: the company, scope and score at the top; underneath, invoice by invoice, the result it gave, the error code and the reason.

Reading the table for your situation

The table makes one thing clear: the module validates and prepares, but it does not send. The actual submission is done by Odoo's l10n_pl_edi. From there, these criteria help you decide.

  • You are on Odoo 18, 19 or 20 and invoice with l10n_pl_edi. The module validates the FA(3) that l10n_pl_edi generates or has already sent, and detects that module to build the queue of invoices ready to upload.
  • You are on Odoo 17. Odoo Community does not include l10n_pl_edi in 17, so the FA(3) is uploaded ready-made from outside Odoo. It fits if you already have a source for that file.
  • You want something that sends invoices to KSeF on its own. This module has no HTTP client towards KSeF, so it does not cover that part.
  • You need to handle Offline24 and awaria cases. The module handles them with QR payloads; in offline mode, the deadline runs to the next Polish working day, with a daily reminder.
  • You run several companies in Odoo. The module stores per-company mandate-wave and legal-policy metadata, with configurable dates.
  • You want it set up for you, a version migration or historical data loaded. Configuring the module, migrating the database, importing historical data and customisation or custom development are outside the subscription, as is support for modules that are not FlexigoTech's.

What changes with and without the subscription

FA(3) validation runs on FlexigoTech Cloud and depends on the subscription. Without it, the module does not validate the FA(3) and each invoice stays Not validated. With no subscription, or with the service suspended, whatever the subscription provides stops, but your data stays in your Odoo.

With the subscription you get KSeF FA(3) Validation with its maintenance and monitoring, module updates and support with a first response within 1 working day. Payment is made from Odoo, and there is a check of the service every 6 hours plus health reports.

The local service costs €29/month or €290/year excluding VAT (Pro: €58/month or €580/year). If you buy it on flexigotech.com, the module for new Odoo versions is included with the subscription; on the Odoo App Store, each Odoo version is bought there.

What to have ready before installing it

  • A published Odoo version. The module is on Odoo Apps for 17, 18, 19 and 20.
  • Where the FA(3) comes from. From l10n_pl_edi in 18, 19 and 20, or from a file you upload; in 17, the FA(3) is uploaded ready-made from outside Odoo.
  • How you authenticate with KSeF. KSeF 2.0 offers the Trusted Profile (Podpis Zaufany), a qualified electronic signature, a KSeF token and a KSeF certificate. To request a KSeF certificate you must authenticate first, for example with Podpis Zaufany or a qualified electronic signature. In Odoo 19, l10n_pl_edi stores a KSeF Certificate on the company and uses it to authenticate with KSeF. The module keeps the inventory of certificates and tokens, plus authorisation and delegation records.
  • Third-party accounts. You contract and pay for your account on each platform, Odoo and your hosting yourself.

If you want to see which menus it adds and what each record goes through before deciding, we explain it in how the module works under the bonnet.

KSeF Dashboard in kanban, still empty, with the No data to display notice, the search box, the New button and the Dashboard, Migration, Operations and Configuration menus along the top
The KSeF Dashboard with no records yet: only the No data to display notice appears, with the Dashboard, Migration, Operations and Configuration menus at the top.

What data leaves your Odoo for FlexigoTech Cloud

This is part of the decision, especially if you handle customers' tax data. According to the listing, the following is sent:

  • The database identifier (uuid), its address (URL) and the Odoo version.
  • The FlexigoTech modules installed, with their version, and whether the database is a neutralised copy (staging or test).
  • The company name and the email of the person who accepts, with the date and version of the text accepted.
  • A public code to check that requests come from this database, and a proof that it is this database, computed on your server without sending its secret.
  • A request for its service permit every 6 hours, and the health of the service: counters and errors (type and code), without the content of your records.
  • When you use KSeF FA(3) Validation: the FA(3) XML file of each invoice you ask it to check, with the names, tax numbers, addresses, bank accounts and amounts it contains.
  • A notice when you uninstall the module.

Inside Odoo, the audit log is immutable and masks NIP, PESEL and credential payloads. For anything about your data: comercial@flexigobe.com or +34 616 809 504.

How FlexigoTech can help

FlexigoTech implements Odoo 17, 18, 19 and 20 and builds bespoke connectors and integrations. If, going through the table, you find you are missing the setup or something the module does not cover, you can approach it as an implementation or custom development project, which sits outside the module subscription. You will find the module details on its page at flexigotech.com and on the Odoo Apps listing.

Keep reading

How Poland KSeF 2.0 Validator works in Odoo: menus, scheduled action and a record's pathThe menus Poland KSeF 2.0 Validator adds to Odoo, its scheduled action, what it validates in FlexigoTech Cloud and what it leaves to l10n_pl_edi to send.
Checked in the module's source code (version 20.0) and the linked sources

Sources