Skip to main content
KSeF 2.0

How Poland KSeF 2.0 Validator works in Odoo: menus, scheduled action and a record's path

Poland KSeF 2.0 Validator adds a KSeF menu to Odoo with a dashboard, migration, operations and configuration, plus a scheduled action, KSeF: session maintenance, which runs every 5 minutes. It validates the FA(3) in FlexigoTech Cloud and keeps a signed report, but sends nothing to KSeF: the actual submission is done by Odoo's l10n_pl_edi.

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
5 min

It validates and prepares; sending is l10n_pl_edi's job

The first thing to get straight is who does what. The module validates and prepares, and it has no HTTP client towards KSeF. The actual submission is done by l10n_pl_edi, the Odoo Community module that sends to KSeF and exists in Odoo 18, 19 and 20 (it does not exist in Odoo 17).

That shapes how it works on each version: on 18 to 20, the module validates the FA(3) that l10n_pl_edi generates or has already sent; on 17, the FA(3) is uploaded ready-made from outside Odoo. The module is published on Odoo Apps for 17.0, 18.0, 19.0 and 20.0.

FA(3) validation runs in FlexigoTech Cloud with the subscription. The Odoo Apps listing flags this in its own section, Before you buy: this app uses a paid external service. If you are still weighing up whether it suits you, we cover that separately in whether Poland KSeF 2.0 Validator fits your company.

The menus that appear under KSeF

Once installed, you get a KSeF root menu laid out like this:

  • KSeF › Dashboard
  • KSeF › Migration
  • KSeF › Operations, with KSeF › Operations › Submission Queue and KSeF › Operations › Inbound Invoices
  • KSeF › Configuration, with KSeF › Configuration › Compliance Profile, KSeF › Configuration › FA(3) Fields, KSeF › Configuration › Error Codes and KSeF › Configuration › API Sessions

The KSeF › Dashboard is a kanban view; the screenshot shows one company's card.

KSeF Dashboard kanban view with the Wawel Digital sp. z o.o. card
The card brings together the wave, the go-live date, readiness, accepted and rejected, the offline backlog and the queue.

The module versus l10n_pl_edi, piece by piece

This table compares what each one does according to its documentation.

AspectOdoo's l10n_pl_ediPoland KSeF 2.0 Validator
Where it isOdoo Community 18, 19 and 20; not in 17Odoo Apps for 17.0, 18.0, 19.0 and 20.0
Actual submission to KSeFDone by itNo HTTP client towards KSeF
FA(3) on Odoo 18 to 20Generates and sends itValidates the one l10n_pl_edi generates or has already sent
FA(3) on Odoo 17The module does not existUploaded ready-made from outside Odoo
FA(3) validation-In FlexigoTech Cloud, with a signed report
CredentialsOn Odoo 19 stores a KSeF Certificate on the company and authenticates with itHas a KSeF Credential (certificate / token) model
Scheduled actionsOn Odoo 19, an action renews the access tokens of each company with a certificateKSeF: session maintenance, every 5 minutes

In practice they are not alternatives; they complement each other. On 18 to 20, sending is done by l10n_pl_edi, and the validator checks the FA(3) that module generates or has already sent. On 17 there is no l10n_pl_edi, and the validator works with the FA(3) uploaded ready-made from outside Odoo.

The module's credentials have their own list.

List of KSeF credentials with KSeF certificates, a qualified seal and a token
Each credential shows company, type, environment, validity date, days remaining and expiry status; two rows are highlighted in yellow.

With the service active and without it

Because validation depends on FlexigoTech Cloud, the module behaves differently depending on the subscription status.

AspectActive subscriptionNo subscription or service suspended
FA(3) validationRuns in FlexigoTech Cloud and keeps a signed reportStops; the invoice stays not validated
What the subscription providesAvailableStops
Your dataIn your OdooStays in your Odoo

The module also has a consent record, Consent to validate FA(3) files in FlexigoTech Cloud. With the subscription, the module for new Odoo versions is included if you bought it on flexigotech.com; on the Odoo App Store, each Odoo version is bought there. The local service costs €29/month or €290/year excluding VAT, and the Pro plan €58/month or €580/year excluding VAT.

What an invoice goes through inside the module

On Odoo 18 to 20, l10n_pl_edi generates the FA(3) and does the actual submission to KSeF; the validator validates in FlexigoTech Cloud the FA(3) that l10n_pl_edi has generated or already sent, and keeps the signed report. If the service is unavailable, the invoice stays not validated.

The module defines KSeF Submission Queue Item records, and the KSeF › Operations › Submission Queue menu gives you the queue list.

Submission Queue list with six Wawel Digital sp. z o.o. records
Columns for move, mode, status, attempts and deadline, with statuses such as Offline pendiente, Accepted and Ready to upload to KSeF.

In offline mode, the deadline runs to the next Polish working day, with a daily reminder. The module includes a wizard called KSeF Offline/Emergency Mark Wizard.

Around that path, the module defines other records with these names:

  • KSeF Inbound Invoice, alongside the KSeF › Operations › Inbound Invoices menu
  • KSeF Immutable Audit Log
  • KSeF API Error Code, alongside the KSeF › Configuration › Error Codes menu
  • FA(3) Mandatory Field Reference
  • KSeF Compliance Profile
  • KSeF Authorization / Delegation
  • KSeF Migration Validator Wizard, KSeF Migration Validation Run, KSeF Validation Result and KSeF Validation Issue
  • KSeF Compliance Export Wizard

The scheduled action that runs on its own

The module's documentation lists the KSeF: session maintenance action, active and set to run every 5 minutes. In the configuration you also have the KSeF › Configuration › API Sessions menu, and the module stores KSeF API Session records.

Do not mix it up with l10n_pl_edi's action on Odoo 19, which renews the access tokens of each company with a certificate: that one belongs to Odoo, not to the validator.

If you see both actions in your database, each belongs to a different module.

How FlexigoTech can help

At FlexigoTech we implement Odoo 17, 18, 19 and 20 and build bespoke connectors and integrations. If you want the validator to work alongside l10n_pl_edi on your version, or need to validate on Odoo 17 the FA(3) you produce outside Odoo, you will find the details and purchase options on the module page and its Odoo Apps listing.

Keep reading

Poland KSeF 2.0 Validator: what it covers, what it doesn't and whether it fits your OdooWhat Poland KSeF 2.0 Validator covers and what it does not, what you need before installing it and which Odoo version it fits.
Checked in the module's source code (version 20.0) and the linked sources

Sources

  • Module source code: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati 20.0 (ba7c60f1): views/ksef_menus.xml
  • Module source code: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati 20.0 (ba7c60f1): data/ksef_cron.xml
  • Module source code: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati 20.0 (ba7c60f1): static/description/index.html
  • Module source code: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati 20.0 (ba7c60f1): models/ksef_api_session.py
  • Module source code: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati 20.0 (ba7c60f1): models/ksef_audit_log.py
  • Module source code: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati 20.0 (ba7c60f1): models/ksef_authorization.py
  • Module source code: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati 20.0 (ba7c60f1): models/ksef_cloud.py
  • Module source code: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati 20.0 (ba7c60f1): models/ksef_compliance_profile.py
  • Module source code: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati 20.0 (ba7c60f1): models/ksef_credential.py
  • Module source code: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati 20.0 (ba7c60f1): models/ksef_error_code.py
  • Module source code: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati 20.0 (ba7c60f1): models/ksef_fa3_field.py
  • Module source code: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati 20.0 (ba7c60f1): models/ksef_inbound_invoice.py
  • Module source code: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati 20.0 (ba7c60f1): models/ksef_queue_item.py
  • Module source code: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati 20.0 (ba7c60f1): models/ksef_session.py
  • Module source code: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati 20.0 (ba7c60f1): models/ksef_validation.py
  • Module source code: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati 20.0 (ba7c60f1): wizard/ksef_cloud_consent.py
  • Module source code: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati 20.0 (ba7c60f1): wizard/ksef_export_wizard.py
  • Module source code: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati 20.0 (ba7c60f1): wizard/ksef_migration_wizard.py
  • Module source code: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati 20.0 (ba7c60f1): wizard/ksef_offline_mark_wizard.py
  • Module source code: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati 20.0 (ba7c60f1): wizards/ksef_migration_validator.py
  • apps.odoo.com/apps/modules/20.0/flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati
  • github.com/odoo/odoo/tree/18.0/addons/l10n_pl_edi
  • Module source code: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati (cbca26e): models/account_move.py
  • Module source code: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati (cbca26e): models/ksef_session.py
  • Module source code: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati (cbca26e): models/ksef_tools.py
  • Module source code: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati (cbca26e): models/ksef_cloud.py
  • github.com/odoo/odoo/blob/19.0/addons/l10n_pl_edi/models/res_company.py
  • flexigotech.com/en/services.html
  • flexigotech.com/precios.html