diff --git a/src/org/openbravo/retail/posterminal/OrderLoader.java b/src/org/openbravo/retail/posterminal/OrderLoader.java
--- a/src/org/openbravo/retail/posterminal/OrderLoader.java
+++ b/src/org/openbravo/retail/posterminal/OrderLoader.java
@@ -1430,24 +1430,48 @@
         jsonorder.getJSONObject("bp").getString("locId")));
     order.setInvoiceAddress(order.getPartnerAddress());
 
-    if (!jsonorder.getJSONObject("bp").isNull("paymentMethod")
-        && !jsonorder.getJSONObject("bp").getString("paymentMethod").equals("null")) {
-      order.setPaymentMethod((FIN_PaymentMethod) OBDal.getInstance().getProxy("FIN_PaymentMethod",
-          jsonorder.getJSONObject("bp").getString("paymentMethod")));
-    } else if (bp.getPaymentMethod() != null) {
-      order.setPaymentMethod((FIN_PaymentMethod) bp.getPaymentMethod());
-    } else if (order.getOrganization().getObretcoDbpPmethodid() != null) {
-      order.setPaymentMethod((FIN_PaymentMethod) order.getOrganization().getObretcoDbpPmethodid());
-    } else {
-      String paymentMethodHqlWhereClause = " pmethod where EXISTS (SELECT 1 FROM FinancialMgmtFinAccPaymentMethod fapm "
-          + "WHERE pmethod.id = fapm.paymentMethod.id AND fapm.payinAllow = 'Y')";
-      OBQuery<FIN_PaymentMethod> queryPaymentMethod = OBDal.getInstance().createQuery(
-          FIN_PaymentMethod.class, paymentMethodHqlWhereClause);
-      queryPaymentMethod.setFilterOnReadableOrganization(true);
-      queryPaymentMethod.setMaxResult(1);
-      List<FIN_PaymentMethod> lstPaymentMethod = queryPaymentMethod.list();
-      if (lstPaymentMethod != null && lstPaymentMethod.size() > 0) {
-        order.setPaymentMethod(lstPaymentMethod.get(0));
+    Boolean paymenthMethod = false;
+    if (!jsonorder.isNull("paymentMethodKind")
+        && !jsonorder.getString("paymentMethodKind").equals("null")) {
+      String posTerminalId = jsonorder.getString("posTerminal");
+      OBPOSApplications posTerminal = OBDal.getInstance().get(OBPOSApplications.class,
+          posTerminalId);
+      if (posTerminal != null) {
+        String paymentTypeName = jsonorder.getString("paymentMethodKind");
+        OBPOSAppPayment paymentType = null;
+        for (OBPOSAppPayment type : posTerminal.getOBPOSAppPaymentList()) {
+          if (type.getSearchKey().equals(paymentTypeName)) {
+            paymentType = type;
+          }
+        }
+        if (paymentType != null) {
+          order.setPaymentMethod(paymentType.getPaymentMethod().getPaymentMethod());
+          paymenthMethod = true;
+        }
+      }
+    }
+
+    if (!paymenthMethod) {
+      if (!jsonorder.getJSONObject("bp").isNull("paymentMethod")
+          && !jsonorder.getJSONObject("bp").getString("paymentMethod").equals("null")) {
+        order.setPaymentMethod((FIN_PaymentMethod) OBDal.getInstance().getProxy(
+            "FIN_PaymentMethod", jsonorder.getJSONObject("bp").getString("paymentMethod")));
+      } else if (bp.getPaymentMethod() != null) {
+        order.setPaymentMethod((FIN_PaymentMethod) bp.getPaymentMethod());
+      } else if (order.getOrganization().getObretcoDbpPmethodid() != null) {
+        order
+            .setPaymentMethod((FIN_PaymentMethod) order.getOrganization().getObretcoDbpPmethodid());
+      } else {
+        String paymentMethodHqlWhereClause = " pmethod where EXISTS (SELECT 1 FROM FinancialMgmtFinAccPaymentMethod fapm "
+            + "WHERE pmethod.id = fapm.paymentMethod.id AND fapm.payinAllow = 'Y')";
+        OBQuery<FIN_PaymentMethod> queryPaymentMethod = OBDal.getInstance().createQuery(
+            FIN_PaymentMethod.class, paymentMethodHqlWhereClause);
+        queryPaymentMethod.setFilterOnReadableOrganization(true);
+        queryPaymentMethod.setMaxResult(1);
+        List<FIN_PaymentMethod> lstPaymentMethod = queryPaymentMethod.list();
+        if (lstPaymentMethod != null && lstPaymentMethod.size() > 0) {
+          order.setPaymentMethod(lstPaymentMethod.get(0));
+        }
       }
     }
 
diff --git a/web/org.openbravo.retail.posterminal/js/data/dataordersave.js b/web/org.openbravo.retail.posterminal/js/data/dataordersave.js
--- a/web/org.openbravo.retail.posterminal/js/data/dataordersave.js
+++ b/web/org.openbravo.retail.posterminal/js/data/dataordersave.js
@@ -132,6 +132,12 @@
           receipt.set('undo', null);
           receipt.set('multipleUndo', null);
 
+          receipt.set('paymentMethodKind', null);
+          if (receipt.get('payments').length === 1 && receipt.get('orderType') === 0 && !receipt.get('isLayaway') && !receipt.get('isQuotation')) {
+            var payment = receipt.get('payments').models[0];
+            receipt.set('paymentMethodKind', payment.get('kind'));
+          }
+
           // multiterminal support
           // be sure that the active terminal is the one set as the order proprietary
           receipt.set('posTerminal', OB.MobileApp.model.get('terminal').id);
