Cztery sposoby na identyfikator
| Element FA(3) | Opis ze schematu | Kiedy go użyć |
|---|---|---|
NIP | „Identyfikator podatkowy NIP” | Nabywca z polskim NIP. |
KodUE + NrVatUE | „Numer Identyfikacyjny VAT kontrahenta UE” | Nabywca z numerem VAT innego kraju UE w przypadkach z ustawy o VAT. |
KodKraju + NrID | „Identyfikator podatkowy inny” | Inny identyfikator podatkowy, np. spoza UE. |
BrakID | „Podmiot nie posiada identyfikatora podatkowego lub identyfikator nie występuje na fakturze: 1- tak” | Konsument albo nabywca bez identyfikatora. |
Schemat sprawdza tylko format NIP: 10 cyfr według wzorca typu TNrNIP. Sumy kontrolnej nie sprawdza. Robi to KSeF, ale tylko na środowisku produkcyjnym, dla Podmiot1, Podmiot2, Podmiot3 i PodmiotUpowazniony. Na środowisku testowym tę walidację włącza nagłówek X-KSeF-Feature: subject-identifier-validation. Dokumentacja nie podaje, jakim kodem KSeF odrzuca błędną sumę kontrolną.

Znaczniki JST i GV
Oba są obowiązkowe w Podmiot2 i przyjmują wartość 1 albo 2:
- JST, „Znacznik jednostki podrzędnej JST.”: 1, gdy faktura dotyczy jednostki podrzędnej samorządu; wtedy trzeba wypełnić
Podmiot3z rolą 8 i podać NIP albo identyfikator wewnętrzny jednostki; - GV, „Znacznik członka grupy VAT.”: 1, gdy faktura dotyczy członka grupy VAT; wtedy
Podmiot3z rolą 10; - 2 w obu oznacza, że faktura ich nie dotyczy.
Co wpisuje Odoo 18, 19 i 20
Odoo wybiera identyfikator z numeru VAT klienta. Polski NIP trafia do NIP. KodUE i NrVatUE Odoo wpisuje tylko przy transakcjach specjalnych, czyli z etykietami podatkowymi OSS_Base, OSS_Tax, Triangular Sale, K_21 albo K_12; każdy inny zagraniczny numer idzie do KodKraju i NrID. Klient bez numeru VAT dostaje BrakID 1.
JST i GV Odoo wpisuje zawsze jako 2. Faktury dla jednostki podrzędnej samorządu albo członka grupy VAT nie da się więc z Odoo oznaczyć tak, jak tego wymaga schemat, i taka faktura nie trafi do tej jednostki przez Podmiot3.

Co sprawdzić przed wysyłką
- Numer VAT klienta: polski NIP z prefiksem PL albo bez niego (wtedy Odoo bierze kraj z karty klienta), z poprawną sumą kontrolną.
- Przy kliencie z UE: czy faktura naprawdę powinna mieć
KodUEiNrVatUE, czyli czy pozycje mają właściwy podatek. - Przy klientach z sektora publicznego: czy faktura nie powinna trafić do jednostki podrzędnej; tego Odoo nie zapisze.
Czy nasz moduł sprawdza NIP nabywcy?
Tak, częściowo. Poland KSeF 2.0 Validator przy „Mark ready for KSeF upload” liczy polską sumę kontrolną NIP klienta i, jeśli się nie zgadza, zgłasza „Partner NIP invalid” i zostawia fakturę w stanie „Manual action required”: nie przechodzi ona do „Ready to upload to KSeF”. Stosuje tę sumę do każdego numeru VAT, także zagranicznego, a zagraniczny numer prawie nigdy jej nie spełnia, więc przy kliencie z numerem VAT z innego kraju faktura zostaje w tym stanie, nawet gdy numer jest poprawny. Walidacja w FlexigoTech Cloud sprawdza plik ze schematem, a więc format, bez sumy kontrolnej.
Czytaj dalej
Sprawdzone w kodzie źródłowym modułu (wersja 20.0) i w podlinkowanych źródłach
Źródła
- 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
- Kod modułu: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati 20.0 (ba7c60f1): models/account_move.py
- Kod modułu: FlexigoTech Cloud, validacion_efactura (motor_xsd.py y reglas.json)
- Kod modułu: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati 20.0 (ba7c60f1): models/ksef_cloud.py
