Przejdź do głównej treści
KSeF 2.0 · status faktury

Kod 440 w KSeF: „Duplikat faktury”

KSeF odrzuca fakturę ze statusem 440, gdy w systemie jest już faktura tego samego sprzedawcy, tego samego rodzaju i z tym samym numerem. To jedyny kod odrzucenia, dla którego Ministerstwo Finansów opisuje dokładną regułę, więc przyczynę da się ustalić bez zgadywania.

FlexigoTech · Odpowiada: Víctor Gómez · Aktualizacja: 5 listopada 2026

Najważniejsze

Moduł
KSeF 2.0
Wersje
Odoo 17, 18, 19 i 20
Sprawdzone
w kodzie źródłowym modułu, wersja 20.0 · w źródłach podanych na końcu
Czas czytania
3 min

Kiedy KSeF uznaje fakturę za duplikat

KSeF wykrywa duplikaty globalnie, na wszystkich fakturach zapisanych w systemie. Decyduje połączenie trzech pól:

  • NIP sprzedawcy, Podmiot1:NIP;
  • rodzaj faktury, RodzajFaktury;
  • numer faktury, P_2, który według schematu FA(3) ma jednoznacznie identyfikować fakturę.

Unikalność obowiązuje przez 10 pełnych lat, liczonych od końca roku, w którym wystawiono fakturę. Liczy się zawsze NIP sprzedawcy: gdy w imieniu jednej firmy faktury wystawia kilka oddziałów albo jednostek, muszą uzgodnić numerację.

Karta kodu 440 KSeF
Kod 440 i trzy pola, po których KSeF rozpoznaje duplikat.

Co jest w odpowiedzi, a co w Odoo

W odpowiedzi KSeF status 440 ma opis „Duplikat faktury” i dwa pola w extensions: originalKsefNumber, czyli numer KSeF faktury, która już jest w systemie, oraz originalSessionReferenceNumber, czyli sesja, w której trafiła. Przykład z dokumentacji API ma w details komunikat w rodzaju „Duplikat faktury. Faktura o numerze KSeF: … została już prawidłowo przesłana do systemu w sesji: …”.

W Odoo 18, 19 i 20 moduł l10n_pl_edi ustawia „KSeF Status” na Rejected i dopisuje do historii „Status KSeF: Odrzucono (Kod: 440). Powielona faktura.” (18 i 19 po polsku) albo „KSeF Status: Rejected (Code: 440). Duplicate invoice.” (20, bez tłumaczenia). Pól extensions Odoo nie zapisuje, więc numeru KSeF oryginału w fakturze nie zobaczysz. Jako P_2 Odoo wpisuje numer faktury z Odoo.

Skąd duplikat przy fakturach z Odoo

SytuacjaCo się dzieje
Faktura trafiła już do KSeF innym kanałem, a potem wysłano ją z OdooOryginał jest w KSeF, nowa wysyłka dostaje 440.
Ten sam NIP wystawia w dwóch bazach albo firmach Odoo z identycznymi seriamiDwie różne faktury mają ten sam rodzaj i numer.
Oddziały jednej firmy prowadzą osobne numeracje, które się pokrywająKSeF liczy NIP sprzedawcy, nie oddział.

Odoo wysyła tylko faktury bez stanu KSeF. Faktury w stanie Sent albo Accepted nie da się więc przypadkiem wysłać drugi raz z tego samego Odoo.

Jak to rozwiązać

  1. Ustal, gdzie jest oryginał: numer KSeF z originalKsefNumber albo faktura o tym numerze w KSeF.
  2. Jeśli to ta sama faktura, wysłana wcześniej innym kanałem, nie wysyłaj jej znowu. Każda kolejna wysyłka pod tym numerem da 440.
  3. Jeśli to inna faktura z tym samym numerem, problem leży w numeracji: ustal z księgowością osobne serie dla każdej bazy, firmy albo oddziału z tym samym NIP.

Czy po kodzie 440 faktura jest w KSeF?

Tak, w KSeF jest faktura pierwotna, ta z originalKsefNumber. Odrzucona została tylko nowa wysyłka.

Jak długo KSeF pamięta numer faktury?

Przez 10 pełnych lat od końca roku wystawienia. Do tego czasu ten sam NIP, rodzaj i numer dadzą 440.

Schemat: co zwraca KSeF przy kodzie 440 i co pokazuje Odoo 20
Schemat na podstawie kodu l10n_pl_edi z Odoo 20 i specyfikacji API KSeF 2.9.0; skreślone jest to, czego Odoo nie zapisuje albo nie robi.

Z naszym modułem

Poland KSeF 2.0 Validator nie wysyła faktur, ale ma przycisk „Oznacz jako przyjętą przez KSeF” (w angielskim interfejsie „Mark accepted by KSeF”) dla faktury wgranej do KSeF poza Odoo, z numerem KSeF, który nadał system. Jeśli taką fakturę później wyśle jeszcze l10n_pl_edi i KSeF ją odrzuci, moduł zostawia ją jako przyjętą i dopisuje: „KSeF odrzucił ponowną wysyłkę tej faktury przez l10n_pl_edi, już przyjętej przez KSeF z numerem KSeF …: pozostaje przyjęta.”. W pozostałych przypadkach przejmuje od l10n_pl_edi stan Rejected, bez kodu 440.

Czytaj dalej

Kod 450 w KSeF: „Błąd weryfikacji semantyki dokumentu faktury”Kod 450 oznacza, że KSeF odrzucił fakturę FA(3) po sprawdzeniu treści. Gdzie jest prawdziwa przyczyna, czego nie pokazuje Odoo 18, 19 i 20 i jak wysłać fakturę ponownie.Kody 410 i 415 w KSeF: uprawnienia sprzedawcy i załącznikiKod 410 „Nieprawidłowy zakres uprawnień” i 415 „Brak możliwości wysyłania faktury z załącznikiem”: co je wywołuje według testów MF i co sprawdzić w Odoo 18, 19 i 20.Statusy techniczne faktury w KSeF: 550, 500, 405, 430 i 435Statusy faktury KSeF niezależne od jej treści: 550 „Operacja została anulowana przez system”, 500, 405, 430 i 435. Co robi z nimi Odoo i czemu 550 zostaje w Sent.
Sprawdzone w kodzie źródłowym modułu (wersja 20.0) i w podlinkowanych źródłach

Źródła