Wszystkie artykuły

KajoData / Praca i rozwój

KPI w logistyce: czas, terminowość, zwroty i koszt

Jedna kolejka zamówień pokazuje, jak liczyć czas, realizację i koszt bez ukrywania opóźnień. Rozdzielam zamówienia, paczki, sztuki i dostępny zapas.

Kajo RudzińskiOpublikowano Aktualizacja 11 min czytania

Magazyn z paczkami, rampą i samochodem oraz osobne miejsce oczekiwania z klepsydrą, w granatowo-żółtym pixel art.

Klient czeka na całe zamówienie, a dashboard pokazuje, że magazyn wysłał już większość sztuk. Obie informacje mogą być prawdziwe. Problem zaczyna się wtedy, gdy udział wysłanych produktów przedstawiamy jako udział zadowolonych klientów albo średni czas zakończonych dostaw traktujemy jako pełny obraz kolejki.

W logistyce zacząłbym od odtworzenia drogi jednego zamówienia. Kiedy je przyjęliśmy, co obiecaliśmy, ile towaru mieliśmy, kiedy wysłaliśmy poszczególne paczki i kiedy dotarły? Dopiero potem policzyłbym Return Rate, Lead Time, Order Cycle Time, Fill Rate i Cost per Shipment. Poniżej pokazuję te wskaźniki na wspólnym, fikcyjnym przykładzie, razem z terminowością i zapasem.

Najpierw ustal jednostkę i granice procesu

Zamówienie, pozycja zamówienia, sztuka produktu i przesyłka są różnymi jednostkami. Jedno zamówienie może mieć kilka pozycji i zostać wysłane w kilku paczkach. Przesyłka może też zawierać wiele sztuk. Zapisz, co reprezentuje każdy wiersz, zanim połączysz dane sklepu, magazynu i przewoźnika. Inaczej łatwo policzyć koszt paczki kilka razy.

Nazwy wskaźników bywają używane w różnych znaczeniach. Słownik APQC opisuje cykl zamówienia klienta od złożenia do dostawy, a pick-to-ship jako węższy odcinek od uruchomienia kompletacji do wysyłki. Dlatego pod hasłem OCT nie zakładam automatycznie samego czasu pracy magazyniera. Każdy odcinek potrzebuje jawnego początku i końca.

Uzgodnij też, czy mierzysz godziny kalendarzowe, dni robocze czy czas aktywnej obsługi. Weekend może należeć do oczekiwania klienta, ale nie do harmonogramu konkretnego magazynu. Nie usuwaj takich okresów bez opisu. Ten sam proces można oglądać na kilka sposobów, o ile odbiorca wie, który zegar widzi.

Dane przykładowego magazynu

Przyjmujemy sześć zamówień 1 października 2026 o 10:00 UTC. Analizę zamykamy 7 października o 10:00 UTC. Wszystkie daty poniżej oznaczają tę samą godzinę i strefę, więc różnice są pełnymi dobami. Każde zamówienie dotyczy jednego SKU mierzonego w sztukach. Nie ma anulowań ani zmiany pierwotnej obietnicy dostawy.

Pierwszy przydział zapasu następuje przy przyjęciu zamówień. To osobne zdarzenie od fizycznej wysyłki. Dla uproszczenia analizujemy jeden produkt i jeden magazyn, bez mieszania sztuk z kilogramami lub wartościami pieniężnymi.

ID Sztuki, pierwszy przydział i termin dostawy
L1 10; przydział 10; termin 2026-10-03
L2 10; przydział 6; termin 2026-10-03
L3 5; przydział 5; termin 2026-10-03
L4 5; przydział 0; termin 2026-10-03
L5 10; przydział 10; termin 2026-10-06
L6 10; przydział 0; termin 2026-10-09

Realizację zapisujemy na poziomie przesyłki. Wszystkie pięć paczek ma potwierdzone doręczenie do daty odcięcia. L4 i L6 nie zostały jeszcze wysłane. Oznacza to znany stan otwarty, a nie brak danych o statusie.

Przesyłka i zamówienie Sztuki, wysyłka, dostawa, przewóz
P1, L1 10; 2026-10-02; 2026-10-03; 12 PLN
P2, L2 6; 2026-10-02; 2026-10-03; 10 PLN
P3, L3 5; 2026-10-02; 2026-10-04; 8 PLN
P4, L5 10; 2026-10-03; 2026-10-06; 12 PLN
P5, L2 4; 2026-10-04; 2026-10-05; 8 PLN

Początkowy zapas dostępny do sprzedaży wynosił 31 sztuk. Kolejne cztery przyjęto przed wysłaniem P5. Do odcięcia wróciły też dwie sztuki z L1, pozostające w kontroli jakości. Ich transport zwrotny kosztował 5 PLN. Koszty opakowań pięciu wysyłek wyniosły 10 PLN, kompletacji 20 PLN, a przypisana część kosztu magazynu 20 PLN. Wszystkie kwoty są fikcyjne, w jednej walucie i bez podatków.

Lead Time: od zamówienia do pełnej dostawy

W tym przykładzie Lead Time oznacza czas od przyjęcia zamówienia do doręczenia całej zamówionej ilości. L1 potrzebowało dwóch dni, L2 czterech, L3 trzech, a L5 pięciu. Średnia dla czterech zakończonych zamówień wynosi 3,5 dnia. L2 kończy się dopiero po P5, ponieważ pierwsza paczka nie zawierała wszystkich sztuk.

L4 i L6 nie mają jeszcze końcowego Lead Time. Nie wpisujemy im zera ani daty odcięcia jako udawanej dostawy. Oba mają natomiast sześć dni wieku w kolejce. Obok średniej zakończonych zleceń pokazujemy więc dwa otwarte zamówienia oraz ich wiek. Dzięki temu odbiorca widzi również pracę, która nie zdążyła wejść do średniej.

Gdy na dashboardzie średni czas maleje, sprawdź, czy szybciej realizujemy podobne zamówienia, czy po prostu kończymy łatwe przypadki, zostawiając trudne otwarte. Przy większych danych przydadzą się mediana i percentyle, ale żadna statystyka zakończonych spraw nie zastąpi informacji o aktualnej kolejce. Najpierw określ populację, dopiero potem dobierz podsumowanie.

Segmentuj wyniki według rzeczywistych warunków: sposobu dostawy, obiecanego terminu, magazynu, regionu lub typu produktu. Dłuższa trasa może uzasadniać inną obietnicę, ale nie dowodzi automatycznie złej pracy lokalnego zespołu. Nie wyjaśniaj całego kraju jednym geograficznym stereotypem. Potrzebujesz danych o trasach, odcinkach i warunkach obsługi.

Order Cycle Time: wskaż dokładnie badany odcinek

Na potrzeby analizy magazynu policzymy czas od przyjęcia zamówienia do wysłania ostatniej potrzebnej paczki. Nazwę go czasem do kompletnej wysyłki. To wybrany odcinek procesu, a nie uniwersalna definicja OCT. Zawiera także oczekiwanie na towar i przekazanie przewoźnikowi, więc nie oznacza samego aktywnego pakowania.

L1 ma jeden dzień, L2 trzy dni, L3 jeden dzień, a L5 dwa dni. Średnia dla tych czterech zamówień wynosi 1,75 dnia. Gdybyśmy zakończyli pomiar L2 na pierwszej paczce, pokazalibyśmy jeden dzień zamiast trzech i ukrylibyśmy oczekiwanie na brakujące sztuki. L4 i L6 nadal pozostają otwarte także na tym etapie.

W rzeczywistym magazynie rozdzieliłbym oczekiwanie na dostępność, kolejkę do kompletacji, kompletację, pakowanie i przekazanie przewoźnikowi. Taki podział wymaga odpowiednich zdarzeń. Jeżeli masz tylko datę zamówienia i etykiety, nie możesz uczciwie przypisać całego odstępu pracy pakowaczy. Wydrukowanie etykiety również nie musi oznaczać fizycznego odbioru paczki.

Podczas szczytu sprzedaży obserwuj jednocześnie napływ zleceń, liczbę zakończonych i kolejkę. Sam większy wolumen nie dowodzi wykładniczego wzrostu czasu. Sprawdź konkretne ograniczenie i porównywalne zmiany. Propozycja dodatkowego stanowiska ma sens wtedy, gdy wiesz, że to ten etap ogranicza przepływ, a nie na przykład brak towaru.

Terminowość: uwzględnij zamówienia już wymagalne

U nas terminowo i w całości oznacza doręczenie całej ilości najpóźniej w pierwotnie obiecanym terminie. Do mianownika bierzemy zamówienia, których termin minął lub właśnie nastąpił do daty odcięcia. To L1, L2, L3, L4 i L5. L6 ma termin późniejszy, więc jeszcze nie podlega tej ocenie.

Warunek spełniają L1 i L5. Wynik wynosi 2 / 5, czyli 40%. L2 miało część sztuk na czas, lecz resztę po terminie. L3 dotarło późno, a L4 nadal czeka. Gdybyśmy zostawili wyłącznie zakończone zamówienia, dostalibyśmy 2 / 4, czyli 50%, pomijając otwarte opóźnienie. Ta różnica wynika z selekcji danych.

Nie przesuwaj pierwotnego terminu wstecznie, aby poprawić wynik. Jeśli klient uzgodnił nowy termin, przechowuj obie wersje i powód zmiany. Możesz raportować obie perspektywy, ale nie nadpisuj historii obietnicy. Samo wydłużenie terminu może poprawić procent terminowości bez skrócenia czasu oczekiwania klienta.

Ta miara obejmuje termin i ilość. Nie nazywam jej pełnym wskaźnikiem idealnego zamówienia, ponieważ nie sprawdziliśmy poprawności dokumentów ani stanu towaru przy dostawie. Warto rozszerzyć kontrolę, gdy takie dane są dostępne. Ważne, żeby nazwa karty nie obiecywała oceny większego zakresu niż rzeczywiście policzony.

Fill Rate: sztuki i całe zamówienia

Fill Rate wymaga dopisania jednostki i momentu oceny. W naszym wariancie patrzymy na pierwszy przydział zapasu przy przyjęciu zamówień. Zapotrzebowanie wyniosło 50 sztuk, a od razu przydzielono 31. Wskaźnik pokrycia zapotrzebowania sztukami wynosi 31 / 50, czyli 62%. To jawnie zdefiniowany wariant przydziału, a nie procent doręczeń.

Pełny pierwszy przydział otrzymały L1, L3 i L5: trzy z sześciu zamówień, czyli 50%. L2 dostało część ilości, a L4 i L6 nic. Udział kompletnych zamówień odpowiada na inne pytanie niż udział sztuk. APQC rozróżnia miary realizacji i dostępności, które warto oglądać razem z zapasem.

Pozostałe 19 sztuk stanowi początkowo niepokryte zapotrzebowanie. Późniejsze przyjęcie czterech sztuk umożliwia dokończenie L2, ale nie zmienia historycznego pierwszego przydziału. Do daty odcięcia doręczono 35 z 50 sztuk, czyli 70%. Ten trzeci wynik opisuje realizację do określonego momentu, dlatego dostaje osobną etykietę.

Przy wielu produktach sprawdź wynik dla SKU i ich grup. Wysoki agregat może współistnieć z brakami konkretnego towaru. Nie zakładaj jednak, że każda brakująca sztuka oznacza utraconą sprzedaż: klient może czekać, zmienić zamówienie albo zrezygnować. Skutek trzeba ustalić na podstawie dalszych zdarzeń, zamiast mnożyć zaległość przez cenę i nazywać ją stratą.

Zapas dostępny i towar zwrócony

Bilans fizyczny naszego magazynu to 31 sztuk początkowych plus cztery przyjęte, minus 35 wysłanych, plus dwie zwrócone. Na miejscu są dwie sztuki. Obie pozostają w kontroli jakości, więc zapas dostępny do nowej sprzedaży wynosi zero. Fizyczna obecność produktu nie wystarcza do uznania go za gotowy do ponownej wysyłki.

Otwarte zapotrzebowanie wynosi 15 sztuk: pięć z L4 i dziesięć z L6. L4 jest już cztery dni po obietnicy, a L6 jeszcze przed terminem. Rozdzielenie tych przypadków pomaga ustalić kolejność działań. Sam łączny stan zaległości nie mówi, z którym klientem trzeba pilnie wyjaśnić sytuację i jaki termin można wiarygodnie zaproponować.

W większym modelu oddziel stan fizyczny, rezerwacje, blokady jakościowe i potwierdzone przyszłe przyjęcia. Nie dodawaj planowanego transportu do towaru już dostępnego bez wyraźnej etykiety. Z kolei ujemny stan wymaga wyjaśnienia kolejności zdarzeń lub korekty ewidencji. Nie zastępuj go automatycznie zerem, bo możesz ukryć problem źródłowy.

Dwa kartony z podobnym przedmiotem pokazują różną ilość pustego miejsca; obok są waga, lupa i osobna taca zwrotów.

Return Rate: zwroty wymagają własnego okna

Do odcięcia wróciły dwie z 35 doręczonych sztuk, więc zaobserwowany wskaźnik zwrotów ilościowych wynosi około 5,71%. Zwrot dotyczy jednego z czterech doręczonych w całości zamówień, czyli 25%. Obie liczby są poprawne dla swoich definicji. Nie wolno zastępować jednej drugą ani interpretować procentu sztuk jako procentu utraconego przychodu.

To bieżący obraz tej samej grupy dostaw, nie ostateczny wskaźnik po pełnym okresie obserwacji. Paczki dostarczone później miały mniej czasu na zwrot. Przy porównywaniu grup ustal jednakową długość okna od dostawy. Nie dziel wszystkich zwrotów otrzymanych w tym tygodniu przez wszystkie wysyłki z tego tygodnia, jeśli zwroty dotyczą wcześniejszych dostaw.

Zapisz, czy liczysz zgłoszenie zwrotu, przyjęcie towaru czy zwrot pieniędzy. To różne zdarzenia. Przyczyny analizuj z obsługą klienta i kontrolą jakości, uwzględniając braki w kodach powodów. Wysoki wskaźnik może wskazać temat do sprawdzenia, ale sam nie dowodzi wadliwej partii ani nietrafionej kampanii. Potrzebujesz dalszych danych.

Cost per Shipment: koszt czego dokładnie

Przewóz pięciu paczek kosztował łącznie 50 PLN. Sam transport na przesyłkę wynosi więc 10 PLN. Po dodaniu opakowań 10 PLN, kompletacji 20 PLN i przypisanego kosztu magazynu 20 PLN otrzymujemy 100 PLN, czyli 20 PLN na paczkę. Zakres kosztu i sposób przypisania zapisujemy obok miary.

Te same 100 PLN podzielone przez cztery obsłużone zamówienia dają 25 PLN na zamówienie. L2 wymagało dwóch przesyłek, dlatego mianowniki są różne. Koszt transportu zwrotnego 5 PLN pokazujemy osobno, poza kosztem wysyłek do klientów. Można zbudować szerszy koszt obsługi, ale trzeba konsekwentnie określić, które zdarzenia i wydatki obejmuje.

Gabaryty mogą wpływać na naliczenie przewozu. DHL Express opisuje porównanie masy rzeczywistej i objętościowej, z wykorzystaniem większej wartości. Sprawdź warunki konkretnej usługi i umowy. Nie przenoś jednego przelicznika na wszystkie formy transportu ani nie zakładaj, że największym kosztem każdego magazynu jest puste miejsce w kartonie.

Przy zmianie opakowania sprawdź również uszkodzenia, czas pakowania i reklamacje. Tańszy karton nie oznacza niższego całkowitego kosztu obsługi, jeżeli pogorszy inne etapy. Ja zacząłbym od porównania podobnych przesyłek i ograniczonego testu z jasnym zakresem. Bez danych o skutkach nie obiecywałbym oszczędności dla całej operacji.

Sprawdź dane i wybierz następny krok

Porównuj raporty z tym samym odcięciem

Raport przewoźnika może zostać dostarczony później niż zdarzenie, które opisuje. Przechowuj czas zdarzenia oraz czas otrzymania informacji. Wtedy potrafisz wyjaśnić, dlaczego wczorajszy obraz kolejki zmienił się po uzupełnieniu danych. Nie traktuj opóźnionego komunikatu jako nowej dostawy dzisiaj, jeśli faktyczne doręczenie nastąpiło wcześniej.

Przy codziennym przeglądzie wybierz stałą godzinę odcięcia i pokaż świeżość poszczególnych źródeł. Jeżeli jeden przewoźnik nie dosłał danych, zaznacz zakres niepewności. Porównanie aktualnego magazynu z nieaktualnym transportem może wskazać pozorną zaległość, której nie ma. Taki przypadek wymaga kontroli danych przed rozmową o efektywności zespołu.

Gdy zmieniasz regułę przypisania kosztów albo definicję kompletnej dostawy, zapisz wersję i datę obowiązywania. Przy porównaniu okresów zastosuj tę samą regułę lub pokaż granicę zmiany. Nie nadpisuj starego wyniku bez możliwości wyjaśnienia różnicy. Odbiorca powinien rozumieć, czy zmienił się proces, dane wejściowe czy sposób obliczenia wskaźnika.

Przed publikacją kontroluję kolejność zdarzeń, unikalność przesyłek i zgodność ilości z zamówieniem. Doręczenie przed wysyłką wymaga wyjaśnienia, podobnie jak suma paczek przekraczająca zamówioną ilość. Duplikat komunikatu od przewoźnika nie tworzy kolejnej paczki. Brak potwierdzenia doręczenia odróżniam od potwierdzonego braku doręczenia, a brak mianownika od wyniku zero.

Łączenie kosztów z pozycjami zamówień sprawdzam przez uzgodnienie sum przed połączeniem i po nim. Pomaga podejście z poradnika o SQL dla analityka. Relację sprzedaży, zwrotów i kosztów rozwijam też w artykule o KPI e-commerce. W obu przypadkach definicja jest częścią wyniku.

W naszym przykładzie najpierw wyjaśniłbym obsługę spóźnionego L4 i dostępność towaru dla otwartych zleceń. Potem przyjrzałbym się przyczynom częściowej realizacji L2 oraz opóźnienia L3. To propozycja kolejności analizy, nie gotowy plan dla rzeczywistego magazynu. Dobry raport wskazuje konkretne przypadki do rozmowy i pozwala sprawdzić skutki późniejszej decyzji.

Materiał wideo

W filmie omawiam wskaźniki logistyczne. Powyższy przykład uzupełnia je o częściowe dostawy, otwarte zamówienia, datę odcięcia i jawny zakres kosztów.

Najważniejsze w pigułce

Czy otwarte zamówienie ma Lead Time równy zero?

Nie. Końcowy czas nie jest jeszcze znany. Pokaż wiek otwartego zlecenia, a w terminowości uwzględnij je, gdy minął jego termin.

Dlaczego Fill Rate może mieć różne wartości?

Może mierzyć sztuki, pozycje albo całe zamówienia oraz różne momenty realizacji. W przykładzie pierwszy przydział pokrywa 62% sztuk, ale 50% całych zamówień.

Czy koszt paczki jest kosztem zamówienia?

Nie zawsze. Jedno zamówienie może wymagać kilku paczek. Zdefiniuj mianownik, zakres kosztów i sposób traktowania transportu zwrotnego.

Przy pracy nad artykułem użyto w zautomatyzowany sposób sztucznej inteligencji. Jeśli też chcesz tak umieć, sprawdź ten projekt.

Kajo Rudziński

Newsletter KajoData

Zostańmy w kontakcie.

Piszę o analizie danych, uczeniu się i zmianie pracy. Dzielę się tym, co pomaga mi ogarniać technologię i zawodowe decyzje. Jeśli lubisz ten sposób myślenia, zapraszam do mojego newslettera.