Integracja danych z Fakturowni za pomocą webhooków
Ostatnia aktualizacja: 2025-11-04
Webhooki to - obok interfejsu programistycznego API - mechanizm pozwalający na komunikację w czasie rzeczywistym pomiędzy serwerami. Przeznaczony jest głównie dla deweloperów i zaawansowanych Użytkowników. W tym artykule wskażemy, gdzie w Fakturowni dostępna jest opcja konfiguracji webhooków.
Dowiedz się, jak skorzystać z tej funkcji, korzystając z interaktywnego przewodnika.
Czym są webhooki?
Webhooki stanowią mechanizm, który umożliwia jednemu systemowi powiadamianie innego systemu o określonych zdarzeniach w czasie rzeczywistym. Webhooki działają na zasadzie automatycznego wysyłania HTTP POST lub GET żądania do określonego adresu URL, gdy w systemie źródłowym wydarzy się coś istotnego. Webhooki są często używane w aplikacjach webowych do synchronizacji danych między różnymi usługami i systemami.
Gdzie skonfigurować webhooki w Fakturowni?
Aby mieć możliwość skonfigurowania webhooków:
.
- przejdź do zakładki Ustawienia > Ustawienia konta > Integracja;

- następnie na liście znajdź sekcję Webhooki;

- w dedykowanych polach uzupełnij dane dotyczące webhooków;

- zatwierdź zmiany w ramach konta przyciskiem Zapisz na dole strony.
Zastosowanie webhooków zmniejsza obciążenie serwera aplikacji, ponieważ potrzebne informacje są automatycznie wysyłane w chwili, kiedy wystąpi określone zdarzenie. Nie ma więc konieczności odpytywania intefejsu API, czy zaszły jakiekolwiek zmiany. Powiadomienia o zdarzeniach są otrzymywane dokładnie w momencie ich zaistnienia, bez konieczności zbyt częstego odpytywania aplikacji.
Webhook posiada:
-
typ, który określa, kiedy webhook ma zostać wysłany (po stworzeniu/zaktualizowaniu/usunięciu klienta);
-
URL, czyli adres URL, pod który wysyłany jest webhook;
-
API token, czyli token uwierzytelniający, który użytkownik może dodać do webhooka i który będzie widoczny pod kluczem 'Api_token'.
Webhook to POST wysyłany na wskazany URL. Struktura musi odpowiadać danym, które mają być przekazywane.
Aby komunikować zmiany w zakresie klientów prześlij odpowiedni POST, np:
{
client_id: <unikalne ID reprezentujące klienta w bazie Fakturowni>,
client: { <słownik reprezentujący klienta w Fakturowni> },
app_name: 'fakturownia',
api_token: <api_token wpisany w webhooku przez uzytkownika>,
locale: I18n.locale (np. 'pl')
}
Faktury
Przykładowy request wysyłany przy utworzeniu faktury:
{
"id": 111,
"deal": {
"name": "Chleb",
"description": "razowy",
"price": "12.3",
"paid": false,
"url": "https://test.fakturownia.net/f/06-2022/123,
"date": "2022-07-26",
"invoice_no": "61/2022",
"kind": "vat",
"status": "issued",
"currency": "PLN",
"external_ids": {
"fakturownia": 111
},
"client": {
"name": "Edward",
"tax_no": "",
"first_name": "",
"last_name": "",
"bank_account": "",
"bank_account_id": null,
"register_number": "",
"skip_webhooks": true,
"external_ids": {
"fakturownia": 111
}
},
"skip_webhooks": true
},
"app_name": "fakturownia",
"api_token": "",
"locale": "pl"
}
Klienci
Przykładowy request wysyłany przy utworzeniu klienta:
{
"client": {
"id": 111,
"name": "Edward",
"tax_no": "",
"post_code": "",
"city": "",
"street": "",
"first_name": "",
"country": "",
"email": "",
"phone": "",
"www": "",
"fax": "",
"street_no": null,
"kind": "buyer",
"bank": "",
"bank_account": "",
"bank_account_id": null,
"shortcut": "Edek",
"note": "",
"last_name": "",
"deleted": false,
"discount": null,
"payment_to_kind": "",
"use_delivery_address": false,
"delivery_address": "",
"company": true,
"mobile_phone": "",
"register_number": "",
"external_id": "",
"external_ids": {
"fakturownia": 111
},
"buyer": {},
"skip_webhooks": true
},
"app_name": "fakturownia",
"api_token": "",
"locale": "pl"
}
Produkty
Przykładowy request wysyłany przy utworzeniu produktu:
{
"product": {
"id": 111,
"name": "Chleb",
"code": "",
"price_net": "10.0",
"tax": "5",
"price_gross": "10.5",
"currency": "PLN",
"description": "",
"stock_level": "0.0",
"disabled": false,
"external_ids": {
"fakturownia": 111
},
"category_name": null,
"skip_webhooks": true
},
"app_name": "fakturownia",
"api_token": "",
"locale": "pl"
}
Interaktywny przewodnik poprowadzi Cię krok po kroku na rzeczywistych ekranach Fakturowni, umożliwiając łatwe zrozumienie i wykonanie potrzebnych działań.
Kliknij Start aby rozpocząć, a następnie klikaj w niebieskie pola, lub użyj strzałek w prawym dolnym rogu do nawigowania po instrukcji.
Sprawdź również:
Konfiguracja i sprzedaż produktów i usług online
Jak wystawić Zamówienie za pomocą żądania API?
Automatyczna fiskalizacja paragonów po utworzeniu przez API
Własne role - dostęp do opcji webhooki
Integracja API co to jest?
Powrót
Komentarze
wmajchrzak
Czy po wywołaniu Requestu fakturownia oczekuje jakiejś konkretnej odpowiedzi np. Header 200 OK? Zastanawiam się co w przypadku gdy na naszym serwerze pojawi się np. błąd lub zabraknie komunikacji. Czy fakturownia będzie ponawiać ten request do czasu aż dostanie prawidłową odpowiedź?
2019-06-28 09:36
piotr.wajs
dziękuję za zgłoszenie.
Skieruje Pana zapytanie do programistów. Jak tylko otrzymam odpowiedź przekażę ją niezwłocznie.
Pozdrawiam,
Piotr
2019-08-21 16:57
anonim
2022-08-03 17:22
piotr.wajs
jak tylko otrzymam informacje od programistów, przekażę ją Państwu.
2022-08-04 11:06
anonim
2022-09-30 14:07
Bartłomiej Paczek
odnośnie Pana ostatniej odpowiedzi. Gdzie można dodać kod pozwalający na dodanie nowych pól, jako przesyłanych w trakcie wywołania webhooka?
2023-10-18 22:58
Dominik
2024-06-24 18:41
Kacper_Seta
nie, dokumenty po stronie Wydatków i dokumenty magazynowe nie wywołują webhooków. Webhooki przekazują informacje o dokumentach przychodowych.
Pozdrawiam,
Kacper
2024-06-25 09:10
Klak
2024-09-18 11:58
lukaszs
dziękuję za przekazaną sugestie. Przekażę ją do działu rozwoju produktu.
Rozszerzenie webhookow do pozostałych typów dokumentów zostanie zgłoszone na kolejkę zadań do realizacji w przyszłości.
W przypadku pytań pozostaję do dyspozycji.
Pozdrawiam,
Łukasz
2024-09-19 09:34
Michał Piłat
nie widzę odpowiedzi na pytania, które padły wyżej jak i jednocześnie podbiję troszkę temat :)
Tak więc:
1. czy w przypadku zwrócenia w odpowiedzi błędu, POST będzie ponawiany np 3x co 30min?
2. czy prace nad rozszerzeniem funkcjonalności na dokumenty magazynowe faktycznie są zaplanowane? Napisanie rozwiązania, które pobiera wszystkie dokumenty magazynowe i szuka tych brakujących wydaje się przykrą opcją po obu stronach :)
2025-11-04 02:39
Dodaj komentarz