Podpis umowy online, jak wdrożyć u firmy usługowej bez papieru (2026)

umowy9 min czytania28 maja 2026

Autor: DevStudio.it

TL;DR

Zamiast wątków mailowych ze skanami i „która wersja Worda jest aktualna”: generujesz umowę z szablonu, wysyłasz klientowi unikalny link, podpisuje w przeglądarce, system zapisuje PDF z audit trail, wysyła email transakcyjny i ustawia status w bazie. Dla umów B2B o usługi IT w Polsce zwykle wystarczy prosty podpis elektroniczny (intencja + logi + archiwum), podpis kwalifikowany (eIDAS) jest potrzebny tylko w wybranych branżach regulowanych. Poniżej: architektura API, bezpieczeństwo i uczciwy disclaimer prawny.

Dla kogo to jest

  • Software house’ów, agencji i konsultingu sprzedających projekty na umowie o świadczenie usług / umowie o dzieło
  • Zespołów mających już szablony (Word/Google Docs), ale chcących jednego źródła prawdy (HTML → PDF)
  • Klientów B2B oczekujących startu projektu w dniach, nie w tygodniach od „proszę o skan z pieczątką”
  • Firm budujących własny panel zamiast płatnego SaaS z limitami użytkowników

Fraza (SEO)

podpis umowy online, umowa elektroniczna firma, podpis klienta strona www, workflow umowy b2b, podpis elektroniczny umowa o dzieło, archiwum umów pdf

Problem, który rozwiązujesz

Typowy chaos B2B wygląda tak: oferta w PDF → negocjacje w mailu → Word v3_final_FINAL2.docx → skan bez czytelnej daty → brak wpisu, kto i kiedy zaakceptował klauzulę RODO. Każdy dzień opóźnienia to ryzyko utraty projektu i koszt administracyjny.

System online porządkuje to w pięciu krokach z jednym identyfikatorem umowy w bazie.

Workflow B2B, od szablonu do archiwum

1. Szablon umowy

Szablon trzyma pola zmienne: nazwa firmy, NIP, zakres, kwota, harmonogram, IP, klauzule RODO, numer wersji w stopce PDF. W DevStudio szablony obsługuje warstwa contract-templates, treść generowana programowo, nie ręcznie wklejana z Worda przy każdej sprzedaży.

2. Utworzenie rekordu i linku

Endpoint POST /api/contracts (oraz powiązany flow /api/create-contract-link) tworzy unikalny identyfikator umowy, status początkowy i metadane klienta. Admin nie wysyła pliku, wysyła link do strony /contract/[contractId].

3. Wysłanie do klienta

POST /api/contracts/[id]/send wysyła mail z linkiem (z rate limitem i logowaniem IP). Status przechodzi na sent_to_client. Klient widzi treść, checkboxy zgód i pole podpisu (canvas lub zapis ręki).

4. Podpis klienta

POST /api/contracts/[id]/sign przyjmuje signedData, weryfikuje że umowa jest w statusie sent_to_client, zapisuje podpis, IP (getClientIp), timestamp i generuje PDF przez pdf-lib. Po podpisie możliwy jest drugi etap, /api/contracts/[id]/admin-sign, gdy firma counter-signuje po kliencie.

5. Archiwum i powiadomienia

  • GET /api/contracts/[id]/download-pdf, pobranie wersji z dwoma egzemplarzami / pełnym PDF
  • POST /api/generate-contract, generacja PDF z podglądu (również z rate limitem)
  • POST /api/send-contract-email, mail do klienta z potwierdzeniem (endpoint chroniony adminem, requireAdminApi)

Klient i firma mają ten sam numer umowy, datę podpisu i ścieżkę audytu w bazie, nie „ktoś miał plik na pulpicie”.

Mapa API, co za co odpowiada

Endpoint Rola
/api/contracts Lista / tworzenie umów
/api/contracts/[id] Odczyt i aktualizacja metadanych
/api/contracts/[id]/send Email z linkiem do podpisu
/api/contracts/[id]/sign Podpis klienta + PDF + status
/api/contracts/[id]/admin-sign Podpis firmy (opcjonalny etap)
/api/contracts/[id]/download-pdf Archiwum PDF
/api/generate-contract Generacja PDF (pdf-lib)
/api/send-contract-email Wysyłka potwierdzenia po podpisie
/api/contract-templates Szablony w panelu admina

Stos technologiczny: Next.js 15, Prisma, pdf-lib, nodemailer / warstwa transakcyjna SMTP. To nie jest „formularz z załącznikiem”, to mała aplikacja workflow osadzona obok strony marketingowej.

Podpis prosty vs kwalifikowany (eIDAS), bez prawniczego żargonu

Aspekt Podpis prosty (klik + zgoda + log + PDF) Podpis kwalifikowany (eIDAS)
Typowe umowy B2B IT, NDA, umowa o dzieło Zwykle wystarczy jako dowód intencji Rzadko wymagany
Banki, niektóre urzędy, przetargi regulowane Może być niewystarczający Często wymagany
Koszt i czas wdrożenia Niski, dni / 1–2 tygodnie Wyższy, certyfikat, integracja dostawcy
Dowód w sporze Logi, IP, timestamp, wersja PDF, email Silniejsza presumpcja prawna w UE

Disclaimer prawny (ważne)

Ten artykuł nie stanowi porady prawnej. Przepisy i praktyka sądowa zależą od wartości kontraktu, branży i stron umowy. Przy kontraktach wysokiej wartości lub sektorze regulowanym skonsultuj treść umowy i formę podpisu z prawnikiem. Wdrożenie techniczne zapewnia ślad audytowy i proces, nie zastępuje oceny, czy dana forma podpisu jest wymagana w Twoim przypadku.

Dla typowej umowy o świadczenie usług między przedsiębiorcami w IT sensowny pakiet to: jasna klauzula o formie dokumentowej i podpisie elektronicznym, zgoda na składanie oświadczeń przez system, numer wersji dokumentu oraz archiwum po obu stronach.

Co musi mieć strona / aplikacja podpisów

HTTPS i role

Cały flow tylko po HTTPS. Dwie role: klient (publiczny link z tokenem/ID) vs admin (panel, podpis firmy, wysyłka maili). Endpointy administracyjne nie mogą być dostępne anonimowo.

Audit trail

Przy podpisie zapisuj co najmniej:

  • identyfikator umowy i numer wersji szablonu,
  • datę i godzinę (UTC w bazie, lokalny format w PDF),
  • IP klienta (jak w sign/route.ts),
  • hash lub treść zaakceptowanych checkboxów (RODO, regulamin).

To nie „szpiegowanie”, to dowód przebiegu przy sporze „nie podpisywałem tej wersji”.

Wersjonowanie PDF

Każda zmiana zakresu lub ceny = nowa wersja szablonu i nowy rekord / nowy link. Stopka PDF: Wersja szablonu 2026-05-28 / Nr umowy DS-2026-0142.

Email transakcyjny

Po signed: mail do klienta z numerem umowy, datą i linkiem do PDF (lub załącznikiem, zależnie od polityki storage). Osobne powiadomienie do zespołu sprzedaży (buildContractAdminSignedNotificationEmail).

Bezpieczeństwo, minimum, które nie jest opcjonalne

Token i ID umowy

Link /contract/[contractId] powinien używać długiego, losowego ID (UUID), nie sekwencyjnego id=123. Zgadnięcie URL = dostęp do treści umowy przed podpisem.

Rate limiting

W DevStudio endpointy podpisu, wysyłki i generacji PDF korzystają z checkEmailRateLimit(ip), odpowiedź 429 z Retry-After przy nadużyciu. Chroni to przed spamem podpisów i brute-force na publicznych API.

Wygaśnięcie i jednorazowość

Po podpisie status ≠ sent_to_client, ponowny sign zwraca błąd. Link nie powinien pozwalać na nieskończone edycje bez logu. Opcjonalnie: data ważności linku 7–14 dni w polu expiresAt.

Brak indeksowania w Google

Layout strony umowy ustawia m.in. X-Robots-Tag: noindex, nofollow, noarchive, umowy i dane klientów nie trafiają do indeksu wyszukiwarki. To standard przy dokumentach poufnych.

Ochrona endpointów admina

/api/send-contract-email wymaga requireAdminApi, przypadkowy POST z internetu nie wyśle maila w imieniu firmy.

Integracje, które warto połączyć później

  • CRM / Notion / Slack, webhook po statusie signed (start projektu w kanale #delivery)
  • Fakturowanie, faktura dopiero po signed, nie po „ustnej zgodzie”
  • KSeF / księgowość, eksport metadanych umowy (numer, kwota, NIP)
  • Dropbox / S3, długoterminowe archiwum PDF poza serwerem aplikacji

Prosty MVP bez CRM to nadal ogromna oszczędność czasu względem maili ze skanami.

Najczęstsze błędy wdrożenia

  1. Wysyłanie Worda zamiast jednego generatora PDF, pięć wersji prawnej prawdy.
  2. Brak klauzuli, że klik „Podpisuję” jest złożeniem oświadczenia woli w formie elektronicznej.
  3. Ten sam link wielokrotnie używany bez zmiany statusu i logów.
  4. Brak kopii PDF w skrzynce klienta, „gdzie jest umowa?” tydzień później.
  5. Indeksowalne URL-e umów, wyciek metadanych w Google.
  6. Podpis przed akceptacją zakresu (checkboxy poniżej podpisu zamiast nad).
  7. Brak counter-sign firmy, gdy klient oczekuje dwustronnego PDF od razu.

Ile trwa wdrożenie?

Zakres Czas orientacyjny
Jeden szablon + link + podpis + PDF + email 1–2 tygodnie
Wiele szablonów, role, admin-sign, CRM 4–6 tygodni
Podpis kwalifikowany + dostawca certyfikatów osobny projekt (integracja + prawo)

Czasy zakładają gotowy szablon prawny od kancelarii, redakcja klauzul bywa dłuższa niż kod.

FAQ

Czy podpis na ekranie jest legalny w Polsce?

Przy umowach B2B między przedsiębiorcami, w praktyce rynkowej bardzo często tak, jako przejaw woli wraz z logami systemowymi i PDF. Wyjątki i wysoka wartość kontraktu → prawnik. Artykuł nie zastępuje konsultacji.

Czy to zastępuje DocuSign / Autenti?

Dla wewnętrznego flow B2B IT, często tak funkcjonalnie (link, podpis, PDF, mail). Dla ekosystemu prawniczego z podpisem kwalifikowanym i masową obsługą koncernów, porównaj TCO licencji vs. własny moduł na Next.js.

Co jeśli klient nie ma myszy do podpisu odręcznego?

Wystarczy checkbox + wpisanie imienia i nazwiska / stanowiska z zapisem w signedData, ważniejsza jest spójność procesu niż piękny SVG podpisu.

Gdzie trzymać PDF po latach?

Baza + object storage z backupami i polityką retencji zgodną z RODO (cel przetwarzania, usunięcie po okresie przechowywania). Sam email klienta to za mało na jedyny archiwum.

Czy chatbot i formularz kontaktowy to ta sama umowa?

Nie, lead z www to lead. Umowa to osobny rekord po akceptacji oferty. Łączenie ich w jednym mailu miesza marketing z prawnem.

Panel admina, co widzi zespół sprzedaży

Po wdrożeniu warto mieć widok listy umów: status (draft, sent_to_client, signed, …), data wysyłki, klient, kwota, link do PDF. Admin nie powinien edytować treści po wysłaniu do klienta bez nowej wersji, inaczej podpis dotyczy innego dokumentu niż ten w archiwum. W DevStudio operacje wrażliwe (np. ponowna wysyłka maila) idą przez endpointy z autoryzacją admina, nie przez publiczny link.

Normalizacja treści w PDF (pdf-lib)

Polskie znaki diakrytyczne w PDF wymagają czasem normalizacji lub osadzenia fontów, w kodzie podpisu stosowana jest funkcja zamiany znaków na ASCII-kompatybilne w treści generowanej do PDF, żeby uniknąć „pustych kwadratów” w umowie u klienta. To szczegół techniczny, ale od niego zależy profesjonalny wygląd dokumentu wysyłanego do księgowej klienta.

Porównanie z SaaS (DocuSign, Autenti, itp.)

Kryterium Własny moduł na Next.js SaaS
Koszt przy wielu umowach/rok Stały koszt dev, niski marginalny Licencja per user / envelope
Integracja z CRM i stroną Pełna API + często ręczny most
Podpis kwalifikowany Wymaga integracji dostawcy Często wbudowany
Czas do MVP 1–2 tygodnie (prosty flow) Godziny konfiguracji, tygodnie compliance

Dla dziesiątek umów rocznie w IT własny moduł się zwraca; dla jednej umowy rocznie, SaaS lub nawet podpisowany PDF mailowo może wystarczyć.

RODO i role administratora

Umowa zawiera dane osobowe (reprzentant klienta, email, telefon). W polityce prywatności opisz cel (zawarcie umowy), podstawę (np. wykonanie umowy / prawnie uzasadniony interes), okres przechowywania PDF i logów. Po upływie terminu, procedura usunięcia lub anonimizacji w bazie. Link do podpisu nie powinien być indeksowany, już wspomniane noindex, oraz dostęp tylko dla posiadacza URL.

Podsumowanie

Podpis umowy online w firmie usługowej to workflow: szablon → API → link → podpis → PDF → email → status signed. Technicznie: Next.js API routes (contracts, sign, generate-contract, send-contract-email), pdf-lib, rate limit, noindex. Prawnie: dla typowego B2B IT zwykle wystarczy prosty podpis z dobrym audytem, przy wątpliwościach prawnik, nie blog. Zacznij od jednego szablonu i jednego happy path, rozszerzaj o admin-sign i CRM, gdy proces się sprawdzi.

Chcesz system podpisów u siebie?

Powiązane wpisy

n8n, automatyzacja formularzy: webhook z Next.js → CRM → Slack (2026)
6 min czytania
AI chatbot na stronie firmowej, kiedy się opłaca, a kiedy nie (2026)
9 min czytania
Storytelling w content marketingu, jak budować historie, które sprzedają w 2026
9 min czytania

O autorze

Budujemy szybkie strony WWW, aplikacje web/mobile, chatboty AI i hosting — z naciskiem na SEO i konwersję.

Przydatne linki

Od teorii do produkcji — Branchly, hosting i realizacje.

Podoba Ci się nasze podejście? Zbudujmy coś razem.

Rozpocznij konfigurację projektu