Quattro modi per identificare l'acquirente
| Elemento FA(3) | Descrizione nello schema | Quando si usa |
|---|---|---|
NIP | «Identyfikator podatkowy NIP» (identificativo fiscale NIP) | Acquirente con NIP polacco. |
KodUE + NrVatUE | «Numer Identyfikacyjny VAT kontrahenta UE» (numero di partita IVA della controparte nell'UE) | Acquirente con numero di partita IVA di un altro paese UE, nei casi previsti dalla legge IVA. |
KodKraju + NrID | «Identyfikator podatkowy inny» (altro identificativo fiscale) | Altro identificativo fiscale, per esempio da fuori UE. |
BrakID | «Podmiot nie posiada identyfikatora podatkowego lub identyfikator nie występuje na fakturze: 1- tak» (soggetto privo di identificativo fiscale, o identificativo non presente in fattura) | Consumatore o acquirente senza identificativo. |
Lo schema controlla solo il formato del NIP: 10 cifre secondo il modello TNrNIP. La somma di controllo non la verifica. La verifica KSeF, ma solo in produzione, per Podmiot1, Podmiot2, Podmiot3 e PodmiotUpowazniony. Nell'ambiente di test questa validazione si attiva con l'intestazione X-KSeF-Feature: subject-identifier-validation. La documentazione non dice con quale codice KSeF rifiuta una somma di controllo errata.

Le marcature JST e GV
Entrambe sono obbligatorie in Podmiot2 e valgono 1 o 2:
- JST, «Znacznik jednostki podrzędnej JST.» (marcatore di unità subordinata di un ente locale): 1 se la fattura riguarda un'unità subordinata di un comune o di un altro ente locale; in tal caso bisogna compilare
Podmiot3con il ruolo 8 e il NIP o l'identificativo interno dell'unità; - GV, «Znacznik członka grupy VAT.» (marcatore di membro di un gruppo IVA): 1 se la fattura riguarda un membro di un gruppo IVA; in tal caso
Podmiot3con il ruolo 10; - 2 in entrambi i casi significa che la fattura non li riguarda.
Cosa scrivono Odoo 18, 19 e 20
Odoo sceglie l'identificativo a partire dal numero di partita IVA del cliente. Un NIP polacco va in NIP. Odoo scrive KodUE e NrVatUE solo nelle operazioni speciali, quelle con i tag fiscali OSS_Base, OSS_Tax, Triangular Sale, K_21 o K_12; ogni altro numero estero va in KodKraju e NrID. Un cliente senza partita IVA riceve BrakID 1.
JST e GV, Odoo li scrive sempre come 2. Quindi una fattura destinata a un'unità subordinata di un ente locale, o a un membro di un gruppo IVA, non si può marcare da Odoo come richiede lo schema, e non arriverà a quell'unità tramite Podmiot3.

Cosa controllare prima dell'invio
- Il numero di partita IVA del cliente: un NIP polacco con o senza il prefisso PL (senza, Odoo prende il paese dalla scheda cliente), con una somma di controllo corretta.
- Con un cliente UE: se la fattura deve davvero riportare
KodUEeNrVatUE, cioè se le righe hanno l'imposta giusta. - Con clienti della pubblica amministrazione: se la fattura deve arrivare a un'unità subordinata; questo Odoo non lo scrive.
Il nostro modulo verifica il NIP dell'acquirente?
In parte. Usando «Mark ready for KSeF upload», Poland KSeF 2.0 Validator calcola la somma di controllo polacca del NIP del cliente e, se non torna, segnala «Partner NIP invalid» e lascia la fattura in «Manual action required»: non passa a «Ready to upload to KSeF». Applica il controllo a qualsiasi partita IVA, anche estera, e un numero straniero quasi mai lo supera, quindi con un cliente con partita IVA di un altro paese la fattura resta lì anche se il numero è corretto. La validazione di FlexigoTech Cloud controlla il file rispetto allo schema, cioè il formato, senza la somma di controllo.
Continua a leggere
Verificato nel codice del modulo (versione 20.0) e nelle fonti collegate
Fonti
- 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
- Codice del modulo: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati 20.0 (ba7c60f1): models/account_move.py
- Codice del modulo: FlexigoTech Cloud, validacion_efactura (motor_xsd.py y reglas.json)
- Codice del modulo: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati 20.0 (ba7c60f1): models/ksef_cloud.py
