Polityka prywatności
Ostatnia aktualizacja: 9 maja 2026
1. Administrator danych
Administratorem Twoich danych osobowych jest [nazwa firmy], NIP [TWÓJ_NIP], z siedzibą w Poznaniu.
Email kontaktowy w sprawach RODO: privacy@ksef-saas.pl
2. Jakie dane zbieramy
Przy rejestracji:
- Email (login)
- Hasło (hashowane bcrypt)
- Imię (opcjonalnie)
Przy korzystaniu z usługi:
- Dane firmy (NIP, nazwa, adres)
- Faktury (sprzedażowe + zakupowe)
- Kontrahenci (NIP, nazwa, adres)
- Logi audit (kiedy i co zrobiłeś — do diagnostyki)
Automatycznie zbierane:
- IP address (do bezpieczeństwa)
- User agent (do diagnostyki)
- Cookies (sesja, preferencje)
Bezpieczeństwo konta (gdy funkcje są włączone w danej wersji serwisu): możemy zbierać token weryfikacji Cloudflare Turnstile oraz — wyłącznie po stronie serwera — przetwarzać skrót hasła w celu porównania z bazą wycieków (Have I Been Pwned); szczegóły w sekcjach 6–8.
3. Cele przetwarzania (art. 6 RODO)
- Wykonanie umowy (art. 6 ust. 1 lit. b) — świadczenie usługi
- Obowiązek prawny (art. 6 ust. 1 lit. c) — archiwizacja faktur 10 lat
- Uzasadniony interes (art. 6 ust. 1 lit. f) — bezpieczeństwo, zapobieganie nadużyciom
4. Gdzie są Twoje dane
Centrum danych: Hetzner, Frankfurt am Main, Niemcy. Wszystkie dane pozostają w UE.
Backup: AWS Glacier, Frankfurt (eu-central-1).
5. Procesory danych (subprocesorzy)
Korzystamy z następujących dostawców:
- Supabase (Frankfurt) — baza danych
- Cloudflare R2 (EU) — storage plików
- Cloudflare Turnstile (USA, Standard Contractual Clauses tam gdzie ma zastosowanie) — opcjonalna weryfikacja „człowiek vs bot” na wybranych formularzach (np. logowanie, rejestracja, reset hasła). Do Cloudflare trafia token weryfikacyjny z przeglądarki; serwis aplikacji weryfikuje go po stronie backendu. Pełne hasło i inne pola formularza nie są przekazywane do Cloudflare w ramach Turnstile.
- Vercel (Frankfurt) — hosting aplikacji
- Resend (US, Standard Contractual Clauses) — wysyłka emaili
- Anthropic (US, Standard Contractual Clauses) — OCR (zdjęcia paragonów są przesyłane do API tylko podczas rozpoznawania, nie są przechowywane przez Anthropic)
- Stripe (US, Standard Contractual Clauses) — płatności
- Inngest (US, Standard Contractual Clauses) — kolejki zadań
- Sentry (Frankfurt) — error tracking
6. Weryfikacja dwuetapowa (2FA) i kody ratunkowe
Tam gdzie udostępniamy w ustawieniach konta moduł 2FA, możesz włączyć opcjonalny drugi składnik logowania w standardzie TOTP (RFC 6238, np. Google Authenticator, 1Password, Authy). Przy włączeniu generowane są kody ratunkowe (jednorazowe) na wypadek utraty dostępu do aplikacji TOTP. Kody są przechowywane wyłącznie w postaci zahashowanej; sam kod pokazywany jest tylko raz w interfejsie. Wyłączenie 2FA wymaga potwierdzenia tożsamości (np. hasłem) zgodnie z ekranem ustawień.
7. Hasła a znane wycieki (Have I Been Pwned, k-anonymity)
Przy rejestracji lub zmianie hasła możemy sprawdzić, czy hasło nie występuje w publicznej bazie znanych wycieków, korzystając z API Pwned Passwords (projekt Have I Been Pwned). Stosujemy model k-anonymity: do serwisu HIBP wysyłany jest wyłącznie prefix skrótu kryptograficznego hasła (SHA-1), a pełne hasło nie opuszcza naszych serwerów i nie jest przesyłane do HIBP w postaci jawnej. Jeśli sprawdzenie nie powiedzie się (np. timeout), możemy dopuścić rejestrację przy zachowaniu innych reguł siły hasła — szczegóły techniczne nie wpływają na zakres danych osobowych przetwarzanych poza samym hasłem zapisanym u dostawcy tożsamości (Supabase Auth) w formie hash.
8. Ochrona przed botami (Cloudflare Turnstile)
Na wybranych publicznych formularzach możemy wyświetlać widget Cloudflare Turnstile. Przetwarzane są dane techniczne niezbędne do oceny ryzyka botowego (w rozumieniu polityki Cloudflare). Turnstile traktujemy jako subprocessora Cloudflare — patrz lista w sekcji 5.
9. Prawo do bycia zapomnianym — przebieg żądania usunięcia
W sprawach art. 17 RODO (usunięcie danych nieobjętych dalszym obowiązkiem prawnym) możesz złożyć wniosek na adres privacy@ksef-saas.pl. Dla usunięcia konta / organizacji z poziomu aplikacji (właściciel, po weryfikacji m.in. NIP) zapisujemy moment żądania oraz termin twardego usunięcia danych podlegających skasowaniu — obecnie jest to 30 dni od zapisania żądania (okres odstąpienia / możliwość kontaktu z pomocą techniczną w celu anulowania przed upływem terminu). Po upływie tego okresu dane użytkownika i powiązane rekordy w zakresie objętym usuwaniem są usuwane zgodnie z logiką aplikacji i bazą danych.
Faktury i inne dane z 10-letnią retencją (np. wynikającą z przepisów o archiwizacji JPK / e-faktur) mogą zostać zachowane w formie wymaganej przepisami nawet po usunięciu konta — wtedy ograniczamy się do minimum niezbędnego do spełnienia obowiązku prawnego.
Dziennik audytu: po usunięciu konta, tam gdzie jest to technicznie możliwe i zgodne z wymogiem nienaruszalności śladu zdarzeń, wpisy powiązane z Twoim identyfikatorem użytkownika mogą zostać zanonimizowane (usunięcie lub zastąpienie danych identyfikujących przy zachowaniu faktu wystąpienia zdarzenia). Szczegóły w sekcji 11.
Uwaga planistyczna: dokumentujemy też model 14-dniowego cooling-off jako docelowy standard dla części ścieżek samoobsługowych — gdy pełna implementacja 14 dni zostanie wdrożona w interfejsie, niniejsza sekcja zostanie zaktualizowana tak, aby liczba dni w UI i w polityce była spójna.
10. Twoje prawa
Masz prawo do:
- Dostępu do swoich danych (export pełnych danych w 30 dni)
- Sprostowania błędnych danych
- Usunięcia danych ("prawo do bycia zapomnianym")
- Ograniczenia przetwarzania
- Przenoszenia danych (export w formacie JSON / CSV / JPK_FA)
- Sprzeciwu (możesz w każdej chwili zrezygnować)
- Skargi do Prezesa UODO (uodo.gov.pl)
Wniosek do realizacji prawa: privacy@ksef-saas.pl
11. Dzienniki audytu (retencja, tryb dopisywania, anonimizacja)
Prowadzimy dziennik audytu (kto i kiedy wykonał istotne operacje w systemie). Z poziomu zwykłego konta użytkownika dostępny jest odczyt wpisów dla Twojej organizacji; nie możesz samodzielnie modyfikować ani usuwać wpisów audytu z UI (zapobiega to fałszowaniu historii). Wpisy dodawane są przez backend (np. Server Actions, zadania w tle) z uprawnieniami serwisowymi — model append-only z perspektywy użytkownika aplikacji.
Retencja: wpisy starsze niż 12 miesięcy mogą być usuwane przez automatyczne zadanie czyszczące, zgodnie z konfiguracją bazy (minimalny okres retencji technicznej jest egzekwowany po stronie serwera bazy danych).
Po skutecznym żądaniu usunięcia danych osobowych (patrz sekcja 9) powiązane wpisy audytu mogą zostać zanonimizowane, aby nie zawierały identyfikatorów umożliwiających identyfikację osoby, o ile pozwala na to architektura systemu i obowiązujące przepisy.
12. Okres przechowywania
- Dane konta: do 30 dni po anulowaniu subskrypcji
- Faktury: 10 lat (obowiązek prawny — art. 70 § 1 OP)
- Logi audit: 12 miesięcy
- Cookies sesji: do końca sesji (browser close)
- Cookies preferencji: 1 rok
13. Cookies i analityka
Używamy niezbędnych cookies (sesja, preferencje motywu) oraz — po wyrażeniu zgody — narzędzia analityki produktowej (PostHog, przetwarzanie w regionie UE). Domyślnie analityka kliencka jest wyłączona; zapis decyzji o zgodzie trzymamy w localStorage przeglądarki (bez profilowania reklamowego). Zdarzenia o znaczeniu biznesowym mogą być rejestrowane po stronie serwera w modelu uzasadnionego interesu administratora, z pseudonimizacją — zgodnie z opisem w dokumentacji technicznej produktu.