# Error handling

After creating a payment, developers need to consider the possibility of failures during payment and failures during order completion.

## Payment errors

Successful payment is confirmed by the client polling the [GetCurrentRedirectPayment](/openapi/digital-platform/openapi/payments/ocapiorderpayments_getcurrentredirectpayment) or [GetCurrentEmbeddedPayment](/openapi/digital-platform/openapi/payments/ocapiorderpayments_getcurrentembeddedpayment) endpoints, depending on which payment method is being used.

If a `Declined` status is returned, the client application should treat this as a failure in the patron's payment. The client application should show an appropriate "payment declined" UI with a "try again" button that starts the payment flow again.

## Order completion errors

Successful order completion is confirmed by the client polling the [GetOrderCompletion](/openapi/digital-platform/openapi/completion/ocapiordercompletion_getordercompletion) endpoint after a successful payment result is received. For a successful payment, the [GetOrderCompletion](/openapi/digital-platform/openapi/completion/ocapiordercompletion_getordercompletion) endpoint should indicate the order is completed shortly after a successful payment result is received.

If a `Failed` status is returned, a post-payment failure has occurred, i.e., payment has been taken but the order cannot be completed.

A refund process should be set up to manually handle these post-payment failures, e.g., the patron can request a refund by contacting the cinema's customer support.

The client application should inform the patron that:

- there was an unexpected error processing their order, and
- they should contact the cinema's customer support for assistance.