diff --git a/src/org/openbravo/erpCommon/ad_forms/DocPayment.java b/src/org/openbravo/erpCommon/ad_forms/DocPayment.java
--- a/src/org/openbravo/erpCommon/ad_forms/DocPayment.java
+++ b/src/org/openbravo/erpCommon/ad_forms/DocPayment.java
@@ -291,10 +291,12 @@
           for (int j = 0; data != null && j < data.length; j++) {
             String amountdebit = convertAmount(data[j].amountdebit, line.isReceipt.equals("Y"),
                 DateAcct, line.conversionDate, line.C_Currency_ID_From, as.m_C_Currency_ID, line,
-                as, fact, Fact_Acct_Group_ID, conn);
+                as, fact, Fact_Acct_Group_ID, (new BigDecimal(line.Amount)).compareTo(ZERO) < 0,
+                conn);
             String amountcredit = convertAmount(data[j].amountcredit, line.isReceipt.equals("Y"),
                 DateAcct, line.conversionDate, line.C_Currency_ID_From, as.m_C_Currency_ID, line,
-                as, fact, Fact_Acct_Group_ID, conn);
+                as, fact, Fact_Acct_Group_ID, (new BigDecimal(line.Amount)).compareTo(ZERO) < 0,
+                conn);
             amountdebit = getConvertedAmt(amountdebit, as.m_C_Currency_ID, C_Currency_ID, DateAcct,
                 "", AD_Client_ID, AD_Org_ID, conn);
             amountcredit = getConvertedAmt(amountcredit, as.m_C_Currency_ID, C_Currency_ID,
@@ -472,10 +474,21 @@
     return ZERO;
   }
 
+  @SuppressWarnings("hiding")
   public String convertAmount(String Amount, boolean isReceipt, String DateAcct,
       String conversionDate, String C_Currency_ID_From, String C_Currency_ID, DocLine line,
       AcctSchema as, Fact fact, String Fact_Acct_Group_ID, ConnectionProvider conn)
       throws ServletException {
+
+    return convertAmount(Amount, isReceipt, DateAcct, conversionDate, C_Currency_ID_From,
+        C_Currency_ID, line, as, fact, Fact_Acct_Group_ID, false, conn);
+  }
+
+  @SuppressWarnings("hiding")
+  String convertAmount(String Amount, boolean isReceipt, String DateAcct, String conversionDate,
+      String C_Currency_ID_From, String C_Currency_ID, DocLine line, AcctSchema as, Fact fact,
+      String Fact_Acct_Group_ID, boolean isNegativeManualPayment, ConnectionProvider conn)
+      throws ServletException {
     if (log4j.isDebugEnabled())
       log4j.debug("Amount:" + Amount + " curr from:" + C_Currency_ID_From + " Curr to:"
           + C_Currency_ID + " convDate:" + conversionDate + " DateAcct:" + DateAcct);
@@ -496,6 +509,8 @@
       log4j.debug("AmtTo:" + AmtTo);
 
     BigDecimal AmtDiff = (new BigDecimal(AmtTo)).subtract(new BigDecimal(Amt));
+    if (isNegativeManualPayment)
+      AmtDiff = AmtDiff.negate();
     if (log4j.isDebugEnabled())
       log4j.debug("AmtDiff:" + AmtDiff);
 
