Wanneer KSeF een factuur als duplicaat beschouwt
KSeF zoekt naar duplicaten in alle facturen die in het systeem zijn opgeslagen. Drie velden bepalen dat:
- het NIP van de verkoper,
Podmiot1:NIP; - het factuurtype,
RodzajFaktury; - het factuurnummer,
P_2, dat volgens het FA(3)-schema de factuur ondubbelzinnig moet identificeren.
De uniciteit geldt 10 volle jaren, geteld vanaf het einde van het jaar waarin de factuur is uitgereikt. Het NIP van de verkoper telt altijd mee: als meerdere vestigingen of eenheden namens één bedrijf factureren, moeten zij afspraken maken over de nummering.

Wat het antwoord bevat en wat Odoo bewaart
In het antwoord van KSeF heeft status 440 de omschrijving «Duplikat faktury» (dubbele factuur) en twee velden in extensions: originalKsefNumber, het KSeF-nummer van de factuur die al in het systeem staat, en originalSessionReferenceNumber, de sessie waarin die binnenkwam. Het voorbeeld in de API-documentatie zet in details een bericht als «Duplikat faktury. Faktura o numerze KSeF: … została już prawidłowo przesłana do systemu w sesji: …».
In Odoo 18, 19 en 20 zet de module l10n_pl_edi «KSeF Status» op Rejected en voegt hij aan de historiek toe: «KSeF Status: Rejected (Code: 440). Duplicate invoice.» (in het Pools op 18 en 19: «Status KSeF: Odrzucono (Kod: 440). Powielona faktura.»). Odoo bewaart extensions niet, dus het KSeF-nummer van het origineel staat niet op de factuur. Als P_2 schrijft Odoo het factuurnummer uit Odoo weg.
Waar een duplicaat vandaan komt bij Odoo-facturen
| Situatie | Wat er gebeurt |
|---|---|
| De factuur is al via een ander kanaal in KSeF terechtgekomen en daarna vanuit Odoo verstuurd | Het origineel staat in KSeF; de nieuwe verzending krijgt 440. |
| Hetzelfde NIP factureert vanuit twee Odoo-databases of bedrijven met identieke reeksen | Twee verschillende facturen delen type en nummer. |
| Vestigingen van één bedrijf houden eigen nummering aan die elkaar overlappen | KSeF telt het NIP van de verkoper, niet de vestiging. |
Odoo verstuurt alleen facturen zonder KSeF-status. Een factuur in Sent of Accepted kan niet per ongeluk nog eens vanuit dezelfde Odoo worden verstuurd.
Zo los je het op
- Zoek waar het origineel staat: het KSeF-nummer in
originalKsefNumber, of de factuur met dat nummer in KSeF. - Gaat het om dezelfde factuur, eerder via een ander kanaal verstuurd, stuur hem dan niet opnieuw. Elke nieuwe verzending onder dat nummer krijgt 440.
- Gaat het om een andere factuur met hetzelfde nummer, dan ligt het probleem bij de nummering: spreek met je accountant aparte reeksen af voor elke database, elk bedrijf of elke vestiging met hetzelfde NIP.
Staat de factuur na een 440 in KSeF?
Ja. KSeF bewaart de originele factuur, die van originalKsefNumber. Alleen de nieuwe verzending is afgewezen.
Hoe lang onthoudt KSeF een factuurnummer?
10 volle jaren vanaf het einde van het jaar van uitgifte. Tot die tijd geven hetzelfde NIP, type en nummer 440.

Met onze module
Poland KSeF 2.0 Validator verstuurt geen facturen, maar heeft de knop «Mark accepted by KSeF» voor een factuur die buiten Odoo naar KSeF is geüpload, met het KSeF-nummer dat het systeem gaf. Als l10n_pl_edi die factuur daarna ook verstuurt en KSeF die weigert, laat de module hem op Accepted staan en voegt hij toe: "KSeF rejected the new sending of this invoice by l10n_pl_edi, already accepted by KSeF with KSeF number …: it stays Accepted.". In alle andere gevallen neemt hij de status Rejected van l10n_pl_edi over, zonder de code 440.
Lees verder
Gecontroleerd in de broncode van de module (versie 20.0) en in de gelinkte bronnen
Bronnen
- Broncode van de module: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati 20.0 (ba7c60f1): i18n/pl.po
- github.com/CIRFMF/ksef-api/blob/ce3670ea042de380039de4c5849fd6455811b292/open-api.json
- github.com/CIRFMF/ksef-api/blob/ce3670ea042de380039de4c5849fd6455811b292/faktury/weryfikac
- github.com/CIRFMF/ksef-client-csharp/blob/a66cbc669814e6c2a615748a13a0a04a650ba04f/KSeF.Cl
- github.com/CIRFMF/ksef-api/blob/ce3670ea042de380039de4c5849fd6455811b292/faktury/schemy/FA
- github.com/odoo/odoo/blob/2982b5f44af03fae6a9888f20632c1cc19f623ba/addons/l10n_pl_edi/mode
- github.com/odoo/odoo/blob/4d2d4b5895db70596863df941d9a1f0beeb117f8/addons/l10n_pl_edi/mode
- github.com/odoo/odoo/blob/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/l10n_pl_edi/mode
- github.com/odoo/odoo/blob/2982b5f44af03fae6a9888f20632c1cc19f623ba/addons/l10n_pl_edi/i18n
- github.com/odoo/odoo/blob/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/l10n_pl_edi/i18n
- github.com/odoo/odoo/blob/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/l10n_pl_edi/data
- github.com/odoo/odoo/blob/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/l10n_pl_edi/mode
- github.com/odoo/odoo/blob/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/l10n_pl_edi/mode
- github.com/odoo/odoo/blob/2fec20391a8a61ea3a3bf15e9f24d59dba910a8d/addons/l10n_pl_edi/mode
- Broncode van de module: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati 20.0 (ba7c60f1): models/account_move.py
- Broncode van de module: flexigo_poland_ksef_2_0_e_invoice_connector_and_migrati 20.0 (ba7c60f1): views/account_move_views.xml
