diff --git src/Plugin/Commerce/PaymentGateway/Moyasar.php src/Plugin/Commerce/PaymentGateway/Moyasar.php
index d164595..636681a 100644
--- src/Plugin/Commerce/PaymentGateway/Moyasar.php
+++ src/Plugin/Commerce/PaymentGateway/Moyasar.php
@@ -6,6 +6,7 @@ use Drupal\commerce_order\Entity\OrderInterface;
 use Drupal\commerce_payment\Entity\PaymentInterface;
 use Drupal\commerce_payment\Entity\PaymentMethodInterface;
 use Drupal\commerce_payment\Exception\InvalidRequestException;
+use Drupal\commerce_payment\Exception\PaymentGatewayException;
 use Drupal\commerce_payment\Exception\InvalidResponseException;
 use Drupal\commerce_payment\Plugin\Commerce\PaymentGateway\OffsitePaymentGatewayBase;
 use Drupal\commerce_payment\Plugin\Commerce\PaymentGateway\SupportsStoredPaymentMethodsInterface;
@@ -319,8 +320,6 @@ class Moyasar extends OffsitePaymentGatewayBase implements MoyasarInterface, Sup
           'remote_state' => $payment_response['data']->status,
         ]);

-        $payment->save();
-
         if ($this->configuration['reuse_payment_method'] && $payment_response['data']->source->type == 'creditcard') {
           $payment_method_storage = $this->entityTypeManager->getStorage('commerce_payment_method');
           // assert($payment_method_storage instanceof PaymentMethodStorageInterface);.
@@ -337,6 +336,12 @@ class Moyasar extends OffsitePaymentGatewayBase implements MoyasarInterface, Sup
           $order->set('payment_method', $payment_method->id());
         }
       }
+
+      elseif ($payment_response['data']->status == 'failed') {
+        throw new PaymentGatewayException('Payment failed at the payment server. Please review your information and try again.');
+      }
+
+      $payment->save();
     }

   }
