Polish E-Invoicing FA(3)

l10n_pl_edi
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/19.0/l10n_pl_edi
VERSION
VERSION 0.1.0
CATEGORY
CATEGORYAccounting/Localizations
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORSOdoo S.A.
MAINTAINERS
MAINTAINERSOdoo S.A.
COMMITTERS
COMMITTERSOdoo Translation Bot, william-andre, Thomas Becquevort (thbe), Paolo Gatti, Claire (clbr), Léo Gizard, AhmedElemary57, Ahmed Abdelaziz Hasaneen, utma-odoo, sawer, Mongy (abmn), Amr Elkhatieb, rapa, Mikolaj (komi), Oskar Wielgos, pkri-odoo, steji
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 14:10:16
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - l10n_pl
    - base_iban
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - html_editor
    - uom
    - analytic
    - portal
    - http_routing
    - auth_signup
    - digest
    - resource
    - base_vat
    - account_edi_ubl_cii
    - certificate
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Export FA(3) compliant XML invoices and prepare for integration with KSeF.

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
l10n_pl_edi.fa3_xml_template Polish FA(3) XML Template ir.ui.view qweb New
report_invoice_document report_invoice_document ir.ui.view qweb Inherits account.report_invoice_document
res_config_settings_view_form_l10n_pl_edi res.config.settings.view.form.inherit.l10n.pl.edi res.config.settings xpath Inherits account.res_config_settings_view_form
view_move_form_l10n_pl_edi account.move.form.l10n_pl_edi account.move xpath Inherits account.view_move_form
Models touched (5)

New fields (10)
  • l10n_pl_edi_attachment_file Binary
    attachment=True copy=False
  • l10n_pl_edi_attachment_id Many2one → ir.attachment
    comodel_name='ir.attachment' compute=<expr> depends=['l10n_pl_edi_attachment_file'] string='KSeF Attachment'
  • l10n_pl_edi_header Html
    copy=False help='User description of the current state, with hints to make the flow progress' readonly=True
  • l10n_pl_edi_number Char
    copy=False index=True readonly=True string='KSeF Number'
  • l10n_pl_edi_ref Char
    copy=False readonly=True string='KSeF Reference Number'
  • l10n_pl_edi_register Boolean
    related='company_id.l10n_pl_edi_register'
  • l10n_pl_edi_session_id Char
    copy=False readonly=True string='KSeF Session Number used for sending'
  • l10n_pl_edi_status Selection
    copy=False readonly=True string='KSeF Status' args: [('sent', 'Sent (In Progress)'), ('accepted', 'Accepted'), ('rejected', 'Rejected'), ('fetch_ready', 'Fetch Ready'), ('fetched', 'Fetched'), ('fetch_failed', 'Fetch Failed')]
  • l10n_pl_edi_upo_file Binary
    attachment=True copy=False
  • l10n_pl_edi_upo_id Many2one → ir.attachment
    comodel_name='ir.attachment' compute=<expr> depends=['l10n_pl_edi_upo_file'] string='UPO Attachment'
Public methods (4)
  • action_l10n_pl_edi_get_invoice_UPO(self)
  • action_l10n_pl_edi_update_invoice_status(self)
  • button_draft(self)
    When going from canceled => draft, we ensure to clear the edi fields so that the invoice can be resent if required.
  • l10n_pl_edi_get_ksef_bill_vals_from_xml(self, xml_content)
    @api.model

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (7)
  • l10n_pl_edi_access_token Char
    copy=False groups='base.group_system' readonly=True args: 'KSeF Token'
  • l10n_pl_edi_certificate Many2one → certificate.certificate
    groups='base.group_system' store=True args: 'certificate.certificate', 'KSeF Certificate'
  • l10n_pl_edi_refresh_token Char
    copy=False groups='base.group_system' readonly=True args: 'KSeF Token Expiration'
  • l10n_pl_edi_register Boolean
    compute='_compute_l10n_pl_edi_register' compute_sudo=True args: 'KSeF Integration Enabled'
  • l10n_pl_edi_session_id Char
    groups='base.group_system' readonly=True args: 'Reference number'
  • l10n_pl_edi_session_iv Binary
    groups='base.group_system' readonly=True args: 'Session iv'
  • l10n_pl_edi_session_key Binary
    groups='base.group_system' readonly=True args: 'Session key'
Public methods (0)

No public methods.

New fields (3)
  • l10n_pl_edi_access_token Char
    readonly=True related='company_id.l10n_pl_edi_access_token' args: 'KSeF Access Token'
  • l10n_pl_edi_certificate Many2one → certificate.certificate
    compute='_compute_l10n_pl_edi_certificate' inverse='_set_l10n_pl_edi_certificate' readonly=False args: 'certificate.certificate', 'KSeF Certificate'
  • l10n_pl_edi_register Boolean
    readonly=False related='company_id.l10n_pl_edi_register' args: 'Allow KSeF integration'
Public methods (0)

No public methods.

New fields (1)
  • invoice_edi_format Selection
    selection_add=[('fa3_pl', 'Polish FA3')]
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/18.0/l10n_pl_edi
VERSION
VERSION 0.1.0
CATEGORY
CATEGORYAccounting/Localizations
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, william-andre, Thomas Becquevort (thbe), Paolo Gatti, Claire (clbr), Léo Gizard, AhmedElemary57, Ahmed Abdelaziz Hasaneen, utma-odoo, sawer, Mongy (abmn), Amr Elkhatieb, rapa, Mikolaj (komi), Oskar Wielgos, pkri-odoo, steji
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:25:52
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - l10n_pl
    - base_iban
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - html_editor
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - base_vat
    - certificate
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Export FA(3) compliant XML invoices and prepare for integration with KSeF.

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
l10n_pl_edi.fa3_xml_template Polish FA(3) XML Template ir.ui.view qweb New
report_invoice_document report_invoice_document ir.ui.view qweb Inherits account.report_invoice_document
res_config_settings_view_form_l10n_pl_edi res.config.settings.view.form.inherit.l10n.pl.edi res.config.settings xpath Inherits account.res_config_settings_view_form
view_move_form_l10n_pl_edi account.move.form.l10n_pl_edi account.move xpath Inherits account.view_move_form
Models touched (5)

New fields (10)
  • l10n_pl_edi_attachment_file Binary
    attachment=True copy=False
  • l10n_pl_edi_attachment_id Many2one → ir.attachment
    comodel_name='ir.attachment' compute=<expr> depends=['l10n_pl_edi_attachment_file'] string='KSeF Attachment'
  • l10n_pl_edi_header Html
    copy=False help='User description of the current state, with hints to make the flow progress' readonly=True
  • l10n_pl_edi_number Char
    copy=False index=True readonly=True string='KSeF Number'
  • l10n_pl_edi_ref Char
    copy=False readonly=True string='KSeF Reference Number'
  • l10n_pl_edi_register Boolean
    related='company_id.l10n_pl_edi_register'
  • l10n_pl_edi_session_id Char
    copy=False readonly=True string='KSeF Session Number used for sending'
  • l10n_pl_edi_status Selection
    copy=False readonly=True string='KSeF Status' args: [('sent', 'Sent (In Progress)'), ('accepted', 'Accepted'), ('rejected', 'Rejected'), ('fetch_ready', 'Fetch Ready'), ('fetched', 'Fetched'), ('fetch_failed', 'Fetch Failed')]
  • l10n_pl_edi_upo_file Binary
    attachment=True copy=False
  • l10n_pl_edi_upo_id Many2one → ir.attachment
    comodel_name='ir.attachment' compute=<expr> depends=['l10n_pl_edi_upo_file'] string='UPO Attachment'
Public methods (4)
  • action_l10n_pl_edi_get_invoice_UPO(self)
  • action_l10n_pl_edi_update_invoice_status(self)
  • button_draft(self)
    When going from canceled => draft, we ensure to clear the edi fields so that the invoice can be resent if required.
  • l10n_pl_edi_get_ksef_bill_vals_from_xml(self, xml_content)
    @api.model

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (7)
  • l10n_pl_edi_access_token Char
    copy=False groups='base.group_system' readonly=True args: 'KSeF Token'
  • l10n_pl_edi_certificate Many2one → certificate.certificate
    groups='base.group_system' store=True args: 'certificate.certificate', 'KSeF Certificate'
  • l10n_pl_edi_refresh_token Char
    copy=False groups='base.group_system' readonly=True args: 'KSeF Token Expiration'
  • l10n_pl_edi_register Boolean
    compute='_compute_l10n_pl_edi_register' compute_sudo=True args: 'KSeF Integration Enabled'
  • l10n_pl_edi_session_id Char
    groups='base.group_system' readonly=True args: 'Reference number'
  • l10n_pl_edi_session_iv Binary
    groups='base.group_system' readonly=True args: 'Session iv'
  • l10n_pl_edi_session_key Binary
    groups='base.group_system' readonly=True args: 'Session key'
Public methods (0)

No public methods.

New fields (3)
  • l10n_pl_edi_access_token Char
    readonly=True related='company_id.l10n_pl_edi_access_token' args: 'KSeF Access Token'
  • l10n_pl_edi_certificate Many2one → certificate.certificate
    compute='_compute_l10n_pl_edi_certificate' inverse='_set_l10n_pl_edi_certificate' readonly=False args: 'certificate.certificate', 'KSeF Certificate'
  • l10n_pl_edi_register Boolean
    readonly=False related='company_id.l10n_pl_edi_register' args: 'Allow KSeF integration'
Public methods (0)

No public methods.

New fields (1)
  • invoice_edi_format Selection
    selection_add=[('fa3_pl', 'Polish FA3')]
Public methods (0)

No public methods.