Error Handling Guide

Copy Markdown View Source

All AdyenClient functions return {:ok, body} or {:error, %AdyenClient.Error{}}.

Error struct

%AdyenClient.Error{
  type:          :server_error,
  status:        503,
  message:       "Service unavailable",
  error_code:    nil,
  psp_reference: nil,
  raw:           %{"message" => "Service unavailable"},
  retryable:     true
}

Pattern matching

case AdyenClient.Checkout.Payments.create(params) do
  {:ok, %{"resultCode" => "Authorised"} = resp} -> handle_success(resp)
  {:error, %AdyenClient.Error{type: :auth_error}} -> handle_auth_error()
  {:error, %AdyenClient.Error{retryable: true}}   -> schedule_retry()
  {:error, err}                                   -> handle_generic(err)
end

Error types

typeHTTPretryable
:auth_error401, 403false
:not_found404false
:validation_error422false
:api_error400–499false
:rate_limited429true
:server_error500–599true
:network_errortrue
:timeouttrue
:config_errorfalse
:webhook_validation_errorfalse