Integracje z ERP, płatnościami i kurierami to nie jedna integracja, a trzy osobne projekty: system sprzedaży i księgowości, operator płatności oraz firma kurierska. Każdy z nich ma inne API, inne statusy i inne pułapki. Ręczne przepisywanie 60 zamówień dziennie zajmuje ok. 90 minut pracy, którą można przeznaczyć na coś innego. Poniżej pokazujemy, jak rozłożyć taki projekt na etapy i co sprawdzić, zanim podpiszesz umowę z wykonawcą.
„Integracja” w liczbie pojedynczej to najczęstsze nieporozumienie w rozmowie z wykonawcą. W sklepie internetowym trzeba połączyć trzy niezależne systemy, z których każdy ma własne API, własne statusy i własny cykl aktualizacji.
Koszt braku integracji policz sam. 60 zamówień dziennie przepisywanych ręcznie to około 90 minut pracy każdego dnia, czyli blisko 40 godzin miesięcznie. Do tego dochodzą pomyłki: literówka w adresie, podmieniony numer przesyłki, zdublowany dokument w księgowości — każda z nich oznacza telefon od klienta i kolejne minuty.
Integracja to nie jednorazowy eksport CSV raz na dobę. Eksport „od–do” bez sprzężenia zwrotnego to tylko połowa procesu: dopóki ERP nie odeśle informacji o rezerwacji towaru, a kurier nie zwróci statusu doręczenia, sklep nie wie, czy zamówienie jest realnie obsłużone. Wymiana musi być dwukierunkowa i cykliczna. Jeśli chcesz najpierw uporządkować pojęcia techniczne, przejrzyj nasze omówienie integracji API — pokazuje różnicę między API, webhookiem a plikiem wymiany.
| Warstwa | Co wysyła sklep | Co zwraca system | Typowy nośnik wymiany |
|---|---|---|---|
| ERP (sprzedaż i księgowość) | Pozycje zamówienia, dane nabywcy, ID zamówienia | Numer dokumentu, rezerwacja, stan magazynowy | API, plik CSV/XML, odczyt z bazy |
| Operator płatności | Kwotę, walutę, ID zamówienia, adres powrotu | Status płatności, identyfikator transakcji | Webhook + API REST |
| Operator logistyczny | Adres, wagę, wymiary, sposób nadania | Numer przesyłki, etykieta PDF/ZPL, statusy | API kuriera lub brokera |
Pełny łańcuch wygląda tak:
Webhooki są szybsze niż odpytywanie API (polling), ale mają wymagania: publiczny, stabilny endpoint po HTTPS, poprawny certyfikat, brak blokad po stronie WAF i odpowiedź 200 w kilka sekund. W PrestaShop logikę wpinamy w moduł obsługujący hooks — punkt wyjścia to dokumentacja dla deweloperów PrestaShop. Polling zostaw jako plan B: odpytuj co 5–15 minut, pamiętając o limitach zapytań. Kolejność webhooków nie jest gwarantowana, więc statusy porównuj po znaczniku czasu albo nadaj im hierarchię („doręczona” nie może zostać cofnięta do „nadana”).
Kluczem parowania rekordów jest ID zamówienia w sklepie — traktuj je jako nadrzędny identyfikator i przekazuj dalej w polu referencji lub komentarza. Numer dokumentu z ERP i numer przesyłki zapisuj jako pola dodatkowe, nigdy jako klucz główny.
| Miejsce w łańcuchu | Typowa awaria | Objaw dla klienta |
|---|---|---|
| Webhook płatności | Zduplikowane lub niepodpisane zdarzenie | Zamówienie opłacone, ale ze statusem „oczekuje” |
| Tworzenie dokumentu w ERP | Brak mapowania stawki VAT lub jednostki | Dokument odrzucony, brak faktury |
| Generowanie etykiety | Zbyt duża waga lub brak kodu pocztowego | Przesyłka nie zostaje nadana |
| Statusy śledzenia | Brak publicznego endpointu | Klient nie dostaje informacji o doręczeniu |
W polskim e-commerce najczęściej łączymy sklepy z Subiektem (GT i nexo), Comarch Optimą, WAPRO oraz enovą. Każdy z tych systemów da się połączyć, ale dróg jest trzy — i różnią się ryzykiem, nie tylko kosztem.
Zakres synchronizacji ustal przed startem prac, bo każda pozycja to osobny scenariusz błędów. Jeśli pracujesz na WooCommerce, mechanikę zamówień i integracji opisuje dokumentacja WooCommerce — warto porównać ją z tym, co obiecuje dostawca ERP.
Od 2026 roku dochodzi KSeF. Harmonogram przewiduje obowiązek dla większości przedsiębiorców w tym okresie (dokładne terminy potwierdź w oficjalnych źródłach Ministerstwa Finansów). To zmienia projekt: ERP wystawia fakturę w KSeF, a integracja musi odebrać jej numer i status oraz zadbać, by klient dostał plik. Bez tego sklep wyśle zamówienie do ERP i uzna temat za zamknięty. Jak wygląda cały proces, opisujemy w artykule integracje z ERP, płatnościami i kurierami – co i jak.
| Co synchronizować | Kierunek | Częstotliwość |
|---|---|---|
| Stany magazynowe | ERP → sklep | Co 5–15 min lub po każdej sprzedaży |
| Ceny i kartoteki towarów | ERP → sklep | Po zmianie cennika, min. raz dziennie |
| Dokumenty sprzedaży | Sklep → ERP | Natychmiast po opłaceniu zamówienia |
| Statusy zamówień i numer KSeF | ERP → sklep | Po wystawieniu dokumentu |
Bramka płatności to nie tylko przycisk „Zapłać”. To przede wszystkim zestaw webhooków i statusów, które muszą zgadzać się ze statusami zamówienia w sklepie i w ERP. Zanim podpiszesz umowę, poproś operatora o dokumentację API i sprawdź dwie rzeczy: czy notyfikacje rozróżniają autoryzację (środki zablokowane) i potwierdzenie (pieniądze faktycznie pobrane) oraz czy istnieje osobne zdarzenie dla zwrotu. Jeśli wszystkie trzy wpisują się w jeden status „opłacone”, przy pierwszej reklamacji nie odtworzysz, co się stało z pieniędzmi.
Praktyczne mapowanie wygląda tak: autoryzacja nie tworzy w ERP żadnego dokumentu sprzedaży, jest tylko informacją w logu. Potwierdzenie tworzy dokument i wpis płatności. Zwrot wywołuje korektę faktury oraz przyjęcie towaru na stan. Chargeback to najczęściej wstrzymanie realizacji i należność wątpliwa – trzeba mieć na to gotowy scenariusz, bo działa inaczej niż zwykły zwrot.
Zapytaj też o prowizję od transakcji i od zwrotu, koszt chargebacku, cykl wypłat (np. tygodniowy albo T+7) i kwotę progową wypłaty. Stawki się zmieniają i zależą od obrotu, więc bierz aktualny cennik operatora, a nie tabelę sprzed roku.
| Zdarzenie w bramce | Status w sklepie | Działanie w ERP |
|---|---|---|
| Autoryzacja | płatność w toku | brak dokumentu, tylko zapis w logu |
| Potwierdzenie | opłacone | dokument sprzedaży + wpis płatności |
| Zwrot | zwrócone | korekta faktury, zwrot na stan, e-mail do klienta |
| Chargeback | spór / zablokowane | wstrzymanie realizacji, należność wątpliwa |
U kuriera integrują się cztery rzeczy i każda ma swoją pułapkę. Pierwsza to etykieta: generowana z panelu sklepu, zapisywana jako plik przy zamówieniu, z wagą, wymiarami i numerem telefonu odbiorcy. Etykieta kupiona dla zamówienia, które nie zostało opłacone, to najczęstsza strata pieniędzy w tym projekcie – blokada powinna działać przed wywołaniem API kuriera, nie po.
Druga to zlecenie odbioru i protokół. Część firm wymaga wydrukowania protokołu zbiorczego, a pickup zamawia się przez API albo ręcznie. Godziny odbioru w danym regionie są sztywne – jeśli zamówienie wpada o 20:00, a pickup startuje rano, automat musi umieć przesunąć zlecenie na następny dzień, zamiast sypać błędami.
Trzecia to punkty odbioru i Paczkomaty. Wybór punktu musi się odbyć w koszyku, na etapie wyboru dostawy, a kod punktu trafia do zamówienia i na etykietę. Bez kodu paczka pojedzie pod adres domowy i klient zapłaci za dostawę, której nie chciał. Lista punktów jest aktualizowana przez kuriera – jeśli wczytasz ją raz i zamrozisz w bazie, po kilku miesiącach klienci będą wybierać punkty, które nie istnieją.
Czwarta to statusy i numery listów przewozowych. Numer powinien trafić do e-maila i do zamówienia automatycznie, a webhooki kuriera zmapowane na statusy sklepu: nadana, w drodze, gotowa do odbioru, doręczona, zwrot. Jeśli mapowanie stoi, klient dzwoni po trzech dniach po numer, który już istnieje w systemie.
| Element | Co integrujemy | Typowa pułapka |
|---|---|---|
| Etykieta | generowanie z panelu sklepu, plik przy zamówieniu | etykieta dla zamówienia bez opłaconej płatności |
| Punkty odbioru | lista punktów w koszyku, kod punktu w zamówieniu | zamrożona lista punktów, brak kodu na etykiecie |
| Statusy | webhooki kuriera + numer listu w e-mailu | brak mapowania na statusy sklepu |
| Odbiór | protokół i zlecenie pickupu | pickup zamówiony po godzinie odbioru w regionie |
Nie ma jednej ceny integracji, jest suma godzin w kilku etapach. Poniższe zakresy to orientacja dla sklepu z jednym kanałem sprzedaży i jednym magazynem – nie oferta. Jeżeli wykonawca podaje kwotę bez audytu, wycenia z sufitu.
Cena rośnie od czterech rzeczy: liczby kanałów (sklep, marketplace, B2B), liczby magazynów, niestandardowych stanów magazynowych (rezerwacje, kompletacja, stany wirtualne) oraz tego, czy trzeba pisać własny moduł. Zanim zlecisz pisanie od zera, sprawdź gotowe connectory – dla WooCommerce punktem startu jest dokumentacja WooCommerce, dla PrestaShop dokumentacja deweloperska PrestaShop. Własny moduł ma sens wtedy, gdy API ERP jest nietypowe albo logika stanów jest specyficzna dla firmy.
Utrzymanie to osobny budżet: monitoring webhooków (czy notyfikacje dochodzą, czy kolejka nie rośnie), aktualizacje API kurierów po zmianach po ich stronie, kopia danych przed każdą aktualizacją oraz SLA na reakcję – realnie 1–2 dni robocze na błąd krytyczny.
| Etap | Typowy zakres godzin | Co zawiera |
|---|---|---|
| Audyt i mapowanie danych | 8–16 h | spis systemów, mapowanie pól, lista statusów i dokumentów |
| Integracja płatności | 12–24 h | webhooki, statusy, zwroty, testy w piaskownicy |
| Integracja kuriera | 10–20 h | etykiety, punkty odbioru, statusy, pickup |
| Integracja ERP | 24–60 h | towar, dokumenty, stany magazynowe, płatności |
| Testy i dokumentacja | 12–24 h | scenariusze błędów, dokumentacja wdrożeniowa |
Pierwszy miesiąc po wdrożeniu zwykle wygląda dobrze: zamówienia przechodzą, faktury się generują. Kłopoty pojawiają się przy kampanii promocyjnej albo po zmianie wersji API po stronie operatora. Cztery pułapki widać dopiero w danych.
Duplikaty zamówień przy powtórzonym webhooku. Operator płatności, który nie dostanie odpowiedzi 200 w kilka sekund, wyśle to samo zdarzenie ponownie. Bez zabezpieczenia sklep utworzy drugie zamówienie albo drugą fakturę. Lekarstwem jest idempotency key: zapisujesz identyfikator zdarzenia (payment_id, event_id) w tabeli z unikalnym indeksem, np. UNIQUE(payment_id). Druga próba odczytuje istniejący rekord i zwraca 200 bez żadnej akcji. Kontrola: raz w tygodniu porównaj liczbę zamówień w sklepie z liczbą dokumentów w ERP. Różnica 1–3% w dni promocyjne to sygnał, że webhooki się powtarzają. Mechanikę wtyczek, hooków i webhooków opisuje dokumentacja WooCommerce.
Rozjazd stanów magazynowych. Ten sam towar sprzedaje sklep, marketplace i handlowiec z ERP. Jeśli stany aktualizują się w obie strony, dwa zamówienia złożone w tej samej sekundzie nadpiszą się nawzajem i sprzedasz towar, którego nie ma. Zasada: jeden system nadrzędny, najczęściej ERP. Sklep tylko rezerwuje i pyta o dostępność, a nie prowadzi własnego stanu.
Limit czasu i retry u kurierów. API kuriera w godzinach szczytu potrafi odpowiadać 15–30 s. Wywołanie synchroniczne w koszyku oznacza, że klient czeka, a przy błędzie traci zamówienie. Zamiast tego kolejka zadań (Redis, RabbitMQ albo tabela zadań i cron) oraz retry z rosnącym opóźnieniem: 1 min, 5 min, 30 min. Limit czasu ustaw na 10–15 s, a nie na domyślne 30.
Kodowanie i polskie znaki. Plik CSV z ERP w Windows-1250 wczytany jako UTF-8 zamienia „Żółć” na krzaki i towar nie dopasuje się po nazwie. Ustal jedno kodowanie (UTF-8 bez BOM), jeden separator i format liczb, a test importu rób na towarze z ogonkami i myślnikiem.
| Pułapka | Objaw po miesiącu | Jak wykryć | Rozwiązanie |
|---|---|---|---|
| Powtórzony webhook | Podwójne zamówienie lub faktura | Porównanie liczby zamówień w sklepie i dokumentów w ERP | Idempotency key i indeks UNIQUE(payment_id) |
| Rozjazd stanów magazynowych | Sprzedaż towaru, którego nie ma na magazynie | Cotygodniowy raport różnic na 20 wybranych SKU | Jeden system nadrzędny (ERP), sklep tylko rezerwuje |
| Timeout u kuriera | Zamówienia bez etykiety, klient czeka w koszyku | Logi czasów odpowiedzi API i liczba błędów 5xx | Kolejka zadań, limit 10–15 s, retry 1/5/30 min |
| Kodowanie plików | Towary nie dopasowują się po nazwie | Test importu na nazwie z polskimi znakami | UTF-8 bez BOM, ustalony separator i format liczb |
Pytanie „czy wykonawca musi być z Bydgoszczy” pada prawie przy każdej rozmowie. Krótka odpowiedź: nie, ale nie wszystko da się zrobić zdalnie. Podział wygląda tak.
Praca zdalna nie zwalnia z zasad. Ustalamy je przed startem:
Odległość ma mniejsze znaczenie niż to, czy wykonawca pracuje na stagingu, umie skonfigurować kolejkę zadań i zna twój system ERP. Cały zakres takiego projektu rozpisaliśmy w materiale o tym, jak wyglądają integracje z ERP, płatnościami i kurierami – co i jak.
| Zakres | Zdalnie | Na miejscu |
|---|---|---|
| Moduł, webhooki, mapowanie pól | Tak | Nie |
| Konfiguracja serwera i kolejki zadań | Tak | Nie |
| Testy na środowisku stagingowym | Tak | Nie |
| Audyt procesów magazynowych | Częściowo: rozmowa i zrzuty ekranu | Tak, 2–4 h |
| Szkolenie zespołu | Możliwe online | Tak, 2–3 h |
Kolejność wdrożenia nie jest obojętna. Najpierw płatności, potem kurierzy, na końcu ERP. Powód jest praktyczny: płatności i kurierzy nie zależą od ERP, więc działają już w pierwszym tygodniu, a każdy etap można cofnąć bez ruszania księgowości.
Potem decyzja: dokupić kolejną wtyczkę czy zamówić własny moduł. Wtyczka ma sens, gdy jej funkcje pokrywają się z twoim procesem. Własny moduł rozważ, gdy: brakuje mapowania wymaganego przez ERP, po każdej aktualizacji sklepu wtyczka nadpisuje pliki i trzeba ją poprawiać, albo licencja mnoży się przez liczbę środowisk lub sklepów.
Policz to na kartce. 60 zamówień dziennie × 1,5 minuty ręcznego przepisania = 90 minut dziennie, czyli około 375 godzin rocznie przy 250 dniach pracy. Przy stawce 60 zł za godzinę to 22 500 zł. Jeśli własny moduł kosztuje 8 000 zł i 1 500 zł rocznie na utrzymanie, zwraca się w pierwszym roku. Jeśli różnica jest niewielka, zostań przy wtyczce – to też decyzja, tylko świadoma.
Punkt wyjścia to integracje API, orientacyjne stawki znajdziesz w cenniku integracji ERP, płatności i kurierów, a sposób liczenia nakładu na stronie o koszcie integracji. Techniczne podstawy budowy własnego modułu opisuje dokumentacja PrestaShop.
| Etap | Co obejmuje | Typowy czas | Efekt |
|---|---|---|---|
| 1. Płatności | Webhooki, idempotency key, statusy transakcji, faktury | 1–3 dni robocze | Automatyczne potwierdzanie płatności |
| 2. Kurierzy | Statusy, etykiety, pobranie, numery nadania | 3–7 dni roboczych | Brak ręcznego wpisywania danych przesyłki |
| 3. ERP | Stany magazynowe, dokumenty, księgowość, mapowanie pól | 2–8 tygodni | Jeden nadrzędny stan i dokumenty w ERP |
| Przed startem | Kopia bazy, staging, lista pól, osoba akceptująca odbiór | 1–2 dni | Prace poza środowiskiem produkcyjnym |
Traktowanie ERP, płatności i kurierów jako jednej „integracji”, którą wycenia się jednym ryczałtem.
Jak wykryć: Wykonawca nie pyta, jaki masz ERP, jaką bramkę i jakich kurierów, a mimo to podaje jedną cenę i jeden termin.
Jak naprawić: Rozbij zakres na trzy części z osobnym odbiorem: ERP, płatności, kurierzy. Każda ma inne API, inne statusy i inne scenariusze błędów.
Zastąpienie integracji eksportem CSV raz dziennie.
Jak wykryć: Stany magazynowe w sklepie nie zgadzają się z ERP po sprzedaży, a ktoś musi pilnować godziny eksportu i wgrania pliku.
Jak naprawić: Przejdź na wymianę danych w dwie strony przez API lub pliki wymiany uruchamiane zdarzeniowo. Eksport CSV to operacja jednorazowa, nie integracja.
Parowanie rekordów po numerze faktury, e-mailu klienta albo nazwisku.
Jak wykryć: Pojawiają się duplikaty dokumentów, zamówienia bez dopasowania i pozycje, które trzeba łączyć ręcznie.
Jak naprawić: Ustal ID zamówienia ze sklepu jako nadrzędny identyfikator i przenoś je konsekwentnie do ERP i do systemu kuriera.
Webhook płatności ustawiony na adres, który zmienia się przy aktualizacji sklepu albo nie działa poza biurem.
Jak wykryć: Po wdrożeniu zdarzają się zamówienia bez potwierdzonej płatności, a statusy wracają dopiero po ręcznym sprawdzeniu w panelu bramki.
Jak naprawić: Wymagaj publicznego, stabilnego adresu HTTPS, logowania zdarzeń, ponawiania nieudanych wywołań i mechanizmu odpytywania API jako zabezpieczenia.
Obsługa zwrotu tylko w bramce płatności, bez odbicia w ERP.
Jak wykryć: W bramce widać zwrot, a w księgowości brak korekty albo faktura zostaje bez zmian.
Jak naprawić: Rozpisz całą ścieżkę: zwrot w bramce, korekta w ERP, aktualizacja stanu magazynowego i statusu zamówienia. Chargebacki obsłuż tą samą procedurą.
Brak środowiska testowego i lista scenariuszy błędów sprowadzona do „uda się albo nie”.
Jak wykryć: Pierwszym testem integracji jest prawdziwe zamówienie klienta, a brak towaru albo zwrot częściowy od razu zatrzymuje proces.
Jak naprawić: Zażądaj sandboxów od ERP, bramki i kuriera oraz przećwiczenia przypadków brzegowych: nieudana płatność, ponowna płatność, brak towaru, zwrot częściowy.
Integracje z ERP, płatnościami i kurierami rozbij na trzy osobne zakresy, bo każdy ma inne API, inne statusy i inne scenariusze błędów. Najważniejsze decyzje to źródło prawdy dla cen i stanów oraz ID zamówienia jako klucz parowania rekordów. Webhooki, zwroty i chargebacki zaplanuj przed startem, nie po pierwszym problemie. Dobrze zaplanowany audyt jest tańszy niż dwa miesiące ręcznego łatanie zamówień.
Nie. Eksport CSV to jednorazowe działanie, które trzeba powtarzać i pilnować. Integracja to wymiana danych w dwie strony: sklep wysyła zamówienie, ERP zwraca numer dokumentu i stan magazynowy. Dopiero taki układ eliminuje ręczne przepisywanie.
Nie da się podać jednej liczby bez audytu. Czas zależy od liczby kanałów sprzedaży, liczby magazynów, tego czy ERP ma API, oraz od liczby scenariuszy niestandardowych. Sklep z jednym magazynem i gotowym API zamyka się szybciej niż sieć z kilkoma magazynami i modułem do napisania od zera.
Sama integracja to praca zdalna – liczy się dostęp do API, środowisk testowych i dokumentacji. Spotkanie na miejscu bywa przydatne na etapie audytu procesów: kto wystawia faktury, kto pakuje, kto odbiera kuriera. Ten etap warto zrobić raz i porządnie, bo od niego zależy reszta projektu.
Zwykle nie. PrestaShop i WooCommerce mają udokumentowane mechanizmy do budowy modułu lub wtyczki – PrestaShop Developer Documentation oraz WooCommerce Documentation. Zmiana platformy ma sens tylko wtedy, gdy obecna nie pozwala obsłużyć procesu, a nie dlatego, że brakuje integracji.
Te, które zmieniają logikę powiadomień: BLIK, raty, pay-by-link i płatności odroczone. Przy zwykłej karcie masz autoryzację, potwierdzenie i ewentualny zwrot. Przy racie dochodzi weryfikacja klienta i inny moment uznania płatności, a to trzeba odwzorować w statusach sklepu i w ERP.
Zaplanować to z góry: logować zdarzenia, ponawiać nieudane wywołania i mieć odpytywanie API jako zabezpieczenie. Webhook wymaga publicznego, stabilnego adresu HTTPS, który nie znika przy aktualizacji sklepu. Bez tego statusy płatności zostają w zawieszeniu, a zamówienia czekają na ręczną weryfikację.
Tak, jeśli faktury wystawia ERP. Integracja musi wtedy dostarczyć do ERP komplet danych potrzebnych do wystawienia dokumentu i nie może opierać się na ręcznym dopisywaniu numerów. KSeF staje się obowiązkowy w 2026 roku, więc projekty integracji warto planować z tym założeniem od początku, a nie dokładać go później.
Jeśli nie wiesz, od czego zacząć, zacznij od jednego pytania: które dane przepisujesz ręcznie najczęściej. Napisz do nas, a rozłożymy twój przypadek na ERP, płatności i kurierów oraz powiemy, co da się zrobić etapami – więcej o naszym podejściu znajdziesz w sekcji Integracje API.