diff --git a/ajax/frontend/redeem.php b/ajax/frontend/redeem.php
index ca3cd77b4f5150e7a519d57633b9cca2d0fe1f6b..34328ec90df8a1e4b0b90c314b1c5eb8426fb705 100644
--- a/ajax/frontend/redeem.php
+++ b/ajax/frontend/redeem.php
@@ -14,11 +14,15 @@
  */
 QUI::$Ajax->registerFunction(
     'package_quiqqer_coupons_ajax_frontend_redeem',
-    function ($id) {
-        $id = (int)$id;
-
+    function ($code, $orderHash) {
         try {
-            $CouponCode = Handler::getCouponCode($id);
+            $CouponCode = Handler::getCouponCodeByCode($code);
+        } catch (QUI\ERP\Coupons\CouponCodeException $Exception) {
+            QUI\System\Log::writeDebugException($Exception);
+
+            QUI::getMessagesHandler()->addError($Exception->getMessage());
+
+            return false;
         } catch (\Exception $Exception) {
             QUI\System\Log::writeException($Exception);
 
@@ -32,8 +36,10 @@ function ($id) {
             return false;
         }
 
+        $Order = QUI\ERP\Order\Handler::getInstance()->getOrderByHash($orderHash);
+
+
         return true;
     },
-    ['id'],
-    'Permission::checkAdminUser'
+    ['code', 'orderHash']
 );
diff --git a/bin/frontend/classes/CouponCodes.js b/bin/frontend/classes/CouponCodes.js
index 643f2e544edef38759ceef312dc5a7cf846244d7..c3774c452855a8edea64dd1503ee243452523ade 100644
--- a/bin/frontend/classes/CouponCodes.js
+++ b/bin/frontend/classes/CouponCodes.js
@@ -23,13 +23,15 @@ define('package/quiqqer/coupons/bin/frontend/classes/CouponCodes', [
          * Adds a coupon to the current session basket
          *
          * @param {String} code
+         * @param {String} orderHash
          * @return {Promise}
          */
-        addCouponCodeToBasket: function (code) {
+        addCouponCodeToBasket: function (code, orderHash) {
             return new Promise(function (resolve, reject) {
                 QUIAjax.post('package_quiqqer_coupons_ajax_frontend_redeem', resolve, {
                     'package': pkg,
                     code     : code,
+                    orderHash: orderHash,
                     onError  : reject
                 });
             });
diff --git a/bin/frontend/controls/CouponCodeInput.css b/bin/frontend/controls/CouponCodeInput.css
index 3978cd8b500ecac156dc41bee452afc08ec162d6..d3d2a61d8c3e2fb20812157445d91be738c4d388 100644
--- a/bin/frontend/controls/CouponCodeInput.css
+++ b/bin/frontend/controls/CouponCodeInput.css
@@ -4,4 +4,18 @@
 
 div + .quiqqer-coupons-field {
     margin-left: 20px;
+}
+
+.quiqqer-coupons-couponcodeinput {
+    display: flex;
+    padding: 5px;
+}
+
+.quiqqer-coupons-couponcodeinput button {
+    border-radius: 0 3px 3px 0;
+}
+
+.quiqqer-coupons-couponcodeinput input {
+    border-radius: 3px 0 0 3px;
+    line-height: 36px;
 }
\ No newline at end of file
diff --git a/bin/frontend/controls/CouponCodeInput.js b/bin/frontend/controls/CouponCodeInput.js
index b79b4f88034f655627042cf22a9206f71000df87..9da8d9782a9d6401f51f10cc98d464b6931999f4 100644
--- a/bin/frontend/controls/CouponCodeInput.js
+++ b/bin/frontend/controls/CouponCodeInput.js
@@ -88,9 +88,25 @@ define('package/quiqqer/coupons/bin/frontend/controls/CouponCodeInput', [
 
             this.Loader.show();
 
-            CouponCodes.addCouponCodeToBasket(code).then(function () {
-                // @todo
-                self.Loader.hide();
+            // get order process
+            var OrderProcessNode = this.getElm().getParent(
+                '[data-qui="package/quiqqer/order/bin/frontend/controls/OrderProcess"]'
+            );
+
+            var OrderProcess = window.QUI.Controls.getById(OrderProcessNode.get('data-quiid'));
+
+            OrderProcess.Loader.show();
+
+            OrderProcess.getOrder().then(function (orderHash) {
+                return CouponCodes.addCouponCodeToBasket(code, orderHash);
+            }).then(function (redeemed) {
+                if (redeemed === false) {
+                    OrderProcess.Loader.hide();
+                    self.Loader.hide();
+                    return;
+                }
+
+                OrderProcess.refreshCurrentStep();
             });
         }
     });
diff --git a/locale.xml b/locale.xml
index a26cae0dac6f3d345f0c299988c61ca4dedc7617..9adf4dba298b157b818c08647fdbac962389ae18 100644
--- a/locale.xml
+++ b/locale.xml
@@ -16,7 +16,7 @@
             <en><![CDATA[Shop]]></en>
         </locale>
         <locale name="menu.erp.couponcodes.title">
-            <de><![CDATA[Coupon-Codes]]></de>
+            <de><![CDATA[Gutschein-Codes]]></de>
             <en><![CDATA[Coupon codes]]></en>
         </locale>
 
@@ -26,7 +26,7 @@
             <en><![CDATA[General settings]]></en>
         </locale>
         <locale name="settings.menu.title">
-            <de><![CDATA[Coupon-Codes]]></de>
+            <de><![CDATA[Gutschein-Codes]]></de>
             <en><![CDATA[Coupon codes]]></en>
         </locale>
         <locale name="settings.category.title">
@@ -34,25 +34,29 @@
             <en><![CDATA[Settings]]></en>
         </locale>
         <locale name="settings.prefix.title">
-            <de><![CDATA[Coupon-Code Präfix]]></de>
+            <de><![CDATA[Gutschein-Code Präfix]]></de>
             <en><![CDATA[Coupon code prefix]]></en>
         </locale>
         <locale name="settings.prefix.description" html="true">
-            <de><![CDATA[Präfix, das generierten Coupon-Codes vorangestellt wird. <b>Betrifft nicht bereits erstellte oder eigenhändig festgelegte Coupon-Codes!</b>]]></de>
-            <en><![CDATA[Prefix that is prepended to generated Coupon codes. <b>Does not affect already created Coupon codes or codes set by the user!</b>]]></en>
+            <de>
+                <![CDATA[Präfix, das generierten Coupon-Codes vorangestellt wird. <b>Betrifft nicht bereits erstellte oder eigenhändig festgelegte Coupon-Codes!</b>]]></de>
+            <en>
+                <![CDATA[Prefix that is prepended to generated Coupon codes. <b>Does not affect already created Coupon codes or codes set by the user!</b>]]></en>
         </locale>
         <locale name="settings.codeGenerator.title">
-            <de><![CDATA[Coupon-Code Generator]]></de>
+            <de><![CDATA[Gutschein-Code Generator]]></de>
             <en><![CDATA[Coupon code Generator]]></en>
         </locale>
         <locale name="settings.codeGenerator.description">
-            <de><![CDATA[Bestimmt die Klasse, die zufällige Coupon-Codes generiert. Hat auch Auswirkungen auf das Format der Coupon-Codes.]]></de>
-            <en><![CDATA[Determines the class that generates random invitation codes. Also affects the format of Coupon codes.]]></en>
+            <de>
+                <![CDATA[Bestimmt die Klasse, die zufällige Coupon-Codes generiert. Hat auch Auswirkungen auf das Format der Coupon-Codes.]]></de>
+            <en>
+                <![CDATA[Determines the class that generates random invitation codes. Also affects the format of Coupon codes.]]></en>
         </locale>
 
         <!-- Permissions -->
         <locale name="permission.quiqqer.invitecode._header">
-            <de><![CDATA[Coupon-Codes]]></de>
+            <de><![CDATA[Gutschein-Codes]]></de>
             <en><![CDATA[Coupon codes]]></en>
         </locale>
         <locale name="permission.quiqqer.invitecode.view">
@@ -72,8 +76,10 @@
     <groups name="quiqqer/coupons" datatype="php">
         <!-- Ajax -->
         <locale name="message.ajax.general_error">
-            <de><![CDATA[Beim Verarbeiten der Anfrage ist ein unerwarteter Fehler aufgetreten. Bitte prüfen Sie die Fehler-Logs oder kontaktieren Sie einen Administrator.]]></de>
-            <en><![CDATA[An unexpected error occurred while processing the request. Please check the error logs or contact an administrator.]]></en>
+            <de>
+                <![CDATA[Beim Verarbeiten der Anfrage ist ein unerwarteter Fehler aufgetreten. Bitte prüfen Sie die Fehler-Logs oder kontaktieren Sie einen Administrator.]]></de>
+            <en>
+                <![CDATA[An unexpected error occurred while processing the request. Please check the error logs or contact an administrator.]]></en>
         </locale>
         <locale name="message.ajax.create.error" html="true">
             <de><![CDATA[Die Coupon-Codes konnten nicht erstellt werden:<br><br>[error]]]></de>
@@ -132,8 +138,10 @@
 
         <!-- Class: Handler -->
         <locale name="exception.Handler.code_already_exists">
-            <de><![CDATA[Der Coupon-Code "[code]" existiert bereits. Bitte verwenden Sie einen anderen Code oder lassen Sie das Code-Feld leer, um einen zufälligen Code zu erzeugen.]]></de>
-            <en><![CDATA[The Coupon code "[code]" already exists. Please use a differenct code or leave the code field empty to generate a random one.]]></en>
+            <de>
+                <![CDATA[Der Coupon-Code "[code]" existiert bereits. Bitte verwenden Sie einen anderen Code oder lassen Sie das Code-Feld leer, um einen zufälligen Code zu erzeugen.]]></de>
+            <en>
+                <![CDATA[The Coupon code "[code]" already exists. Please use a differenct code or leave the code field empty to generate a random one.]]></en>
         </locale>
         <locale name="exception.Handler.code_not_found">
             <de><![CDATA[Der Coupon-Code "[code]" wurde nicht gefunden.]]></de>
@@ -144,7 +152,8 @@
             <en><![CDATA[The discount #[discountId] cannot be used: [error]]]></en>
         </locale>
         <locale name="exception.Handler.no_discounts_linked">
-            <de><![CDATA[Bitte geben Sie mindestens einen Rabatt an, der mit dem Coupon-Code verknüpft werden soll.]]></de>
+            <de>
+                <![CDATA[Bitte geben Sie mindestens einen Rabatt an, der mit dem Coupon-Code verknüpft werden soll.]]></de>
             <en><![CDATA[Please provide ad least on discount that shall be linked to the Coupon code.]]></en>
         </locale>
     </groups>
@@ -152,7 +161,7 @@
     <groups name="quiqqer/coupons" datatype="js">
         <!-- Control: Manager -->
         <locale name="controls.manager.title">
-            <de><![CDATA[Coupon-Codes]]></de>
+            <de><![CDATA[Gutschein-Codes]]></de>
             <en><![CDATA[Coupon codes]]></en>
         </locale>
         <locale name="controls.manager.create.template.labelDate">
@@ -176,11 +185,11 @@
             <en><![CDATA[Restrict to the following groups (optional)]]></en>
         </locale>
         <locale name="controls.manager.create.template.labelCode">
-            <de><![CDATA[Coupon-Code (optional - wird automatisch generiert, wenn Feld leergelassen wird)]]></de>
+            <de><![CDATA[Gutschein-Code (optional - wird automatisch generiert, wenn Feld leergelassen wird)]]></de>
             <en><![CDATA[Coupon code (optional - is generated automatically if left empty)]]></en>
         </locale>
         <locale name="controls.manager.create.template.labelReusable">
-            <de><![CDATA[Wiederverwendbar (Coupon-Code kann mehrfach verwendet werden)]]></de>
+            <de><![CDATA[Wiederverwendbar (Gutschein-Code kann mehrfach verwendet werden)]]></de>
             <en><![CDATA[Reusable (Coupon code can be used multiple times)]]></en>
         </locale>
         <locale name="controls.manager.create.template.labelDiscount">
@@ -188,15 +197,15 @@
             <en><![CDATA[Linked discount]]></en>
         </locale>
         <locale name="controls.manager.details.popup.title_new">
-            <de><![CDATA[Neuen Coupon-Code erstellen]]></de>
+            <de><![CDATA[Neuen Gutschein-Code erstellen]]></de>
             <en><![CDATA[Create new Coupon code]]></en>
         </locale>
         <locale name="controls.manager.details.popup.title_edit">
-            <de><![CDATA[Coupon-Code "[code]" bearbeiten]]></de>
+            <de><![CDATA[Gutschein-Code "[code]" bearbeiten]]></de>
             <en><![CDATA[Edit Coupon code "[code]"]]></en>
         </locale>
         <locale name="controls.manager.details.popup.btn.confirm_text_new">
-            <de><![CDATA[Coupon-Code erstellen]]></de>
+            <de><![CDATA[Gutschein-Code erstellen]]></de>
             <en><![CDATA[Create Coupon code]]></en>
         </locale>
         <locale name="controls.manager.details.popup.btn.confirm_text_edit">
@@ -204,11 +213,11 @@
             <en><![CDATA[Save changes]]></en>
         </locale>
         <locale name="controls.manager.details.popup.btn.confirm_new">
-            <de><![CDATA[Hier klicken, um neuen Coupon-Code erstellen]]></de>
+            <de><![CDATA[Hier klicken, um neuen Gutschein-Code erstellen]]></de>
             <en><![CDATA[Click here to create a new Coupon code]]></en>
         </locale>
         <locale name="controls.manager.details.popup.btn.confirm_edit">
-            <de><![CDATA[Hier klicken, um die Änderungen am Coupon-Code zu speichern]]></de>
+            <de><![CDATA[Hier klicken, um die Änderungen am Gutschein-Code zu speichern]]></de>
             <en><![CDATA[Click here to save the changes made to the Coupon code]]></en>
         </locale>
         <locale name="controls.manager.tbl.btn.create">
@@ -284,27 +293,30 @@
             <en><![CDATA[User does not exist anymore]]></en>
         </locale>
         <locale name="controls.manager.delete.popup.info">
-            <de><![CDATA[Sind Sie sicher, dass Sie die folgenden Coupon-Codes unwiderruflich löschen wollen?<br><br>[codes]]]></de>
+            <de>
+                <![CDATA[Sind Sie sicher, dass Sie die folgenden Gutschein-Codes unwiderruflich löschen wollen?<br><br>[codes]]]></de>
             <en><![CDATA[Are you sure you want to irrevocably delete the following Coupon codes?<br><br>[codes]]]></en>
         </locale>
         <locale name="controls.manager.delete.popup.title">
-            <de><![CDATA[Coupon-Codes löschen]]></de>
+            <de><![CDATA[Gutschein-Codes löschen]]></de>
             <en><![CDATA[Delete Coupon codes]]></en>
         </locale>
         <locale name="controls.manager.sendmail.popup.info">
-            <de><![CDATA[Sind Sie sicher, dass die markierten Coupon-Codes per E-Mail versandt werden sollen? CouponCodes, die keine zugewiesene E-Mail-Adresse haben, werden nicht versandt.]]></de>
-            <en><![CDATA[Are you sure that the marked Invite codes should be sent by e-mail? Coupon codes that do not have an assigned e-mail address will not be sent.]]></en>
+            <de>
+                <![CDATA[Sind Sie sicher, dass die markierten Gutschein-Codes per E-Mail versandt werden sollen? CouponCodes, die keine zugewiesene E-Mail-Adresse haben, werden nicht versandt.]]></de>
+            <en>
+                <![CDATA[Are you sure that the marked Invite codes should be sent by e-mail? Coupon codes that do not have an assigned e-mail address will not be sent.]]></en>
         </locale>
         <locale name="controls.manager.sendmail.popup.title">
-            <de><![CDATA[Coupon-Codes versenden]]></de>
+            <de><![CDATA[Gutschein-Codes versenden]]></de>
             <en><![CDATA[Send Coupon codes]]></en>
         </locale>
         <locale name="controls.manager.sendmail.popup.label.resend">
-            <de><![CDATA[Coupon-Codes, die bereits versendet wurden, nochmals versenden]]></de>
+            <de><![CDATA[Gutschein-Codes, die bereits versendet wurden, nochmals versenden]]></de>
             <en><![CDATA[Resend Coupon codes that have already been sent]]></en>
         </locale>
         <locale name="controls.Manager.usages.title">
-            <de><![CDATA[Verwendungen von Coupon-Code "[code]"]]></de>
+            <de><![CDATA[Verwendungen von Gutschein-Code "[code]"]]></de>
             <en><![CDATA[Usages of Coupon code "[code]"]]></en>
         </locale>
         <locale name="controls.Manager.usages.template.headerUser">
@@ -330,7 +342,7 @@
 
         <!-- Control: frontend/controls/CouponCodeInput -->
         <locale name="controls.frontend.CouponCodeInput.template.labelInput">
-            <de><![CDATA[Coupon-Code]]></de>
+            <de><![CDATA[Gutschein-Code]]></de>
             <en><![CDATA[Coupon code]]></en>
         </locale>
         <locale name="controls.frontend.CouponCodeInput.template.submitBtnText">
diff --git a/src/QUI/ERP/Coupons/Handler.php b/src/QUI/ERP/Coupons/Handler.php
index b920021fe3d21abaf3e93c736c8938a39ee4d997..c437abdb6a3c4386caf151f0192c594f54bae586 100644
--- a/src/QUI/ERP/Coupons/Handler.php
+++ b/src/QUI/ERP/Coupons/Handler.php
@@ -17,9 +17,9 @@ class Handler
     /**
      * Permissions
      */
-    const PERMISSION_VIEW   = 'quiqqer.couponcode.view';
+    const PERMISSION_VIEW = 'quiqqer.couponcode.view';
     const PERMISSION_CREATE = 'quiqqer.couponcode.create';
-    const PERMISSION_EDIT   = 'quiqqer.couponcode.edit';
+    const PERMISSION_EDIT = 'quiqqer.couponcode.edit';
     const PERMISSION_DELETE = 'quiqqer.couponcode.delete';
 
     /**
@@ -139,7 +139,7 @@ public static function createCouponCode($discountIds, $settings = [])
             'title'       => empty($settings['title']) ? null : $settings['title'],
             'createDate'  => $Now->format('Y-m-d H:i:s'),
             'code'        => $code,
-            'isReusable'  => !empty($settings['reusable']),
+            'isReusable'  => empty($settings['reusable']) ? 0 : 1,
             'discountIds' => json_encode($discountIds)
         ];
 
@@ -403,8 +403,14 @@ public static function existsCode($code)
      */
     public static function getRegistrationSite()
     {
-        $Conf    = QUI::getPackage('quiqqer/coupons')->getConfig();
-        $regSite = $Conf->get('settings', 'registrationSite');
+        try {
+            $Conf    = QUI::getPackage('quiqqer/coupons')->getConfig();
+            $regSite = $Conf->get('settings', 'registrationSite');
+        } catch (QUI\Exception $Exception) {
+            QUI\System\Log::writeDebugException($Exception);
+
+            return false;
+        }
 
         if (empty($regSite)) {
             return false;