Opłata aktywacyjna i natychmiastowa aktywacja
Ostatnim krokiem onboardingu jest opłata aktywacyjna. Merchant wykonuje ją bezpośrednio ze swojego banku, bez przepisywania numerów rachunku i tytułu. Opłata pełni dwie role naraz: pokrywa koszt weryfikacji i potwierdza rachunek, na który merchant będzie otrzymywał wypłaty.
Do tego dochodzi krok opcjonalny - merchant loguje się do tego samego rachunku, a dpay potwierdza, że rachunek faktycznie należy do niego. Ten krok skraca aktywację z 1-2 dni roboczych do kilku minut.
Opłata pokrywa koszt weryfikacji, który ponosimy niezależnie od jej wyniku. Musisz poinformować o tym merchanta przed rozpoczęciem płatności - w naszym hostowanym flow jest to osobna, świadoma zgoda, a nie drobny druk. Jeśli budujesz własny interfejs, odpowiedzialność za ten komunikat jest po Twojej stronie.
Cały przepływ
Krok 1: pokaż listę banków
Zwracamy wyłącznie banki dostępne w danej chwili - wyłączone i chwilowo niesprawne są już odfiltrowane. Wynik zmienia się rzadko, więc warto go u siebie cache'ować.
GET/api/partner/v1/onboarding/{ref}/activation/banksBanki, przez które można opłacić aktywację.Pełny kontrakt w API Reference
Krok 2: pokaż obie kategorie bankowości
Banki różnią się tym, gdzie obsługują firmy. Część prowadzi konta firmowe w zwykłej bankowości internetowej, część ma osobny system dla firm. Nie da się tego wywnioskować z formy prawnej merchanta - dlatego pokaż obie kategorie i pozwól wybrać:
Wartość account_variant | Etykieta dla merchanta | Kiedy |
|---|---|---|
retail | Bankowość indywidualna | Zwykłe logowanie; w wielu bankach także konta firmowe |
company | Bankowość firmowa | Osobny system dla firm |
GET /activation zwraca suggested_variant - użyj go jako domyślnego zaznaczenia, nie jako rozstrzygnięcia. Zły wariant kończy się tym, że merchant nie widzi swojego rachunku i nie jest w stanie zapłacić.
Krok 3: rozpocznij płatność
Kwoty nie podajesz - ustala ją dpay na podstawie typu podmiotu.
POST/api/partner/v1/onboarding/{ref}/activationRozpocznij opłatę aktywacyjną i odbierz adres banku.Pełny kontrakt w API Reference
Merchant musi zapłacić z rachunku zgłoszonego do wypłat. Płatność z innego konta nie aktywuje konta. Część banków pozwala nam z góry ograniczyć wybór do właściwego rachunku (supports_sender_account na liście banków); w pozostałych sprawdzamy zgodność po fakcie, więc warto o tym wymogu napisać w swoim interfejsie.
Powtórne wywołanie w trakcie trwającej płatności zwraca istniejącą próbę, nie tworzy drugiej. Po zaksięgowaniu opłaty kolejne wywołania zwracają 409 - opłata jest bezzwrotna i nigdy nie jest pobierana dwukrotnie. Po płatności odrzuconej lub anulowanej merchant może zacząć od nowa.
Krok 4: zaproponuj natychmiastową aktywację
Po zaksięgowaniu opłaty merchant ma wybór. Postaw go jasno, bo obie drogi są poprawne:
- Aktywuj teraz - merchant loguje się do tego samego rachunku, aktywacja w kilka minut
- Poczekam - bez logowania, aktywacja po zaksięgowaniu przelewu, 1-2 dni robocze
/api/partner/v1/onboarding/{ref}/activation/verify-ownerPotwierdzenie właściciela rachunku - natychmiastowa aktywacja.Pełny kontrakt w API Reference
Ten krok nic nie kosztuje - opłata jest już rozliczona. Jeśli potwierdzenie się nie powiedzie, merchant poprawia rachunek do wypłat i powtarza wyłącznie ten krok.
Krok 5: odpytuj status
GET/api/partner/v1/onboarding/{ref}/activationStan opłaty, potwierdzenia właściciela i aktywacji konta.Pełny kontrakt w API Reference
Potwierdzenie z banku przychodzi z bardzo różnym opóźnieniem - od sekund do godzin. Każdy stan nieterminalny traktuj jako „czekamy", nie jako niepowodzenie.
Jak czytać odpowiedź
| Pole | Uwaga |
|---|---|
status | Stan płatności. null znaczy, że płatność nie została jeszcze rozpoczęta |
sender_account_match | null to nie to samo co false. null znaczy „nie ustalono" - bank nie podał rachunku nadawcy. false znaczy realną niezgodność |
owner_result | manual znaczy, że sprawę ogląda człowiek. Nie komunikuj tego merchantowi jako odmowy |
activated | Jedyne pole, po którym poznasz, że konto jest gotowe do przyjmowania płatności |
Ścieżka zapasowa
Merchant zawsze może opłacić aktywację zwykłym przelewem - z danymi do przepisania i aktywacją po zaksięgowaniu. Trzymaj tę drogę widoczną, bo bywa jedyną możliwą:
- banku merchanta nie ma na liście
- usługa jest chwilowo niedostępna (
503naGET /activation/banksalboPOST /activation) - merchant nie chce logować się do banku w cudzym interfejsie
Kwota jest w obu drogach taka sama; różni się tylko sposób zapłaty i czas aktywacji.
Czego nie da się przenieść do Twojego UI
Autoryzacja płatności i logowanie do banku zawsze odbywają się po stronie banku merchanta - dostajesz adres, pod który masz go skierować. Nie pośrednicz w danych logowania i nie osadzaj strony banku w ramce: banki blokują osadzanie, a próba skończy się pustym ekranem. Jeśli prowadzisz onboarding w iframe, otwórz adres banku w nowej karcie i odpytuj status u siebie.