Quatre façons d'identifier l'acheteur
| Élément FA(3) | Description dans le schéma | Quand l'utiliser |
|---|---|---|
NIP | « Identyfikator podatkowy NIP » (identifiant fiscal NIP) | Acheteur avec un NIP polonais. |
KodUE + NrVatUE | « Numer Identyfikacyjny VAT kontrahenta UE » (numéro de TVA de la contrepartie dans l'UE) | Acheteur avec un numéro de TVA d'un autre pays de l'UE, dans les cas prévus par la loi sur la TVA. |
KodKraju + NrID | « Identyfikator podatkowy inny » (autre identifiant fiscal) | Autre identifiant fiscal, par exemple hors UE. |
BrakID | « Podmiot nie posiada identyfikatora podatkowego lub identyfikator nie występuje na fakturze: 1- tak » (pas d'identifiant fiscal, ou il n'apparaît pas sur la facture) | Consommateur ou acheteur sans identifiant. |
Le schéma vérifie seulement le format du NIP : 10 chiffres selon le motif TNrNIP. Il ne contrôle pas la clé de contrôle. KSeF la contrôle, mais uniquement en production, pour Podmiot1, Podmiot2, Podmiot3 et PodmiotUpowazniony. Dans l'environnement de test, l'en-tête X-KSeF-Feature: subject-identifier-validation active cette validation. La documentation ne précise pas avec quel code KSeF rejette une clé de contrôle erronée.

Les marqueurs JST et GV
Les deux sont obligatoires dans Podmiot2 et prennent la valeur 1 ou 2 :
- JST, « Znacznik jednostki podrzędnej JST. » (marqueur d'unité subordonnée d'une collectivité locale) : 1 si la facture concerne une unité subordonnée d'une collectivité locale ;
Podmiot3doit alors être renseigné avec le rôle 8 et le NIP ou l'identifiant interne de l'unité ; - GV, « Znacznik członka grupy VAT. » (marqueur de membre d'un groupe de TVA) : 1 si la facture concerne un membre d'un groupe de TVA ;
Podmiot3avec le rôle 10 ; - 2 dans l'un ou l'autre cas signifie que la facture ne les concerne pas.
Ce qu'écrivent Odoo 18, 19 et 20
Odoo choisit l'identifiant à partir du numéro de TVA du client. Un NIP polonais va dans NIP. Odoo n'écrit KodUE et NrVatUE que pour les opérations spéciales, celles portant les étiquettes de taxe OSS_Base, OSS_Tax, Triangular Sale, K_21 ou K_12 ; tout autre numéro étranger va dans KodKraju et NrID. Un client sans numéro de TVA reçoit BrakID 1.
Odoo écrit toujours JST et GV à 2. Une facture destinée à une unité subordonnée d'une collectivité locale, ou à un membre d'un groupe de TVA, ne peut donc pas être marquée depuis Odoo comme l'exige le schéma, et elle n'atteindra pas cette unité via Podmiot3.

Ce qu'il faut vérifier avant l'envoi
- Le numéro de TVA du client : un NIP polonais avec ou sans le préfixe PL (sans lui, Odoo prend le pays de la fiche client), avec une clé de contrôle correcte.
- Pour un client de l'UE : si la facture doit vraiment porter
KodUEetNrVatUE, c'est-à-dire si les lignes ont la bonne taxe. - Pour les clients du secteur public : si la facture doit parvenir à une unité subordonnée ; Odoo ne l'écrit pas.
Notre module vérifie-t-il le NIP de l'acheteur ?
En partie. Lorsque vous utilisez « Mark ready for KSeF upload », Poland KSeF 2.0 Validator calcule la clé de contrôle polonaise du NIP du client et, si elle ne correspond pas, signale « Partner NIP invalid » et laisse la facture en « Manual action required » : elle ne passe pas à « Ready to upload to KSeF ». Il applique cette clé à tout numéro de TVA, y compris étranger, et un numéro étranger la passe presque jamais ; pour un client avec un numéro de TVA d'un autre pays, la facture reste donc bloquée même si le numéro est correct. La validation de FlexigoTech Cloud contrôle le fichier par rapport au schéma, c'est-à-dire le format, sans la clé de contrôle.
À lire aussi
Vérifié dans le code du module (version 20.0) et dans les sources citées
Sources
- github.com/CIRFMF/ksef-api/blob/ce3670ea042de380039de4c5849fd6455811b292/faktury/schemy/FA
- github.com/CIRFMF/ksef-api/blob/ce3670ea042de380039de4c5849fd6455811b292/faktury/schemy/FA
- github.com/CIRFMF/ksef-api/blob/ce3670ea042de380039de4c5849fd6455811b292/faktury/schemy/FA
- github.com/CIRFMF/ksef-api/blob/ce3670ea042de380039de4c5849fd6455811b292/faktury/schemy/FA
- github.com/CIRFMF/ksef-api/blob/ce3670ea042de380039de4c5849fd6455811b292/faktury/schemy/FA
- github.com/CIRFMF/ksef-api/blob/ce3670ea042de380039de4c5849fd6455811b292/faktury/weryfikac
- github.com/CIRFMF/ksef-api/blob/ce3670ea042de380039de4c5849fd6455811b292/api-changelog.md#
- github.com/odoo/odoo/blob/2982b5f44af03fae6a9888f20632c1cc19f623ba/addons/l10n_pl_edi/data
- github.com/odoo/odoo/blob/4d2d4b5895db70596863df941d9a1f0beeb117f8/addons/l10n_pl_edi/data
- github.com/odoo/odoo/blob/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/l10n_pl_edi/data
- github.com/odoo/odoo/blob/2982b5f44af03fae6a9888f20632c1cc19f623ba/addons/l10n_pl_edi/data
- github.com/odoo/odoo/blob/4d2d4b5895db70596863df941d9a1f0beeb117f8/addons/l10n_pl_edi/data
- github.com/odoo/odoo/blob/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/l10n_pl_edi/data
- Code du module : flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati 20.0 (ba7c60f1): models/account_move.py
- Code du module : FlexigoTech Cloud, validacion_efactura (motor_xsd.py y reglas.json)
- Code du module : flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati 20.0 (ba7c60f1): models/ksef_cloud.py
