diff --git a/src/Plugin/Commerce/PaymentGateway/DirectLink.php b/src/Plugin/Commerce/PaymentGateway/DirectLink.php
index 35f07f309..883cb6495 100644
--- a/src/Plugin/Commerce/PaymentGateway/DirectLink.php
+++ b/src/Plugin/Commerce/PaymentGateway/DirectLink.php
@@ -260,7 +260,7 @@ public function createPayment(PaymentInterface $payment, $capture = TRUE) {
       'PAYMENT_ID' => $payment->id(),
     ]);
     // Ingenico requires the AMOUNT value to be sent in decimals.
-    $directLinkRequest->setAmount((int) ($payment->getAmount()->getNumber() * 100));
+    $directLinkRequest->setAmount((int) $this->toMinorUnits($payment->getAmount()));
     $directLinkRequest->setCurrency($payment->getAmount()->getCurrencyCode());
     $directLinkRequest->setLanguage($this->configuration['language']);
 
diff --git a/src/PluginForm/ECommerceOffsiteForm.php b/src/PluginForm/ECommerceOffsiteForm.php
index fa56a5825..7a560a2d8 100644
--- a/src/PluginForm/ECommerceOffsiteForm.php
+++ b/src/PluginForm/ECommerceOffsiteForm.php
@@ -44,7 +44,8 @@ public function buildConfigurationForm(array $form, FormStateInterface $form_sta
       'PAYMENT_ID' => $payment->id(),
     ]);
     // Ingenico requires the AMOUNT value to be sent in decimals.
-    $ecommercePaymentRequest->setAmount((int) ($payment->getAmount()->getNumber() * 100));
+    $amount = $payment_gateway_plugin->toMinorUnits($payment->getAmount());
+    $ecommercePaymentRequest->setAmount((int) $amount);
     $ecommercePaymentRequest->setCurrency($payment->getAmount()->getCurrencyCode());
     $ecommercePaymentRequest->setLanguage($payment_gateway_configuration['language']);
 
