Magazyn firmy logistycznej kończy pracę dopiero wtedy, gdy towar wyjedzie, a usługa zostanie rozliczona. WMS w firmie logistycznej obsługuje więc dwa obiegi danych poza samą halą: jeden prowadzi do transportu i spedycji, a drugi do dokumentu rozliczeniowego dla klienta.
Podział zapasów między wielu zleceniodawców oraz paletomiejsca i poziomy usług opisuje artykuł o WMS dla operatora 3PL, więc tutaj pominięto je na rzecz transportu i rozliczania przesyłek. Punktem wspólnym obu obiegów jest przesyłka, a cały tekst pokazuje, jak jeden identyfikator prowadzi ją od kompletacji do faktury.
WMS w firmie logistycznej między magazynem a transportem
Wspólnym obiektem obu obiegów jest przesyłka. W magazynie powstaje jako zestaw skompletowanych palet i kartonów, w transporcie jako pozycja na liście przewozowej, a w rozliczeniu jako pozycja faktury. Jeśli te trzy zapisy nie mają wspólnego identyfikatora, każde uzgodnienie zamienia się w ręczne szukanie po adresie odbiorcy i dacie.
| Obieg | Kierunek | Dane | Odbiorca |
|---|---|---|---|
| Zlecenie wysyłki | WMS do TMS lub spedycji | adres, waga, wymiary, liczba jednostek, numery SSCC | dyspozytor i przewoźnik |
| Potwierdzenie odbioru | TMS do WMS | numer listu przewozowego, godzina odbioru | magazyn i klient operatora |
| Status dostawy | TMS do WMS | w drodze, doręczono, zwrot | klient operatora |
| Zdarzenie rozliczeniowe | WMS do modułu rozliczeń | kod usługi, ilość, data, właściciel towaru | dział rozliczeń |
Reguła: każda przesyłka ma jeden identyfikator używany w WMS, w systemie transportowym i w rozliczeniu. Bez niego uzgodnienie faktury wymaga ręcznego szukania.
Dla operatora logistycznego, który zarabia na usłudze, a nie na towarze, ta spójność ma bezpośredni wymiar finansowy. Charakterystykę operatora logistycznego opisuje osobna strona, a sposoby wymiany danych z innymi systemami omawia artykuł o integracji WMS z ERP.
Zlecenie wysyłki dla spedycji
System WMS przekazuje dane o skompletowanych zamówieniach do modułu spedycyjnego albo do zewnętrznego systemu zarządzania transportem (TMS). Dzięki temu awizacja wysyłki i dobór przewoźnika odbywają się bez ręcznego przepisywania adresów i wagi. Komplet danych, którego potrzebuje spedycja, jest niewielki, lecz musi być wiarygodny: waga i wymiary pochodzą z zapisów magazynu, a nie z deklaracji zleceniodawcy.
Przykład poniżej pokazuje zlecenie wysyłki jako komunikat JSON. Pola i wartości są poglądowe, a rzeczywisty format zależy od systemu odbiorcy:
{
"shipmentId": "SHP-2026-000123",
"pickupWindow": {
"from": "2026-10-02T14:00:00+02:00",
"to": "2026-10-02T16:00:00+02:00"
},
"consignee": { "name": "Odbiorca Przykładowy", "city": "Poznań", "postalCode": "60-001" },
"units": [
{ "sscc": "012345670000000121", "weightKg": 412.5, "heightCm": 150 },
{ "sscc": "012345670000000138", "weightKg": 399.9, "heightCm": 145 }
],
"totalWeightKg": 812.4
}
Godziny w komunikacie zapisuje się ze strefą czasową albo w UTC, bo okno odbioru w innym kraju lub przy zmianie czasu z letniego na zimowy inaczej przesunie się w każdym z systemów. W bazie SQL Server odpowiada temu typ datetimeoffset, który przechowuje przesunięcie razem z czasem, dzięki czemu porównanie znaczników z dwóch systemów nie zależy od ustawień serwera.

Numer SSCC jednoznacznie identyfikuje jednostkę logistyczną, więc ten sam kod widnieje na etykiecie palety, w komunikacie do przewoźnika i w dokumencie wydania. Budowę numeru opisuje strona GS1 Polska o SSCC, a zasady etykiety zawiera tekst o etykietach logistycznych GS1.
Wybór przewoźnika i etykieta transportowa
Kiedy zamówienie opuszcza magazyn, wybór opcji dostawy nie powinien angażować pracownika. WMS podpowiada przewoźnika i usługę na podstawie wagi i gabarytu oraz miejsca docelowego, a etykiety i listy przewozowe powstają bezpośrednio z poziomu systemu. Przy dużej liczbie drobnych przesyłek wychodzących codziennie ogranicza to pomyłki, bo adres odbiorcy pochodzi z zamówienia, a nie z ręcznego przepisania.
Od strony technicznej wymaga to połączenia z interfejsem API przewoźnika albo z platformą spedycyjną, która pośredniczy w komunikacji z wieloma przewoźnikami naraz. WMS wysyła dane przesyłki, a w odpowiedzi dostaje numer listu przewozowego i etykietę do wydruku na drukarce etykiet.
Konsolidacja przesyłek jadących w jednym kierunku
Firma logistyczna obsługująca kilku przewoźników potrzebuje narzędzia do konsolidacji przesyłek jadących w podobnym kierunku, niezależnie od tego, do którego zleceniodawcy towar należy. WMS grupuje gotowe zamówienia według trasy albo strefy dostawy, co pozwala pełniej wykorzystać przestrzeń ładunkową i ograniczyć liczbę kursów. Dane o wadze i wymiarach oraz liczbie opakowań trafiają do przewoźnika automatycznie, więc palet nie trzeba ważyć ani opisywać przy rampie.
Konsolidacja transportu nie łączy dokumentów. Każda paleta zachowuje swojego właściciela i własny dokument wydania, a wspólny jest tylko pojazd. Koszt kursu dzieli się później między właścicieli według przyjętego klucza, na przykład liczby palet albo masy, co prowadzi do sekcji o rozliczeniach. Harmonogram odjazdów i okna odbioru opisuje artykuł o planowaniu wysyłek z magazynu, a integrację z przewoźnikami kurierskimi tekst o firmach kurierskich.
Potwierdzenia z transportu i status przesyłki
Kierunek powrotny jest równie ważny jak samo zlecenie. System transportowy odsyła numer listu przewozowego oraz godzinę odbioru, a potem kolejne statusy, a WMS wiąże je z dokumentem wydania. Praca z modułem spedycyjnym polega głównie na rejestracji numerów listów przewozowych, powiązanych automatycznie z dokumentami wydania z magazynu, co ogranicza pomyłki przy adresowaniu.
| Status przesyłki | Źródło zdarzenia | Skutek w WMS |
|---|---|---|
| Gotowa do odbioru | WMS po zamknięciu kompletacji | zlecenie wysyłki trafia do systemu transportowego |
| Odebrana przez przewoźnika | system transportowy lub kierowca | zamknięcie dokumentu wydania i rozliczenie załadunku |
| W drodze | system transportowy | status widoczny dla klienta operatora |
| Doręczona | system transportowy | zamknięcie przesyłki, koniec liczenia czasu dostawy |
| Zwrot lub niedoręczona | system transportowy | zlecenie przyjęcia zwrotu w magazynie |
Status przesyłki ma jedno źródło, którym jest system transportowy, a WMS tylko go odbiera. Gdyby oba systemy zmieniały ten sam status, po awarii łącza nie dałoby się ustalić, który zapis jest właściwy. Komunikaty z transportu mogą dotrzeć dwa razy albo w odwrotnej kolejności, więc WMS przyjmuje status tylko wtedy, gdy jest późniejszy od zapisanego:
UPDATE dbo.Shipments
SET Status = @NewStatus,
StatusAt = @EventAt
WHERE ShipmentId = @ShipmentId
AND StatusAt < @EventAt;
Powtórzony komunikat nie zmieni żadnego wiersza, a spóźniony, ale starszy od zapisanego, zostanie pominięty. Sposób integracji systemów transportowych z magazynowymi omawia artykuł o integracji TMS z ERP i WMS. Przykładem systemu klasy TMS jest Linkway.TMS.
Wyjątki wymagają osobnych reguł. Gdy część zamówienia nie jest gotowa, WMS dzieli je na dwie przesyłki, a każda dostaje własny identyfikator, własny list przewozowy i własne zdarzenie rozliczeniowe. Zwrot albo niedoręczenie uruchamia zlecenie przyjęcia zwrotu w magazynie, a zdarzenie rozliczeniowe powstaje dopiero po przyjęciu towaru na stan.
Okna załadunku i postój pojazdu
Pojazd, który przyjeżdża po towar, jest kolejnym uczestnikiem obiegu. Awizacja ustala godzinę podstawienia, a magazyn dobiera do niej czas zakończenia kompletacji. Znaczniki czasu, które powstają przy okazji, służą później harmonogramowi, a także rozliczeniu postoju.
| Znacznik | Kto go zapisuje | Do czego służy |
|---|---|---|
| Awizowane okno | przewoźnik lub dyspozytor | punkt odniesienia dla planu kompletacji |
| Przyjazd na bramę | portier lub system awizacji | początek liczenia oczekiwania |
| Podstawienie pod rampę | operator rampy | koniec oczekiwania, początek pracy magazynu |
| Początek i koniec załadunku | skan przy rampie | czas załadunku i rozliczenie palet |
| Wyjazd | portier lub system awizacji | zamknięcie wizyty pojazdu |
Czas oczekiwania pojazdu wynika z różnicy między przyjazdem a podstawieniem pod rampę, a czas załadunku z różnicy między początkiem i końcem pracy przy rampie. Umowy z przewoźnikami i zleceniodawcami bywają zawierane z limitem bezpłatnego postoju, a nadwyżkę wycenia się za rozpoczętą godzinę. Ponieważ wszystkie znaczniki pochodzą z zapisów systemowych, spór o to, kto zawinił, sprowadza się do odczytania czasów.
Proces po stronie przewoźnika opisuje strona o awizacji transportu, a moduł do zarządzania oknami i placem strona o awizacjach w Studio VSS.net. Przegląd rozwiązań do awizowania znajduje się w serwisie awizacje SoftwareStudio.
Rozliczanie usług operatora ze zdarzeń
Operator sprzedaje usługę, więc rozliczenie zaczyna się od katalogu usług, a nie od faktury. Każde zdarzenie w magazynie, które da się wycenić, dostaje kod usługi i ilość, a także znacznik czasu, a jego cena wynika z cennika przypisanego do zleceniodawcy. Składowanie i paletomiejsca opisuje artykuł o kontraktowej logistyce magazynowej, a tutaj mowa o usługach związanych z wysyłką.
| Kod usługi | Zdarzenie w WMS | Jednostka | Źródło danych |
|---|---|---|---|
| Wydanie przesyłki | zamknięcie dokumentu WZ dla przesyłki | przesyłka | dokument wydania |
| Załadunek palet | potwierdzenie załadunku pojazdu | paleta | skan przy rampie |
| Etykietowanie logistyczne | wydruk etykiety SSCC | etykieta | zdarzenie wydruku |
| Postój ponad limit | różnica znaczników czasu pojazdu | rozpoczęta godzina | dane awizacji |
| Refaktura transportu | koszt kursu przypisany do właściciela | list przewozowy | system transportowy i faktura przewoźnika |
Katalog zawiera dwa rodzaje zdarzeń, które wycenia się inaczej:
- Zdarzenia jednostkowe - przesyłka lub paleta, a także etykieta, liczone sztukami i mnożone przez stawkę z cennika.
- Zdarzenia czasowe - postój lub praca dodatkowa, wymagające w cenniku zasady zaokrąglania, na przykład do rozpoczętej godziny.
Zapytanie poniżej wycenia zdarzenia z jednego miesiąca. Cennik ma daty obowiązywania, a cena jest dobierana według daty zdarzenia. Nazwy tabel i kolumn są przykładowe:
SELECT e.OwnerId,
t.ServiceCode,
SUM(e.Quantity) AS Quantity,
SUM(e.Quantity * t.UnitPrice) AS Amount
FROM dbo.BillableEvents AS e
JOIN dbo.Tariff AS t
ON t.OwnerId = e.OwnerId
AND t.ServiceCode = e.ServiceCode
AND e.OccurredAt >= t.ValidFrom
AND (t.ValidTo IS NULL OR e.OccurredAt < t.ValidTo)
WHERE e.OccurredAt >= '2026-09-01'
AND e.OccurredAt < '2026-10-01'
GROUP BY e.OwnerId, t.ServiceCode
ORDER BY e.OwnerId, t.ServiceCode;
Reguła: cenę dobiera się według daty zdarzenia, a nie daty wystawienia faktury. Zmiana cennika w połowie miesiąca dzieli okres na dwie części, a każde zdarzenie dostaje stawkę obowiązującą w jego dniu.

Faktura przewoźnika przychodzi z opóźnieniem, więc refaktura kosztu kursu trafia zwykle do okresu, w którym faktura została zaksięgowana, a nie do miesiąca wysyłki. Zdarzenie rozliczeniowe zachowuje jednak datę wydania, co pozwala w raporcie dla klienta pokazać przesyłkę w miesiącu, w którym wyjechała, i osobno oznaczyć dopisany później koszt transportu.
Wszystkie zdarzenia pochodzą z tego samego systemu, w którym rejestruje się operacje magazynowe, więc liczba przesyłek i palet na fakturze zawsze odpowiada wykonanej pracy, a nie osobnemu zestawieniu przygotowanemu ręcznie. Modele rozliczeń kosztów magazynowych, od stawek stałych po transakcyjne, opisuje strona o rozliczaniu kosztów magazynowych.
Uzgadnianie kosztów przewoźnika z fakturą
Faktura przewoźnika przychodzi po fakturze operatora albo po kilku tygodniach. Operator porównuje ją z przesyłkami zapisanymi w WMS i z listami przewozowymi w systemie transportowym. Uzgodnienie idzie po numerze przesyłki, a rozbieżności mają zwykle powtarzalne przyczyny.
| Element | Zapis w WMS | Zapis u przewoźnika | Typowa rozbieżność |
|---|---|---|---|
| Waga | waga z ważenia lub z kartoteki | waga taryfikowana | przewoźnik stosuje większą z wag: rzeczywistej i objętościowej |
| Liczba jednostek | liczba palet i kartonów z dokumentu wydania | liczba jednostek na liście przewozowym | przesyłka podzielona na dwa listy |
| Cena | stawka z umowy ze zleceniodawcą | stawka z cennika przewoźnika | dopłata do stawki podstawowej |
| Termin | godzina odbioru z rampy | godzina doręczenia | opóźnienie ważne dla roszczenia |
Różnica wagi jest najczęstszym źródłem sporów. Waga objętościowa lekkiego towaru w dużych kartonach bywa wyższa od rzeczywistej, a przelicznik zależy od przewoźnika. Wymiary zapisane w kartotece pozwalają policzyć wagę taryfikowaną z góry i oszacować koszt przed wysyłką, a nie po otrzymaniu faktury.
Jeśli umowa przewiduje refakturę, koszt kursu przypisuje się zleceniodawcy przez numer listu przewozowego. Przy transporcie skonsolidowanym koszt dzieli się według klucza zapisanego w umowie i w konfiguracji, żeby ten sam kurs nie został policzony dwa razy.
Widok klienta operatora
Klient operatora otrzymuje dostęp przez przeglądarkę, bez instalowania oprogramowania po swojej stronie. Dobrze zaprojektowany widok zawiera cztery elementy:
- Status wysyłek - aktualny status każdej przesyłki, z numerem listu przewozowego i linkiem do śledzenia.
- Dokumenty wydania - dokument WZ i potwierdzenie odbioru dostępne bez telefonu do magazynu.
- Pozycje rozliczenia - każda pozycja z odnośnikiem do zdarzeń, czyli numerów przesyłek i dat.
- Porównanie z poziomem usług - zapisany czas realizacji zleceń zestawiony z wartością ustaloną w umowie.
Widok dla kontrahentów opisuje artykuł o module internetowym dla kontrahentów. Spokojną współpracę zapewnia to, że numer na fakturze prowadzi do zdarzenia w magazynie, a zdarzenie do dokumentu wydania. Spór kończy się wtedy na kilku kliknięciach zamiast na wymianie arkuszy.


