Przejdź do głównej zawartości

Kody błędów i statusy odpowiedzi

Kompletna lista kodów HTTP, statusów transakcji, błędów walidacji i kodów odpowiedzi API dpay.pl.

Kody odpowiedzi HTTP

KodZnaczenieOpis
200SukcesZapytanie przetworzone poprawnie
400Nieprawidłowe zapytanieBłąd walidacji biznesowej (np. nieprawidłowy checksum rejestracji, wyłączony kanał, zła kwota)
401Brak autoryzacjiBrakujące lub nieprawidłowe dane uwierzytelniające; także nieprawidłowy checksum przy zwrotach, szczegółach transakcji i wypłatach (Unauthorized request)
403Dostęp zabronionyBrak uprawnień do zasobu (errorcode: err01)
404Nie znalezionoZasób nie istnieje
422Błąd walidacji pólZapytanie nie przeszło walidacji formalnej pól (patrz format poniżej)
500Błąd serweraWewnętrzny błąd serwera

Formaty odpowiedzi

Odpowiedź sukcesu (rejestracja płatności)

{
"error": false,
"msg": "https://secure.dpay.pl/transfer@pay@A75AEBB4-4B89-4834-AD43-EF442C133769",
"status": true,
"transactionId": "A75AEBB4-4B89-4834-AD43-EF442C133769"
}

Pole msg w odpowiedzi sukcesu rejestracji przyjmuje różne wartości w zależności od scenariusza:

ScenariuszWartość msgDodatkowe pola
Przekierowanie na bramkę płatnościURL bramki płatnościbrak
Tryb testowyURL wewnętrznej strony symulacji płatnościbrak
Przetwarzanie wewnętrzne (bez przekierowania, np. płatność inicjowana kodem)Internal processingbrak
Transakcja natychmiast opłaconaTransaction paidadditionalInfo.transaction ze szczegółami transakcji

Odpowiedź sukcesu - transakcja opłacona

{
"error": false,
"msg": "Transaction paid",
"status": true,
"transactionId": "A75AEBB4-4B89-4834-AD43-EF442C133769",
"additionalInfo": {
"transaction": {
"payment_id": "A75AEBB4-4B89-4834-AD43-EF442C133769",
"pid": null,
"mtid": null,
"email": "klient@example.com",
"description": "Zamówienie #1234",
"name": null,
"surname": null,
"value": "29.99",
"status": "paid",
"creation_date": "2026-05-03 17:40:07",
"payment_date": "2026-05-03 17:40:12"
}
}
}

Statusy w polu additionalInfo.transaction.status opisuje sekcja Statusy transakcji.

Odpowiedź błędu transakcji (np. anulowana)

{
"error": true,
"msg": "Transaction canceled",
"status": false,
"transactionId": "42191111-A7AE-392E-8C09-7965C1DC6B0B"
}

Błąd walidacji biznesowej (HTTP 400)

Zwracany przy błędach po stronie merchanta (nieprawidłowy checksum, wyłączony kanał, zła kwota). Pole message zawiera konkretny komunikat błędu, a errors to obiekt mapujący nazwę pola na komunikat (nie tablica):

{
"status": "failed",
"message": "Invalid checksum",
"errors": {
"checksum": "Invalid checksum"
}
}
{
"status": "failed",
"message": "Amount is less than 0.01 PLN",
"errors": {
"value": "Invalid value"
}
}

Błąd walidacji pól (HTTP 422)

Gdy zapytanie nie przejdzie walidacji formalnej pól (brak pola wymaganego, zły typ danych), API zwraca standardową odpowiedź walidacyjną. W tym formacie errors mapuje nazwę pola na tablicę komunikatów:

{
"message": "The value field is required.",
"errors": {
"value": [
"The value field is required."
]
}
}

Odpowiedź błędu z kodem (403)

{
"error": true,
"errorcode": "err01",
"message": "Access denied",
"status": false
}

Odpowiedź karty - sukces

{
"success": true,
"status": "success",
"message": {
"redirectText": "",
"redirectType": "SUCCESS",
"dccOffer": null
}
}
Pole message

Przy sukcesie (success: true) pole message jest obiektem, w którym dccOffer występuje zawsze - przyjmuje null, gdy oferta przewalutowania nie została złożona. Przy błędzie (success: false) pole message jest stringiem z komunikatem błędu.

Odpowiedź karty - wymagane 3D Secure

{
"success": true,
"status": "success",
"message": {
"redirectText": "PGZvcm0gbWV0aG9kPSJQT1NUIi4uLg==",
"redirectType": "FORM",
"dccOffer": null
}
}

Odpowiedź karty - błąd

{
"success": false,
"status": "error",
"message": "DCC_OFFER_EXPIRED"
}

Odpowiedź karty - oferta DCC (karta zagraniczna)

{
"success": true,
"status": "success",
"message": {
"redirectText": null,
"redirectType": "DCC_OFFER",
"dccOffer": {
"currencyConversionId": "00509166251006151007",
"originalAmount": 3.00,
"originalCurrency": "EUR",
"convertedAmount": 13.52,
"convertedCurrency": "PLN",
"exchangeRate": 4.507968,
"validUntil": "2026-05-03T17:40:07+00:00",
"declarationText": "Make sure you understand the costs of currency conversions...",
"markup": [{ "rate": 6.0, "additionalInfo": "Mastercard" }],
"europeanEconomicArea": true
}
}
}

Pełen opis obsługi: Dynamic Currency Conversion (DCC).

Odpowiedź BLIK - błąd

{
"error": true,
"msg": "Transaction canceled",
"status": false,
"transactionId": "42191111-A7AE-392E-8C09-7965C1DC6B0B",
"additionalInfo": {
"error": "USER_DECLINED",
"error_description": null
}
}

Statusy transakcji

Pole status w odpowiedzi na zapytanie o szczegóły transakcji (pbl/details) oraz w statusach zwrotów:

StatusOpis
createdTransakcja utworzona, oczekuje na płatność
processingPłatność w trakcie przetwarzania
paidPłatność zakończona sukcesem
capturedŚrodki pobrane po wcześniejszej preautoryzacji
expiredTransakcja anulowana lub wygasła
Druga mapa statusów - odpowiedź rejestracji

W polu additionalInfo.transaction.status odpowiedzi rejestracji (wariant Transaction paid) obowiązuje inne mapowanie: pending, paid, captured, canceled. Statusy pending i canceled pojawiają się wyłącznie w tym miejscu, a created, processing i expired wyłącznie w odpowiedzi szczegółów transakcji.

Statusy wypłat

Pole state w odpowiedzi na zapytanie o szczegóły wypłaty (pbl/withdraws/details):

WartośćStatusOpis
0OczekujeWypłata oczekuje na realizację
1ZrealizowanaWypłata została przetworzona
-1BłądWypłata zakończona niepowodzeniem

Oprócz state, pól kwotowych (net, fee, gross) i daty utworzenia (creation_date) odpowiedź zawiera:

PoleOpis
idIdentyfikator wypłaty
paysafecardKwota części Paysafecard wypłaty (obecne, gdy direct_settlement = 0)
declined1, gdy wypłata została odrzucona; w przeciwnym razie 0
decline_reasonPowód odrzucenia wypłaty (obecne tylko, gdy declined = 1)
decline_statusStatus procesu odrzucenia (obecne tylko, gdy declined = 1)
direct_settlement1, gdy wypłata jest realizowana jako rozliczenie kierowane na wskazane rachunki
nrbNumer rachunku wypłaty (obecne, gdy direct_settlement = 0)
receiverObiekt z danymi odbiorców rozliczenia kierowanego (obecne zamiast nrb, gdy direct_settlement = 1)

Błędy rejestracji płatności

Komunikaty zwracane w polu message odpowiedzi HTTP 400 (patrz Błąd walidacji biznesowej):

KomunikatPrzyczynaRozwiązanie
Invalid checksumNieprawidłowa suma kontrolnaSprawdź kolejność pól i klucz Hash. Format: sha256(service|hash|value|url_success|url_fail|url_ipn) z value znormalizowanym do dwóch miejsc po przecinku
Service not foundNieznana nazwa serwisuSprawdź pole service w panelu dpay.pl
Amount is less than 0.01 PLNKwota niższa niż minimalnaPodaj kwotę co najmniej 0.01 w formacie z kropką dziesiętną (np. "29.99"); w errors.value pojawia się wtedy Invalid value

Kody błędów BLIK

Przy odmowie płatności BLIK pole additionalInfo.error zawiera surowy kod odmowy systemu BLIK, przekazywany 1:1 bez mapowania po stronie dpay. Lista kodów jest otwarta - zależy od banku klienta i systemu BLIK. Traktuj to pole jako informację diagnostyczną i nie buduj na nim logiki biznesowej.

W trybie testowym płatności są symulowane i pole additionalInfo.error przyjmuje jeden z następujących kodów:

KodOpis
DECLINETransakcja odrzucona przez wydawcę
EXPIRED_CARDInstrument płatniczy wygasł
INSUFFICIENT_FUNDSNiewystarczające środki
USER_DECLINEDUżytkownik odrzucił transakcję
TIMEOUTUpłynął czas oczekiwania na potwierdzenie
ALIAS_NOT_FOUNDNie znaleziono aliasu
SYSTEM_ERRORSymulowany błąd systemowy

Kody błędów MB WAY

Pole additionalInfo.error w odpowiedzi na płatność MB WAY (przy error: true, status: false):

KodOpisRozwiązanie
E0506Numer telefonu nie jest zarejestrowany w aplikacji MB WAYPoproś klienta o rejestrację numeru w aplikacji MB WAY lub o podanie innego numeru
E0508Numer telefonu chwilowo niedostępny w MB WAYSpróbuj ponownie za chwilę lub użyj innej metody płatności
E0099Operacja niedozwolona dla podanego numeruKlient powinien skontaktować się z obsługą MB WAY
E0103Niepoprawne dane żądaniaSprawdź format numeru telefonu (PT: 9 cyfr, prefix 351) oraz pozostałe pola
E0309Transakcja nie znalezionaSprawdź transactionId lub zainicjuj nową płatność
E0399Transakcja odrzuconaKlient odrzucił transakcję w aplikacji lub upłynął czas potwierdzenia
E0000Kod zastępczy - system nie zwrócił kodu błęduPotraktuj jak błąd generyczny; sprawdź error_description, przy powtórzeniach eskaluj do support
inne E*Generyczny błąd procesora MB WAYPole error_description zawiera szczegółowy komunikat - eskaluj do support jeśli powtarza się

Format pełnej odpowiedzi błędu MB WAY:

{
"error": true,
"msg": "Transaction canceled",
"status": false,
"transactionId": "42191111-A7AE-392E-8C09-7965C1DC6B0B",
"additionalInfo": {
"error": "E0506",
"error_description": "The provided alias does not exists"
}
}

Kody odpowiedzi kart

Pole message.redirectType w odpowiedzi na płatność kartą. Poniższa lista wartości jest kompletna:

WartośćZnaczenieDziałanie
SUCCESSPłatność zakończonaPrzekieruj klienta na stronę sukcesu
FORMWymagane 3D SecureWyświetl formularz 3DS z redirectText (zakodowany Base64)
URLPrzekierowanie na adres zewnętrznyPrzekieruj klienta na adres z redirectText
DCC_OFFEROferta przewalutowania (DCC)Pokaż klientowi obie kwoty z pola dccOffer, po decyzji wywołaj endpoint ponownie z dccDecision (patrz DCC)

Kody błędów DCC

Błędy DCC są zwracane z kodem HTTP 200 w formacie {"success": false, "status": "error", "message": "..."} - pole message jest wtedy stringiem z kodem błędu:

{
"success": false,
"status": "error",
"message": "DCC_OFFER_EXPIRED"
}
KomunikatHTTPPrzyczynaRozwiązanie
DCC_OFFER_EXPIRED200Decyzja wysłana po validUntil z oferty DCCPokaż "Oferta wygasła", wróć do ekranu metody płatności i rozpocznij nowy flow
INVALID_FLOW_STATE200dccDecision wysłane bez wcześniejszej oferty (np. na zfinalizowanej transakcji)Błąd techniczny - log + redirect na error screen
uwaga

Nie rozpoznawaj tych błędów po kodzie HTTP - odpowiedź przychodzi z HTTP 200. Sprawdzaj pole success w body odpowiedzi.

Kody błędów DCB

Błędy rejestracji DCB (endpoint secure.dpay.pl/dcb/register)

Komunikaty zwracane w polu msg przy error: true:

KomunikatHTTPPrzyczynaRozwiązanie
missing guid or value or url success/fail or chcksum400Brak jednego z wymaganych pól: guid, value, url_success, url_fail, checksumUzupełnij wszystkie wymagane pola zapytania
Could not find service by GUID400Nieznany identyfikator GUIDSprawdź GUID w panelu dpay.pl
Service not verified.401Punkt płatności nie przeszedł weryfikacjiDokończ weryfikację punktu płatności
Invalid checksum400Nieprawidłowa suma kontrolnaKwota w checksum w złotych z dwoma miejscami po przecinku, bez url_ipn - patrz Generowanie checksum
notatka

Komunikat missing guid or value or url success/fail or chcksum zawiera literówkę (chcksum) po stronie API - jest zwracany dosłownie w tej formie.

Statusy płatności DCB

WartośćStatusOpis
1PAIDPłatność zrealizowana
0PENDINGPłatność oczekuje na potwierdzenie
-1REJECTEDPłatność odrzucona
2REFUNDEDPłatność zwrócona

Statusy weryfikacji DCB

WartośćStatusOpis
1VERIFIEDNumer zweryfikowany
0NOT_VERIFIEDNumer niezweryfikowany
-1BLOCKEDNumer zablokowany
-2REQUIRES_CONTACTWymagany kontakt z obsługą

Statusy kodów SMS

WartośćStatusOpis
1USEDKod wykorzystany
0PENDINGKod oczekuje na użycie
-1REJECTEDKod odrzucony