Przejdź do treści
Integracje 7 min czytania

Integracja z kurierami i brokerami - DHL, InPost, GLS, Furgonetka

Sklep B2B bez automatycznej integracji z przewoźnikami to zespół logistyki ręcznie kopiujący adresy, generujący etykiety w panelach kurierów i mailujący listy przewozowe do magazynu. Przy 50 zamówieniach dziennie zajmują tym dwie osoby na pełen etat. Przy 500 - czterech i tak nie nadąża. Dobrze zaimplementowane integracje z dwoma-trzema kurierami plus broker do edge case-ów obsługują 1000+ zamówień dziennie bez powiększania zespołu. Pułapką dla większości polskich sklepów jest decyzja "ile" - chęć dania klientowi ośmiu opcji w checkoucie kończy się chaosem, w którym nikt nie wie, ile kosztuje wysyłka i który kurier ma najlepsze stawki. Krótkie zasady, których trzymam się przy projektowaniu logistyki w sklepie B2B, omawiam niżej.

Jakub Owsianka Autor
Zaktualizowano:
Okladka artykulu: Integracja z kurierami i brokerami - DHL, InPost, GLS, Furgonetka
Okladka artykulu: Integracja z kurierami i brokerami - DHL, InPost, GLS, Furgonetka
Spis treści (6)

Bezpośrednio do kuriera vs broker

Pierwsza decyzja architektoniczna w logistyce sklepu B2B to wybór, czy integrujesz się bezpośrednio z każdym kurierem (DHL, InPost, GLS, DPD - każde własne API, własna autoryzacja, własny format danych), czy idziesz przez brokera (Furgonetka, Apaczka, BaseLinker), który konsoliduje wszystkie te API w jeden interfejs i sprzedaje ci "hurtowo".

Bezpośrednia integracja opłaca się przy realnym wolumenie. Powyżej 500 paczek miesięcznie kurierzy negocjują stawki kontraktowe, które są znacząco lepsze niż te, do których brokerzy mają dostęp. Bezpośrednio też potrzebujesz, jeśli sklep ma specjalistyczne wymagania - palety, ładunki niestandardowe, międzynarodowe ATB - bo brokerzy zwykle nie obsługują tych usług równie dobrze. Bezpośrednio kontrolujesz pełen flow, włącznie z integracją z WMS-em magazynu, co dla sklepów z dojrzałą logistyką jest istotne.

Broker ma sens dla mniejszych sklepów i w trybie eksperymentów. Poniżej 200 paczek miesięcznie własne stawki kontraktowe i tak nie są warte negocjacji - margines, który urywa broker, ginie w prowizji, którą i tak byś zapłacił kurierowi. Broker pozwala wymieniać kurierów bez zmiany kodu sklepu - jeśli InPost podniesie stawki, klikasz w panelu Furgonetki "wyłącz", włączasz DPD, kod sklepu nic nie wie. Plus pełen serwis: rozliczenia, reklamacje, support to broker, nie ty.

W praktyce dla średniej hurtowni B2B z 300-1000 paczek miesięcznie polecam model hybrydowy. Bezpośrednie integracje z dwoma-trzema głównymi kurierami (zwykle DPD plus InPost plus DHL na zagranicę), broker (Furgonetka) jako fallback dla edge case-ów i awarii. Najlepsze stawki na głównych kanałach, elastyczność na całej reszcie.

Stawki kontraktowe vs cennik publiczny

Cennik publiczny ze strony kuriera jest dla startów i nikogo poważnego. Ilustracyjne liczby z DPD: paczka do 20 kg w Polsce kosztuje publicznie 18-22 zł. Stawka kontraktowa dla średniego sklepu z 500 paczkami miesięcznie schodzi do 8-12 zł. Dla dużego sklepu z 5000+ paczkami miesięcznie - 5-8 zł.

Różnica to są realne pieniądze. Dla sklepu z 1000 zamówień miesięcznie 12 zł vs 6 zł to oszczędność 6 tys. zł miesięcznie, czyli 72 tys. zł rocznie. To koszt jednego juniora w zespole, którego można za to zatrudnić - albo pieniądze, których nie wydajesz.

Strategia negocjacji, której używam, ma pięć kroków. Audyt aktualnego stanu: ile paczek, średni rozmiar, kierunki krajowe i zagraniczne, procent zwrotów (zwroty są drogie i kurier nie wlicza ich w cenniku domyślnie). Pierwsza oferta od kuriera jest zawsze gorsza niż to, co realnie da się wynegocjować - więc negocjuj, nie podpisuj od razu. Konkurencyjne oferty od dwóch-trzech kurierów to dźwignia - każdy z nich wie, że konkuruje, stawki spadają. Aneksy okresowe raz w roku: wolumen rósł, masz dane do następnej rundy. Bundle różnych usług: kurier daje lepszą stawkę za "paczki plus paletowe plus zwroty" niż za samą jedną usługę.

W API ważne detale. Stawki kontraktowe są w API kuriera dla zalogowanego klienta automatycznie - nie musisz nic robić, autoryzacja kontem firmowym wystarcza. U brokera widzisz "stawki Furgonetka" zaokrąglone w górę o ich marżę (typowo 5-15% na wierzchu kontraktowej stawki kuriera). Negocjacja z brokerem jest możliwa dla większego wolumenu, ale trudniejsza niż z kurierem bezpośrednio.

BaseLinker w sklepie B2B - broker z najszerszym ekosystemem w polskim B2B.

Generowanie etykiet i protokołów odbioru

Etykieta to naklejka na paczkę z barcodem i adresem. Protokół odbioru to lista wszystkich paczek, które kurier odebrał z twojego magazynu danego dnia. Bez automatyzacji obu rzeczy logistyka się rozsypuje powyżej 50 paczek dziennie.

Flow generowania etykiety wygląda tak. Sklep ma zamówienie ze statusem "do wysyłki". Magazyn pakuje i wywołuje akcję "wygeneruj etykietę" (albo dzieje się to automatycznie po skanowaniu pakowarki). Sklep wywołuje API kuriera POST-em na /shipments z danymi: waga, wymiary, adres. Kurier zwraca tracking number i PDF etykiety (albo URL do PDF). Sklep drukuje, etykieta idzie na paczkę.

Pułapki techniczne, które potrafią rozłożyć integrację. Waga i wymiary musisz znać przed wysyłką - PIM musi mieć je per produkt, suma per zamówienie wyliczana w sklepie. Bez tego generujesz etykietę dla 30 kg paczki z deklarowaną wagą 5 kg i kurier wystawia ci dopłatę za różnicę. Walidacja adresu - kurier odrzuci request, jeśli kod pocztowy nie pasuje do miasta. Bez walidacji po stronie sklepu generujesz błędne etykiety i magazyn drukuje stos makulatury. Cena w API: niektóre API zwracają stawkę w momencie generowania (świetnie do raportowania), inne wymagają osobnego call-u albo obliczenia po twojej stronie. Anulowanie etykiety - jeśli zamówienie zostało anulowane już po wygenerowaniu etykiety, musisz wywołać API kuriera, żeby anulować. Inaczej kurier doliczy paczkę, której nigdy nie wysłałeś.

Protokół odbioru to lista paczek z danego dnia plus adres odbioru (twoja firma albo magazyn). Kurier wykorzystuje go do potwierdzenia, ile sztuk realnie zabrał. Generuję go codziennie rano lub po zamknięciu okna paczki, wywołując API typu POST /pickup-orders z listą tracking numerów. Kurier zwraca PDF.

Najczęstszy antypattern, który widzę u klientów przed wdrożeniem: ręczne generowanie etykiet przez panel kuriera. Powyżej 50 paczek dziennie to osobny etat (czasem dwa), plus wysoka stopa błędów, bo człowiek przepisuje adresy ze sklepu do panelu. Automatyzacja jest jedyną sensowną drogą i zwraca się w trzy miesiące.

Tracking i statusy do sklepu

Klient B2B chce wiedzieć, gdzie jest jego paczka, bez logowania do kuriera. To nie luksus - to standard, którego brak generuje telefony do obsługi "gdzie jest moje zamówienie". Zespół, który odbiera 200 takich telefonów tygodniowo, to dwa etaty, których nie potrzebowałeś.

Wzorzec działa tak:

Sklep ↔ Kurier API (webhook albo poll co godzinę)
  ↓
Sklep aktualizuje status zamówienia w bazie
  ↓
Klient widzi w panelu: Wysłane → W tranzycie → Doręczone

Webhooks są zawsze preferowaną opcją tam, gdzie kurier je oferuje. DHL, DPD i InPost dają webhooks na zmianę statusu - subskrybujesz przy generowaniu etykiety, dostajesz aktualizacje w sekundę. Mniejsi kurierzy często nie mają webhooków - tam muszę polować, robiąc GET /tracking/{id} co 1-3 godziny. Broker zwykle agreguje zdarzenia z wielu kurierów do jednego webhooka - to jedna z najmocniejszych zalet brokera dla zespołu, który nie chce utrzymywać wielu integracji równolegle.

Mapowanie statusów jest niezbędne, bo każdy kurier ma własną nomenklaturę. Sklep ma swoje statusy, kurierzy mają swoje (DHL używa skrótów typu "BO", "PU", "IT", "DL"). Bez mapowania klient widzi w panelu "BO" i nie wie, co to znaczy. W Magento dostosowuję to funkcją tłumaczącą:

private function mapDhlStatus(string $dhlStatus): string
{
    return match($dhlStatus) {
        'BO', 'PU' => 'shipped',
        'IT', 'AR', 'DF' => 'in_transit',
        'OK', 'DL' => 'delivered',
        'EX', 'NH' => 'delivery_issue',
        default => 'unknown'
    };
}

Powiadomienia klienta podpinam pod zmiany statusów. Email automatyczny przy każdej zmianie - z konfiguracją per kontrahent, bo niektórzy klienci B2B chcą wyłącznie "wysłano", a inni pełen tracking. SMS dla wartościowych paczek (powyżej progu kwotowego ustalanego z klientem). Push w aplikacji mobilnej, jeśli sklep ją ma.

W UI sklepu klient widzi listę zamówień ze statusem, klik wchodzi w tracking timeline z historią statusów, plus link do strony kuriera dla pełnego trackingu (czasem kurier ma więcej informacji niż wystawia w webhooks - dla klienta to bywa istotne).

Wysyłki paletowe i niestandardowe

B2B oznacza w praktyce paletowe wysyłki, niestandardowe gabaryty i zbiorowe transporty. Większość API kurierów obsługuje tylko paczki "standardowe" - do 30 kg, do około metra w każdym wymiarze. Wszystko powyżej wymaga osobnych API albo dedykowanych przewoźników.

Polskie opcje dla paletowych B2B, których realnie używam. GLS PaletyBusiness obsługuje palety do 1000 kg, dobre stawki dla Polski i UE. DHL Freight to międzynarodowe paletowe, EUR-pallet, ATB - dla eksportu poza UE prawie nie ma alternatywy. Pekaes, Raben i DB Schenker są specjalistyczne, droższe od standardowych kurierów, ale lepiej radzą sobie ze skomplikowanymi ładunkami i wymagającymi terminami. Furgonetka Paleta to broker dla paletowych - dla mniejszych sklepów, które nie wynegocjowały własnych stawek u GLS-a.

Integracja paletowa jest zwykle bardziej ograniczona niż paczkowa. Mniej automatyzacji, często wymagane ręczne wprowadzanie wymiarów palety na etapie generowania etykiety, podstawowy tracking z kilkoma statusami i opóźnieniami w aktualizacjach. Pracując z kurierem paletowym, planuj 30% więcej czasu na implementację niż dla standardowego paczkowego.

Cenowo paletowy działa inaczej. Standardowy kurier paczkowy ma stawkę per paczka, kalkulowaną głównie z wagi. Paletowy ma stawkę per paletę liczoną z kombinacji wagi, wymiarów i celu (miasto docelowe, region). Stawki są zwykle negocjowane indywidualnie, "publicznego cennika" w sensie cennika paczkowego nie ma.

Niestandardowe gabaryty to osobna kategoria problemów. Długie elementy (rury, profile, listwy) - nie wszyscy kurierzy je obsługują. Ciężkie pojedyncze elementy powyżej 50 kg dostają u DPD i innych "extra weight surcharge", który potrafi podwoić cenę paczki. Towary niebezpieczne - chemikalia, baterie litowe, gazy - obsługuje tylko kilku kurierów i wymagają dodatkowej dokumentacji ADR.

W sklepie B2B logika dostawy musi to wszystko ogarniać. PIM trzyma informację per produkt: standard, paletowy, niestandardowy. Checkout pokazuje opcje dostawy zależnie od produktów w koszyku. Cennik dynamiczny: produkt poniżej 30 kg trafia w "paczka", powyżej albo z flagą specjalną idzie w "paleta" albo "niestandardowy" z osobnym cennikiem.

OMS i WMS w sklepie B2B - logistyka jest częścią szerszego stacku zarządzania zamówieniami.

Antywzorce - 8 kurierów = chaos

Sklep z ośmioma zintegrowanymi kurierami brzmi w prezentacji jak "duży wybór dla klienta". W praktyce to chaos, który widziałem kilka razy, i zawsze kończyło się go redukcją.

Problemy z ośmioma kurierami są wymierne. Osiem API do utrzymania, każde z własnymi changes, deprecjacjami, problemami z autoryzacją. Osiem cenników do negocjowania, każda renegocjacja to praca dwóch-trzech dni. Osiem ścieżek dla magazynu, pakowacze muszą znać różne procesy etykietowania i niech tylko nowy stażysta nie pomyli się o pięć minut. Klient w checkoucie ma paraliż decyzji - "który wybrać?" - i opuszcza koszyk, bo nie wie, czym DPD różni się od GLS-a dla jego zamówienia. Statystyki sprzedaży i kosztów logistyki są rozproszone, trudno wyciągnąć z nich wnioski.

Optymalna liczba kurierów dla B2B w mojej praktyce: 2-3 głównych obsługujących 95% paczek (DPD plus InPost plus DHL na zagranicę), 1 broker dla edge case-ów i awarii (Furgonetka), 1 paletowy (GLS PaletyBusiness lub Raben). Razem 4-5 opcji w checkoucie, klient wybiera, ale ma jasne preferencje, bo każda opcja ma czytelne zastosowanie.

Decyzja "ile kurierów" zależy od skali sklepu. Mniejszy sklep poniżej 100 paczek miesięcznie: 1 broker plus 1 paletowy, razem 2 opcje. Średni sklep 100-500 paczek miesięcznie: 2 głównych kurierów plus 1 broker plus 1 paletowy, razem 4. Duży 500-5000 paczek miesięcznie: 3 kurierów plus 1 broker plus 1 paletowy plus 1 międzynarodowy specjalista, razem 6.

Dlaczego więcej nie pomaga. Mniej siły negocjacyjnej per kurier, bo wolumen jest rozproszony. Więcej API do monitorowania, więcej problemów, których nikt nie wykrywa, bo nie ma czasu zaglądać. Magazyn nie ma czasu uczyć się specyfik każdego kuriera, więc co tydzień ktoś robi błąd i paczka idzie nie tym kanałem.

Workflow akceptacji zamówień - kurier wybierany jest często na etapie akceptacji zamówienia przez handlowca.

FAQ

Czy lepiej zintegrować się z każdym kurierem osobno, czy przez brokera? Model hybrydowy najczęściej wygrywa. Bezpośrednie integracje z dwoma-trzema głównymi (lepsze stawki, bezpośredni support) plus broker (Furgonetka, Apaczka) dla edge case-ów i jako fallback przy awarii. Dla sklepu z 100-500 paczkami miesięcznie cztery opcje w checkoucie to optymalna granica - poniżej brakuje elastyczności, powyżej zaczyna się chaos.

Jak rozliczać dopłaty kurierskie automatycznie? Dopłata kurierska to różnica między tym, co klient zapłacił, a realnym kosztem wysyłki (paczka okazała się większa albo cięższa, niż klient zadeklarował). API kuriera w response zawiera faktycznie naliczoną kwotę - porównuję z tym, co klient zapłacił. Różnica idzie jako faktura korygująca albo debetowanie konta klienta przez middleware między kurierem a ERP. Bez automatyzacji księgowość się nie wyrabia.

Czy mogę dać klientowi wybór kuriera w checkoucie? Tak - obliczasz stawki dla każdego kuriera dynamicznie albo używasz cache-owanego cennika, pokazujesz opcje, klient wybiera. Pamiętaj o walidacji: nie każdy kurier obsługuje każdy gabaryt i nie każdy adres. Jeśli klient chce paczkomat InPost z laptopem ważącym 20 kg, sklep powinien tego nie pokazać, a nie polegać na tym, że kurier "jakoś sobie poradzi".

Czy InPost Paczkomat jest dla B2B? Paczkomat ma limit 8 kg i małe wymiary, więc dla typowych paczek B2B (motoryzacyjne, AGD, materiały budowlane) - nie. Dla mniejszych części, próbek produktów albo dokumentów - tak, i klienci to lubią, bo nie muszą czekać na kuriera. InPost Kurier (dostawa pod drzwi) jest standardem dla większych paczek B2B.

Co ze zwrotami - czy każdy kurier je obsługuje? Większość ma usługę typu "Smart Return" albo "EasyReturn" - klient generuje etykietę zwrotną z API sklepu (albo z linka mailowego), drukuje i nadaje. Stawka zwykle niższa niż za nową wysyłkę, bo kurier prowizyjnie naliczany. Sklep musi obsłużyć w API plus w UI: przycisk "Zgłoś zwrot" → wygenerowanie etykiety zwrotnej → mail do klienta z PDF do druku.

Co dalej

O autorze

Jakub Owsianka

Architekt rozwiązania w WiseB2B - silniku platform B2B. Zaczynał po stronie biznesu (własne sklepy), potem deweloper, dziś projektuje wdrożenia dla sklepów z katalogami w dziesiątkach tysięcy SKU. W ostatnich latach wdrożył AI-development w zespole i funkcjonalności oparte o AI bezpośrednio w silniku sklepu.

Masz pytanie do tego artykułu?

Dodatkowy kontekst, problem z własnym wdrożeniem, druga opinia - napisz wprost. Odpowiadam osobiście w 1-2 dni robocze.