diff --git a/ajax/invoices/addPayment.php b/ajax/invoices/addPayment.php
index 42c6e69d8b0346e2bd2d0b73e6920e9bcedb6a9f..7afc367307e0ee2505749767a429d82b1ffd9379 100644
--- a/ajax/invoices/addPayment.php
+++ b/ajax/invoices/addPayment.php
@@ -24,6 +24,6 @@ function ($invoiceId, $amount, $paymentMethod, $date) {
 
         $Invoice->addPayment($amount, $Payment, $date);
     },
-    array('invoiceId', 'amount', 'paymentMethod', 'date'),
+    ['invoiceId', 'amount', 'paymentMethod', 'date'],
     'Permission::checkAdminUser'
 );
diff --git a/ajax/invoices/articleHtml.php b/ajax/invoices/articleHtml.php
index 7e8a5b66dd26d23a52c64e44f6df569fdfdd80a5..2a36f14526dfc2a01bfdbe5b2380fe88c045828f 100644
--- a/ajax/invoices/articleHtml.php
+++ b/ajax/invoices/articleHtml.php
@@ -20,6 +20,6 @@ function ($invoiceId) {
 
         return $Articles->toHTMLWithCSS();
     },
-    array('invoiceId'),
+    ['invoiceId'],
     'Permission::checkAdminUser'
 );
diff --git a/ajax/invoices/copy.php b/ajax/invoices/copy.php
index 47c95e9e2a11c585d655a0021973b6b191dcf439..8c82d2218284d66eec149e88f382ae6984d29013 100644
--- a/ajax/invoices/copy.php
+++ b/ajax/invoices/copy.php
@@ -16,6 +16,6 @@ function ($invoiceId) {
 
         return $Invoices->getInvoice($invoiceId)->copy()->getId();
     },
-    array('invoiceId'),
+    ['invoiceId'],
     'Permission::checkAdminUser'
 );
diff --git a/ajax/invoices/createCreditNote.php b/ajax/invoices/createCreditNote.php
index a3d233718d27f0d9a8934605cf731cdea718d49f..67c7facd9907bcabe79c66f18b234459d88fe983 100644
--- a/ajax/invoices/createCreditNote.php
+++ b/ajax/invoices/createCreditNote.php
@@ -17,6 +17,6 @@ function ($invoiceId) {
 
         return $Invoice->createCreditNote()->getId();
     },
-    array('invoiceId'),
+    ['invoiceId'],
     'Permission::checkAdminUser'
 );
diff --git a/ajax/invoices/get.php b/ajax/invoices/get.php
index 0b2ecaabdeb5ee01864f53435c12be7042023182..7eda030153e643f55b9decd35819e1f8cf0beea5 100644
--- a/ajax/invoices/get.php
+++ b/ajax/invoices/get.php
@@ -17,9 +17,14 @@
     'package_quiqqer_invoice_ajax_invoices_get',
     function ($invoiceId) {
         $Invoices = QUI\ERP\Accounting\Invoice\Handler::getInstance();
-        $Invoice  = $Invoices->get($invoiceId);
 
-        QUI\ERP\Accounting\Calc::calculateInvoicePayments($Invoice);
+        try {
+            $Invoice = $Invoices->get($invoiceId);
+        } catch (QUI\Exception $Exception) {
+            $Invoice = $Invoices->getInvoiceByHash($invoiceId);
+        }
+
+        QUI\ERP\Accounting\Calc::calculatePayments($Invoice);
 
         $attributes = $Invoice->toArray();
         $Currency   = $Invoice->getCurrency();
@@ -33,6 +38,6 @@ function ($invoiceId) {
 
         return $attributes;
     },
-    array('invoiceId'),
+    ['invoiceId'],
     'Permission::checkAdminUser'
 );
diff --git a/ajax/invoices/list.php b/ajax/invoices/list.php
index e1cdbcc880663eab99abc7ecbf548daacc05c824..47fb718648d9d1faae8a2f32123dfd62ab0d949b 100644
--- a/ajax/invoices/list.php
+++ b/ajax/invoices/list.php
@@ -30,6 +30,6 @@ function ($params) {
 
         return $Search->search();
     },
-    array('params'),
+    ['params'],
     'Permission::checkAdminUser'
 );
diff --git a/ajax/invoices/payments/format.php b/ajax/invoices/payments/format.php
index d95466be5316e61d51b10966690bebad18f001db..31d2e7a635c6a432056afa6cf919ff4d53784df8 100644
--- a/ajax/invoices/payments/format.php
+++ b/ajax/invoices/payments/format.php
@@ -13,7 +13,7 @@
     'package_quiqqer_invoice_ajax_invoices_payments_format',
     function ($payments) {
         $payments = json_decode($payments, true);
-        $result   = array();
+        $result   = [];
 
         $Locale   = QUI::getLocale();
         $Currency = QUI\ERP\Defaults::getCurrency();
@@ -29,15 +29,15 @@ function ($payments) {
             } catch (QUI\Exception $Exception) {
             }
 
-            $result[] = array(
+            $result[] = [
                 'date'    => $Locale->formatDate($payment['date']),
                 'amount'  => $Currency->format($payment['amount']),
                 'payment' => $paymentTitle
-            );
+            ];
         }
 
         return $result;
     },
-    array('payments'),
+    ['payments'],
     'Permission::checkAdminUser'
 );
diff --git a/ajax/invoices/reversal.php b/ajax/invoices/reversal.php
index 711972592165b876727f3a45063fd9783c346245..891495a17e0c0d115907e26dd2b9060aead7a932 100644
--- a/ajax/invoices/reversal.php
+++ b/ajax/invoices/reversal.php
@@ -15,6 +15,6 @@ function ($invoiceId, $reason) {
 
         return $Invoice->reversal($reason);
     },
-    array('invoiceId', 'reason'),
+    ['invoiceId', 'reason'],
     'Permission::checkAdminUser'
 );
diff --git a/ajax/invoices/search.php b/ajax/invoices/search.php
index 3d09cae91c90fc365293342876dd39603e73d626..a76f1d3ff2d4a3dffc3fabd2b048e1aef3a70135 100644
--- a/ajax/invoices/search.php
+++ b/ajax/invoices/search.php
@@ -38,6 +38,6 @@ function ($params, $filter) {
 
         return $Search->searchForGrid();
     },
-    array('params', 'filter'),
+    ['params', 'filter'],
     'Permission::checkAdminUser'
 );
diff --git a/ajax/invoices/temporary/calc.php b/ajax/invoices/temporary/calc.php
index 7675ad4128123fde5b642b38fe08aa4e097f8c0d..dda54dc9e0d9162f5ac222c3f188a392a26e1366 100644
--- a/ajax/invoices/temporary/calc.php
+++ b/ajax/invoices/temporary/calc.php
@@ -37,6 +37,6 @@ function ($articles, $user) {
 
         return $List->getCalculations();
     },
-    array('articles', 'user'),
+    ['articles', 'user'],
     'Permission::checkAdminUser'
 );
diff --git a/ajax/invoices/temporary/copy.php b/ajax/invoices/temporary/copy.php
index e5c396245533cae4cee20a4ee6f372315f83fce5..d151841bfe52ed9211bc0c71017706627d60c741 100644
--- a/ajax/invoices/temporary/copy.php
+++ b/ajax/invoices/temporary/copy.php
@@ -18,6 +18,6 @@ function ($invoiceId) {
             ->copy()
             ->getId();
     },
-    array('invoiceId'),
+    ['invoiceId'],
     'Permission::checkAdminUser'
 );
diff --git a/ajax/invoices/temporary/delete.php b/ajax/invoices/temporary/delete.php
index 58b689fb93b4a32919262a5f079f1521fc57a1cf..b0c75e2cb3248114c181a75007aab0fb4a94b153 100644
--- a/ajax/invoices/temporary/delete.php
+++ b/ajax/invoices/temporary/delete.php
@@ -15,6 +15,6 @@ function ($invoiceId) {
         $Invoices = QUI\ERP\Accounting\Invoice\Handler::getInstance();
         $Invoices->delete($invoiceId);
     },
-    array('invoiceId'),
+    ['invoiceId'],
     'Permission::checkAdminUser'
 );
diff --git a/ajax/invoices/temporary/get.php b/ajax/invoices/temporary/get.php
index 0ae9eae6fb91756a5fc40438ea2de33fd2496fc0..46d7fed2eb8483dc6f2314afe6c1da3baf38b09d 100644
--- a/ajax/invoices/temporary/get.php
+++ b/ajax/invoices/temporary/get.php
@@ -19,6 +19,6 @@ function ($invoiceId) {
 
         return $Invoice->toArray();
     },
-    array('invoiceId'),
+    ['invoiceId'],
     'Permission::checkAdminUser'
 );
diff --git a/ajax/invoices/temporary/getTimeForPayment.php b/ajax/invoices/temporary/getTimeForPayment.php
index 7e585e2eeff1582a89ab0fe86acbef0ca1f3330b..4e7efcf035609b26b7dc092830c510555f3b3ca6 100644
--- a/ajax/invoices/temporary/getTimeForPayment.php
+++ b/ajax/invoices/temporary/getTimeForPayment.php
@@ -19,6 +19,6 @@ function ($uid) {
 
         return $permission;
     },
-    array('uid'),
+    ['uid'],
     'Permission::checkAdminUser'
 );
diff --git a/ajax/invoices/temporary/html.php b/ajax/invoices/temporary/html.php
index bba6fbf0cd247b5478d74dc45b5f697f3024f43e..5be2979433581de970c2c327c7a3606648201817 100644
--- a/ajax/invoices/temporary/html.php
+++ b/ajax/invoices/temporary/html.php
@@ -27,6 +27,6 @@ function ($invoiceId, $data) {
 
         return $Invoice->getView()->toHTML();
     },
-    array('invoiceId', 'data'),
+    ['invoiceId', 'data'],
     'Permission::checkAdminUser'
 );
diff --git a/ajax/invoices/temporary/isNetto.php b/ajax/invoices/temporary/isNetto.php
index c230392cca966466b4fcb8a1d880ceef96502b56..bccdbfd984ed48007bc1a26e902db20156e04df4 100644
--- a/ajax/invoices/temporary/isNetto.php
+++ b/ajax/invoices/temporary/isNetto.php
@@ -17,6 +17,6 @@ function ($uid) {
 
         return $status === QUI\ERP\Utils\User::IS_NETTO_USER;
     },
-    array('uid'),
+    ['uid'],
     'Permission::checkAdminUser'
 );
diff --git a/ajax/invoices/temporary/list.php b/ajax/invoices/temporary/list.php
index ab6dc5233275c1a7be90aaa521fd48164c767c8a..ba7473ccf9b710b3c3145c840cc999bd64ae5c99 100644
--- a/ajax/invoices/temporary/list.php
+++ b/ajax/invoices/temporary/list.php
@@ -28,7 +28,7 @@ function ($params) {
             $Grid->parseDBParams(json_decode($params, true))
         );
 
-        $needleFields = array(
+        $needleFields = [
             'id',
             'order_id',
             'customer_id',
@@ -52,7 +52,7 @@ function ($params) {
             'comments',
             'payment_data',
             'hash'
-        );
+        ];
 
         $fillFields = function (&$data) use ($needleFields) {
             foreach ($needleFields as $field) {
@@ -65,7 +65,7 @@ function ($params) {
         foreach ($data as $key => $entry) {
             $fillFields($data[$key]);
 
-            $data[$key]['id'] = Settings::getInstance()->getTemporaryInvoicePrefix() . $data[$key]['id'];
+            $data[$key]['id'] = Settings::getInstance()->getTemporaryInvoicePrefix().$data[$key]['id'];
 
             try {
                 $Currency = Currencies::getCurrency($data[$key]['currency_data']);
@@ -113,6 +113,6 @@ function ($params) {
 
         return $Grid->parseResult($data, $Invoices->countTemporaryInvoices());
     },
-    array('params'),
+    ['params'],
     'Permission::checkAdminUser'
 );
diff --git a/ajax/invoices/temporary/lock.php b/ajax/invoices/temporary/lock.php
index 2440f7044b09459f1f0ffea3e184682450d96065..da561f58867f7016faa912e8132ad02ea5955a69 100644
--- a/ajax/invoices/temporary/lock.php
+++ b/ajax/invoices/temporary/lock.php
@@ -14,8 +14,7 @@
     function ($invoiceId) {
         $Invoices = QUI\ERP\Accounting\Invoice\Handler::getInstance();
         $Invoice  = $Invoices->getTemporaryInvoice($invoiceId);
-
     },
-    array('invoiceId'),
+    ['invoiceId'],
     'Permission::checkAdminUser'
 );
diff --git a/ajax/invoices/temporary/missing.php b/ajax/invoices/temporary/missing.php
index f1f47fabf9f99de04fe433a787334cbaecc48ff1..08e35581f998360d857ab8b2ff41481b877676d6 100644
--- a/ajax/invoices/temporary/missing.php
+++ b/ajax/invoices/temporary/missing.php
@@ -19,7 +19,7 @@ function ($invoiceId) {
         $Invoice  = $Invoices->getTemporaryInvoice($invoiceId);
 
         $missed = $Invoice->getMissingAttributes();
-        $result = array();
+        $result = [];
 
         foreach ($missed as $missing) {
             $result[$missing] = InvoiceUtils::getMissingAttributeMessage($missing);
@@ -27,6 +27,6 @@ function ($invoiceId) {
 
         return $result;
     },
-    array('invoiceId'),
+    ['invoiceId'],
     'Permission::checkAdminUser'
 );
diff --git a/ajax/invoices/temporary/post.php b/ajax/invoices/temporary/post.php
index cc710289c0618273c4f4ffafb2c28181ff101ec0..1513076aa185d8bf2e2c890f60ad71dd4166bef5 100644
--- a/ajax/invoices/temporary/post.php
+++ b/ajax/invoices/temporary/post.php
@@ -20,6 +20,6 @@ function ($invoiceId) {
 
         return $Invoice->getId();
     },
-    array('invoiceId'),
+    ['invoiceId'],
     'Permission::checkAdminUser'
 );
diff --git a/ajax/invoices/temporary/previewhtml.php b/ajax/invoices/temporary/previewhtml.php
index 39c63228f767cbbc8f5a28014e9e1d41b4da96d9..ef23ac488693c1a741a3b74d2cf38ef33331af74 100644
--- a/ajax/invoices/temporary/previewhtml.php
+++ b/ajax/invoices/temporary/previewhtml.php
@@ -27,6 +27,6 @@ function ($invoiceId, $data) {
 
         return $Invoice->getView()->previewHTML();
     },
-    array('invoiceId', 'data'),
+    ['invoiceId', 'data'],
     'Permission::checkAdminUser'
 );
diff --git a/ajax/invoices/temporary/product/calc.php b/ajax/invoices/temporary/product/calc.php
index 159a5dbe61f4a09f0bf17ddc47258a6533528243..2d05142c8831027eaebad9591d18f242f4182806 100644
--- a/ajax/invoices/temporary/product/calc.php
+++ b/ajax/invoices/temporary/product/calc.php
@@ -31,6 +31,6 @@ function ($params, $user) {
 
         return $Article->toArray();
     },
-    array('params', 'user'),
+    ['params', 'user'],
     'Permission::checkAdminUser'
 );
diff --git a/ajax/invoices/temporary/product/getProductEdit.php b/ajax/invoices/temporary/product/getProductEdit.php
index dd045073de6433375b4d2b182f0817d2343b19b0..bb0b724a66a141c65836c1b42c2c46f4cc03a5df 100644
--- a/ajax/invoices/temporary/product/getProductEdit.php
+++ b/ajax/invoices/temporary/product/getProductEdit.php
@@ -16,15 +16,15 @@ function ($productId, $user) {
         $Product = Products::getProduct($productId);
         $user    = json_encode($user, true);
 
-        $Control = new ProductEdit(array(
+        $Control = new ProductEdit([
             'Product' => $Product
-        ));
+        ]);
 
         $css  = ''; //QUI\Control\Manager::getCSS();
         $html = $Control->create();
 
-        return $css . $html;
+        return $css.$html;
     },
-    array('productId', 'user'),
+    ['productId', 'user'],
     'Permission::checkAdminUser'
 );
diff --git a/ajax/invoices/temporary/product/hasProductCustomFields.php b/ajax/invoices/temporary/product/hasProductCustomFields.php
index 7c1bd4f830982b25ef035a2f14aafc3d417d1258..2c6f350113315a395af4cde9b45379a720b98b4b 100644
--- a/ajax/invoices/temporary/product/hasProductCustomFields.php
+++ b/ajax/invoices/temporary/product/hasProductCustomFields.php
@@ -17,6 +17,6 @@ function ($productId) {
 
         return count($fields);
     },
-    array('productId'),
+    ['productId'],
     'Permission::checkAdminUser'
 );
diff --git a/ajax/invoices/temporary/product/parseProductToArticle.php b/ajax/invoices/temporary/product/parseProductToArticle.php
index 9719930533260823300a68e9373696075375b597..5b5e8ce7029af6e1668e28dbb1d79e43636ce9f8 100644
--- a/ajax/invoices/temporary/product/parseProductToArticle.php
+++ b/ajax/invoices/temporary/product/parseProductToArticle.php
@@ -67,8 +67,8 @@ function ($productId, $attributes, $user) {
             QUI\System\Log::write($Exception->getMessage());
         }
 
-        return array();
+        return [];
     },
-    array('productId', 'attributes', 'user'),
+    ['productId', 'attributes', 'user'],
     'Permission::checkAdminUser'
 );
diff --git a/ajax/invoices/temporary/product/summary.php b/ajax/invoices/temporary/product/summary.php
index f84a9b1eea58bc7b0d70239946a8fad55ea29e9e..78e3de34f50b7e39acccf0fc62347ea0d8c4c73f 100644
--- a/ajax/invoices/temporary/product/summary.php
+++ b/ajax/invoices/temporary/product/summary.php
@@ -15,7 +15,7 @@
     function ($article) {
         $article = json_decode($article, true);
 
-        $Brutto = new QUI\ERP\User(array(
+        $Brutto = new QUI\ERP\User([
             'id'        => 'BRUTTO',
             'country'   => '',
             'username'  => '',
@@ -23,7 +23,7 @@ function ($article) {
             'lastname'  => '',
             'lang'      => QUI::getLocale()->getCurrent(),
             'isCompany' => 0
-        ));
+        ]);
 
         $Brutto->setAttribute(
             'quiqqer.erp.isNettoUser',
@@ -38,6 +38,6 @@ function ($article) {
 
         return $Article->toArray();
     },
-    array('article'),
+    ['article'],
     'Permission::checkAdminUser'
 );
diff --git a/ajax/invoices/temporary/save.php b/ajax/invoices/temporary/save.php
index 014362fe0e5ee1401e3123c9aab70c56292961ae..e984afe29f47e33365013d636bc6e028db05af41 100644
--- a/ajax/invoices/temporary/save.php
+++ b/ajax/invoices/temporary/save.php
@@ -31,6 +31,6 @@ function ($invoiceId, $data) {
             QUI::getLocale()->get('quiqqer/invoice', 'message.invoice.save.successfully')
         );
     },
-    array('invoiceId', 'data'),
+    ['invoiceId', 'data'],
     'Permission::checkAdminUser'
 );
diff --git a/ajax/invoices/temporary/unlock.php b/ajax/invoices/temporary/unlock.php
index 3faaad625bc434fea6ff260412c192ee22175026..9102626553c0870c35a0919d1e2d16cd900bf62a 100644
--- a/ajax/invoices/temporary/unlock.php
+++ b/ajax/invoices/temporary/unlock.php
@@ -14,8 +14,7 @@
     function ($invoiceId) {
         $Invoices = QUI\ERP\Accounting\Invoice\Handler::getInstance();
         $Invoice  = $Invoices->getTemporaryInvoice($invoiceId);
-
     },
-    array('invoiceId'),
+    ['invoiceId'],
     'Permission::checkAdminUser'
 );
diff --git a/bin/backend/controls/panels/Invoice.css b/bin/backend/controls/panels/Invoice.css
index 9447bda60ca38ac3ec808d2d1c799a8592801d38..33cb5cf5644897a819c6a77ec53c36d8e2f384ed 100644
--- a/bin/backend/controls/panels/Invoice.css
+++ b/bin/backend/controls/panels/Invoice.css
@@ -5,6 +5,7 @@
 .journal-grid-amount {
     text-align: right !important;
     padding-right: 5px;
+    padding-left: 0 !important;
 }
 
 .journal-grid-cancel {
diff --git a/bin/backend/controls/panels/Invoice.js b/bin/backend/controls/panels/Invoice.js
index 057e788283d798af99c7b939c46735895d600de9..f68777ae93ee23a3240240fac666f4bd975c3e04 100644
--- a/bin/backend/controls/panels/Invoice.js
+++ b/bin/backend/controls/panels/Invoice.js
@@ -266,8 +266,8 @@ define('package/quiqqer/invoice/bin/backend/controls/panels/Invoice', [
                         'package/quiqqer/invoice/bin/backend/controls/panels/Journal.Payments'
                     ], function (Payments) {
                         new Payments({
-                            invoiceId: self.getAttribute('data').id,
-                            events   : {
+                            hash  : self.getAttribute('data').hash,
+                            events: {
                                 onLoad: resolve
                             }
                         }).inject(Container);
diff --git a/bin/backend/controls/panels/Journal.Payments.js b/bin/backend/controls/panels/Journal.Payments.js
index a9b6577bd7c234ff73d4db1ca50b695fd4e96ec5..a4e2797814b8e0e98ea4751fa8cdb933a38b664f 100644
--- a/bin/backend/controls/panels/Journal.Payments.js
+++ b/bin/backend/controls/panels/Journal.Payments.js
@@ -11,10 +11,11 @@ define('package/quiqqer/invoice/bin/backend/controls/panels/Journal.Payments', [
     'qui/controls/windows/Confirm',
     'controls/grid/Grid',
     'package/quiqqer/invoice/bin/Invoices',
+    'package/quiqqer/payment-transactions/bin/backend/Transactions',
     'Locale',
     'Ajax'
 
-], function (QUI, QUIControl, QUIConfirm, Grid, Invoices, QUILocale, QUIAjax) {
+], function (QUI, QUIControl, QUIConfirm, Grid, Invoices, Transactions, QUILocale, QUIAjax) {
     "use strict";
 
     var lg = 'quiqqer/invoice';
@@ -30,7 +31,7 @@ define('package/quiqqer/invoice/bin/backend/controls/panels/Journal.Payments', [
         ],
 
         options: {
-            invoiceId: false
+            hash: false
         },
 
         initialize: function (options) {
@@ -58,34 +59,23 @@ define('package/quiqqer/invoice/bin/backend/controls/panels/Journal.Payments', [
 
         /**
          * Refresh the data and the display
+         *
+         * @return {Promise}
          */
         refresh: function () {
             var self = this;
 
-            Invoices.get(this.getAttribute('invoiceId')).then(function (result) {
+            return Transactions.getTransactionsByHash(this.getAttribute('hash')).then(function (result) {
                 var payments = [];
 
-                try {
-                    payments = JSON.decode(result.paid_data);
-                } catch (e) {
-                }
-
-                if (!payments) {
-                    payments = [];
-                }
-
-                var AddButton = self.$Grid.getButtons().filter(function (Button) {
-                    return Button.getAttribute('name') === 'add';
-                })[0];
-
-                if (result.paid_status !== 1) {
-                    AddButton.enable();
-                } else {
-                    AddButton.disable();
+                for (var i = 0, len = result.length; i < len; i++) {
+                    payments.push({
+                        date   : result[i].date,
+                        amount : result[i].amount,
+                        payment: result[i].payment
+                    });
                 }
 
-                return payments;
-            }).then(function (payments) {
                 return new Promise(function (resolve) {
                     QUIAjax.get('package_quiqqer_invoice_ajax_invoices_payments_format', function (data) {
                         self.$Grid.setData({
@@ -99,6 +89,18 @@ define('package/quiqqer/invoice/bin/backend/controls/panels/Journal.Payments', [
                         payments : JSON.encode(payments)
                     });
                 });
+            }).then(function () {
+                return Invoices.get(self.getAttribute('hash'));
+            }).then(function (result) {
+                var AddButton = self.$Grid.getButtons().filter(function (Button) {
+                    return Button.getAttribute('name') === 'add';
+                })[0];
+
+                if (result.paid_status !== 1) {
+                    AddButton.enable();
+                } else {
+                    AddButton.disable();
+                }
             });
         },
 
@@ -133,13 +135,13 @@ define('package/quiqqer/invoice/bin/backend/controls/panels/Journal.Payments', [
                     header   : QUILocale.get(lg, 'journal.payments.date'),
                     dataIndex: 'date',
                     dataType : 'date',
-                    width    : 100
+                    width    : 160
                 }, {
                     header   : QUILocale.get(lg, 'journal.payments.amount'),
                     dataIndex: 'amount',
-                    dataType : 'number',
+                    dataType : 'string',
                     className: 'journal-grid-amount',
-                    width    : 200
+                    width    : 160
                 }, {
                     header   : QUILocale.get(lg, 'journal.payments.paymentMethod'),
                     dataIndex: 'payment',
diff --git a/bin/backend/controls/panels/Journal.js b/bin/backend/controls/panels/Journal.js
index 73a35d2623b197e9dc28f18180c196d4c9ee26c6..66e4f11de2d6766e9a3a31490ccf9becdf74a85d 100644
--- a/bin/backend/controls/panels/Journal.js
+++ b/bin/backend/controls/panels/Journal.js
@@ -493,8 +493,9 @@ define('package/quiqqer/invoice/bin/backend/controls/panels/Journal', [
             });
 
             this.$Grid.addEvents({
-                onRefresh: this.refresh,
-                onClick  : this.$refreshButtonStatus
+                onRefresh : this.refresh,
+                onClick   : this.$refreshButtonStatus,
+                onDblClick: this.$onClickOpenInvoice
             });
 
 
diff --git a/locale.xml b/locale.xml
index 7e0b101738a453ed8714b0853ee0147802f4774e..1478959cf155c67748a08f76d6b20870b26bfbe7 100644
--- a/locale.xml
+++ b/locale.xml
@@ -812,8 +812,8 @@
             <en><![CDATA[Amount]]></en>
         </locale>
         <locale name="journal.payments.paymentMethod">
-            <de><![CDATA[Bezahlmethoden]]></de>
-            <en><![CDATA[Payment methode]]></en>
+            <de><![CDATA[Bezahlmethode]]></de>
+            <en><![CDATA[Payment method]]></en>
         </locale>
 
         <locale name="dialog.print.title">
diff --git a/src/QUI/ERP/Accounting/Invoice/Handler.php b/src/QUI/ERP/Accounting/Invoice/Handler.php
index 47a2fe18cfe5e5cefb31e54643b49f80c1c6e9c9..60aa029a1e3316ed69ee77f8e3f07beb8777d2e1 100644
--- a/src/QUI/ERP/Accounting/Invoice/Handler.php
+++ b/src/QUI/ERP/Accounting/Invoice/Handler.php
@@ -260,7 +260,7 @@ public function countTemporaryInvoices($queryParams = [])
      * @param string $id - ID of the Invoice or InvoiceTemporary
      * @return InvoiceTemporary|Invoice
      *
-     * @throws
+     * @throws QUI\Exception
      */
     public function get($id)
     {
@@ -302,7 +302,7 @@ public function getInvoiceByHash($hash)
             'select' => 'id',
             'from'   => self::invoiceTable(),
             'where'  => [
-                'id' => $hash
+                'hash' => $hash
             ],
             'limit'  => 1
         ]);