Service Level Agreement
Cel dostępności 99.9% miesięcznie dla planów Pro / API. Spadek poniżej = automatyczny kredyt na następną fakturę Stripe. Bez zgłaszania, bez kalkulacji po stronie Klienta.
Jak liczymy uptime
Co minutę aktywne probe'y synchroniczne sprawdzają każdy komponent platformy (API, walidator, generator korekt, baza danych, webhook delivery). Wynik trafia do tabeli health_checks i jest agregowany przez SQL RPC compute_monthly_uptime.
Metodologia: per-minute aggregation, gdzie minuta liczy się jako down (waga 1.0) jeśli choć jeden komponent zwrócił down, jako degraded (waga 0.5) jeśli zwrócił degraded. Końcowy uptime % = 100 - (suma wag / liczba minut w miesiącu) × 100.
Wynik jest publicznie widoczny w /status (snapshot live + 30-day chart) oraz przez API /api/v1/status (tryb strict zwraca HTTP 503 przy degradacji - idealne do wpięcia w monitoring zewnętrzny).
Tabela kredytów serwisowych
| Uptime w miesiącu | Kredyt | Sposób przyznania |
|---|---|---|
| uptime ≥ 99.9% | brak (SLA spełnione) | - |
| 99.00% < uptime ≤ 99.90% | 10% MRR planu | automatycznie do następnej faktury Stripe |
| 95.00% < uptime ≤ 99.00% | 25% MRR planu | automatycznie do następnej faktury Stripe |
| 90.00% < uptime ≤ 95.00% | 50% MRR planu | automatycznie do następnej faktury Stripe |
| ≤ 90.00% | 100% MRR planu | automatycznie do następnej faktury Stripe |
Kredyt aplikowany do faktury za następny okres rozliczeniowy jako Stripe credit note. Bez konieczności zgłaszania, bez ticketu, bez kalkulacji po stronie Klienta. Pełna historia raportów i statusu kredytu (pending / applied / waived) w /dashboard/sla.
Wyłączenia (nie liczą się do downtime)
- Zaplanowane maintenance windows ogłoszone z minimum 72h wyprzedzeniem przez /status oraz e-mail do administratorów organizacji. Window nie przekracza 30 min i odbywa się poza godzinami szczytu (niedziela 02:00-04:00 UTC).
- Awarie systemu KSeF Ministerstwa Finansów - wykrywane i raportowane przez nasz monitor
ksef.detection_changed, ale poza naszą kontrolą. - Awarie zewnętrznych SaaS (Stripe, Supabase, Hetzner, Resend, PostHog, Sentry) - mamy wbudowany fallback / degradacja kontrolowana, ale pełna niedostępność tych usług nie liczy się do naszego SLA.
- Force majeure (katastrofy naturalne, decyzje organów państwowych blokujące hosting, ataki DDoS trwające > 4h mimo ochrony Cloudflare).
- Błędy konfiguracji po stronie Klienta (przekroczenie quoty, niepoprawny klucz API, brak adresu na IP allowlist, błędna konfiguracja webhook endpointu). Pełna obsługa błędów: zwracamy HTTP 4xx z polem
error.code.
Co znaczy „down” vs „degraded”
Endpoint zwraca HTTP 5xx, timeout > 30s, lub jest całkowicie nieosiągalny z perspektywy probe'a. Każda minuta z tym stanem liczy się jako pełna minuta downtime.
Endpoint odpowiada, ale poza SLO (latency p95 > 2× targetu lub error rate > 1%). Liczy się jako pół minuty downtime - Klient ma usługę, ale obniżonej jakości.
Proces przyznawania kredytu
- Pierwszego dnia każdego miesiąca cron
monthly-sla-sweepliczy uptime za miniony miesiąc dla każdej organizacji płatnej. - Jeśli uptime < 99.9%, tworzony jest wpis w
sla_reportsz odpowiednimcredit_pcti statusempending. - Admin platformy zatwierdza wpis (zmiana na
applied) - typowo w ciągu 24h roboczych. To jedyny manualny krok i służy wyłącznie audytowi (rzadko występującym przypadkom waiver, np. gdy degradacja okazała się false-positive probe'a). - Stripe credit note jest wystawiana automatycznie przy generowaniu następnej faktury cyklicznej organizacji. Pojawia się jako pozycja minus na fakturze (np.
SLA credit - April 2026: -29.00 PLN). - Status każdego raportu (pending / applied / waived) + podsumowanie przyznanych kredytów jest widoczne dla organizacji w /dashboard/sla.
Plany objęte SLA
Service credit dotyczy planów z miesięczną subskrypcją: Starter, Pro, API i Enterprise. Plan Free nie ma kontraktowego SLA (uptime jest taki sam, ale brak automatycznych kredytów - nie ma za co liczyć kredyt). Plan Enterprise może mieć podwyższony cel uptime na podstawie indywidualnej umowy.
Pytania o SLA lub kredyt
E-mail: support@naprawksef.pl
Plan API: dedykowany kanał Slack Connect + response 4h roboczych.