diff --git a/src-test/org/openbravo/test/mobile/common/selenium/javascript/TestId.java b/src-test/org/openbravo/test/mobile/common/selenium/javascript/TestId.java
--- a/src-test/org/openbravo/test/mobile/common/selenium/javascript/TestId.java
+++ b/src-test/org/openbravo/test/mobile/common/selenium/javascript/TestId.java
@@ -124,6 +124,7 @@
   BUTTON_MENU_LAYAWAYTHISRECEIPT("menuScroller_menuLayaway", EnyoKind.BUTTON), //
   BUTTON_MENU_RECEIPTS("menuScroller_menuPaidReceipts", EnyoKind.BUTTON), //
   BUTTON_MENU_QUOTATIONS("menuScroller_menuQuotations", EnyoKind.BUTTON), //
+  BUTTON_MENU_REJECTQUOTATIONS("menuScroller_menuRejectQuotation", EnyoKind.BUTTON), //
   BUTTON_MENU_RECEIPTDISCOUNTS("menuScroller_menuDiscounts", EnyoKind.BUTTON), //
   BUTTON_MENU_CREATEQUOTATION("menuScroller_menuQuotation", EnyoKind.BUTTON), //
   BUTTON_MENU_LAYAWAYS("menuScroller_menuLayaways", EnyoKind.BUTTON), //
@@ -366,6 +367,10 @@
   // LABEL_QUOTATIONS_TITLE("modalPaidReceipts_header"), //
   BUTTON_QUOTATIONS_SEARCH("prslistitemprinter_smallButton2", EnyoKind.BUTTON), //
   BUTTON_QUOTATIONS_ROW1("prslistitemprinter_row1_listPRsLine", EnyoKind.BUTTON), //
+  BUTTON_QUOTATIONS_REJECT_OK("bodyButtons_btnModalRejectQuotationAccept", EnyoKind.BUTTON), //
+  SELECT_QUOTATIONS_REJECT_REASON("bodyContent_rejectReason", EnyoKind.BUTTON), //
+  SELECT_QUOTATIONS_REJECT_REASON_OPTION1("rejectReason_3", EnyoKind.BUTTON), //
+  SELECT_QUOTATIONS_REJECT_REASON_OPTION2("rejectReason_4", EnyoKind.BUTTON), //
 
   // Layaways
   // LABEL_LAYAWAYS_TITLE("modalPaidReceipts_header"), //
diff --git a/src-test/org/openbravo/test/mobile/retail/pack/selenium/tests/quotations/RejectQuotations.java b/src-test/org/openbravo/test/mobile/retail/pack/selenium/tests/quotations/RejectQuotations.java
new file mode 100644
--- /dev/null
+++ b/src-test/org/openbravo/test/mobile/retail/pack/selenium/tests/quotations/RejectQuotations.java
@@ -0,0 +1,104 @@
+package org.openbravo.test.mobile.retail.pack.selenium.tests.quotations;
+
+import static org.junit.Assert.assertEquals;
+
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+import org.junit.Test;
+import org.openbravo.test.mobile.common.selenium.database.DatabaseHelperSelect;
+import org.openbravo.test.mobile.common.selenium.javascript.TestId;
+import org.openbravo.test.mobile.common.selenium.terminals.WebPOSTerminalHelper;
+import org.openbravo.test.mobile.common.selenium.utils.Utils;
+
+public class RejectQuotations extends WebPOSTerminalHelper {
+
+  @Test
+  public void test() {
+    logger.info("Initial state");
+
+    logger.info("Create 2 quotations");
+    createQuotation();
+    createQuotation();
+
+    logger.info("Load quotation 1");
+    String documentNo1 = loadQuotation();
+    logger.info("Quotation 1 DocumentNo = " + documentNo1);
+
+    logger.info("Reject quotation 1");
+    tap(TestId.BUTTON_MENU);
+    tap(TestId.BUTTON_MENU_REJECTQUOTATIONS);
+    Utils.pause(1000);
+    TestId.SELECT_QUOTATIONS_REJECT_REASON.enyoNode().executeExtension(".setSelected(0)");
+    verify(TestId.SELECT_QUOTATIONS_REJECT_REASON_OPTION1, "Reject reason 1");
+    tap(TestId.BUTTON_QUOTATIONS_REJECT_OK);
+
+    logger.info("Load quotation 2");
+    String documentNo2 = loadQuotation();
+    logger.info("Quotation 2 DocumentNo = " + documentNo2);
+
+    logger.info("Reject quotation 2");
+    tap(TestId.BUTTON_MENU);
+    tap(TestId.BUTTON_MENU_REJECTQUOTATIONS);
+    Utils.pause(1000);
+    TestId.SELECT_QUOTATIONS_REJECT_REASON.enyoNode().executeExtension(".setSelected(1)");
+    verify(TestId.SELECT_QUOTATIONS_REJECT_REASON_OPTION2, "Reject reason 2");
+    tap(TestId.BUTTON_QUOTATIONS_REJECT_OK);
+
+    logger.info("Remove quotation from editor");
+    tap(TestId.BUTTON_DELETERECEIPT);
+    tap(TestId.BUTTON_DELETERECEIPT);
+
+    logger.info("Verify if quotations are rejected");
+    Utils.pause(1000);
+    verifyRejected(documentNo1, "REJECT_1");
+    verifyRejected(documentNo2, "REJECT_2");
+  }
+
+  private void createQuotation() {
+    // create quotation
+    tap(TestId.BUTTON_MENU);
+    tap(TestId.BUTTON_MENU_CREATEQUOTATION);
+
+    // add a product
+    tap(TestId.BUTTON_CATEGORY_BACKPACKSANDTRAVEL);
+    tap(TestId.BUTTON_PRODUCT_BACKPACKSANDTRAVEL_WHISTLE);
+    isDisabled(TestId.BUTTON_PAY, false);
+
+    // Tap pay
+    tap(TestId.BUTTON_PAY);
+    Utils.pause(1000);
+  }
+
+  private String loadQuotation() {
+    tap(TestId.BUTTON_MENU);
+    tap(TestId.BUTTON_MENU_QUOTATIONS);
+    tap(TestId.BUTTON_QUOTATIONS_SEARCH);
+    tap(TestId.BUTTON_QUOTATIONS_ROW1);
+    Utils.pause(1000);
+    String documentNo = get(TestId.LABEL_DOCUMENTNUMBER);
+    documentNo = documentNo.split(" - ")[1].trim();
+    return documentNo;
+  }
+
+  private void verifyRejected(final String documentNo, final String rejectReason) {
+    // verifications VI. payment details
+    final String sql = "SELECT C.docstatus, R.value FROM C_Order C"
+        + " INNER JOIN C_Reject_Reason R ON C.c_reject_reason_id = R.c_reject_reason_id"
+        + " WHERE C.documentno = '" + documentNo + "'";
+
+    new DatabaseHelperSelect() {
+      @Override
+      protected void yieldResultSet(final ResultSet rs) throws SQLException {
+        final String docstatus = rs.getString("docstatus");
+        final String value = rs.getString("value");
+        logger.info("Verifying rejected quotation in the backend: " + documentNo + ", " + docstatus
+            + ", " + value);
+
+        assertEquals("CJ", docstatus);
+        assertEquals(rejectReason, value);
+      }
+    }.execute(sql, 1);
+
+  }
+}
