diff --git a/src/org/openbravo/service/integration/sap/ecc/mappings/javamapper/InvoiceJavaPropertyMappingHandler.java b/src/org/openbravo/service/integration/sap/ecc/mappings/javamapper/InvoiceJavaPropertyMappingHandler.java
--- a/src/org/openbravo/service/integration/sap/ecc/mappings/javamapper/InvoiceJavaPropertyMappingHandler.java
+++ b/src/org/openbravo/service/integration/sap/ecc/mappings/javamapper/InvoiceJavaPropertyMappingHandler.java
@@ -15,9 +15,13 @@
 import java.util.Map;
 
 import org.apache.commons.lang.StringUtils;
+import org.hibernate.criterion.Restrictions;
 import org.openbravo.base.exception.OBException;
+import org.openbravo.dal.service.OBCriteria;
+import org.openbravo.dal.service.OBDal;
 import org.openbravo.model.common.invoice.Invoice;
 import org.openbravo.model.common.order.Order;
+import org.openbravo.model.financialmgmt.payment.FIN_Payment;
 import org.openbravo.model.financialmgmt.payment.FIN_PaymentSchedule;
 import org.openbravo.model.financialmgmt.payment.FIN_PaymentScheduleDetail;
 import org.openbravo.service.external.integration.SynchronizableBusinessObject;
@@ -81,35 +85,32 @@
 
   protected List<SynchronizableBusinessObject> getPaymentMethodLines(Invoice invoice) {
     List<SynchronizableBusinessObject> sbos = new ArrayList<>();
-    List<FIN_PaymentSchedule> invoicePaymentsSchedule = invoice.getFINPaymentScheduleList();
 
-    if (!invoicePaymentsSchedule.isEmpty()) {
-      for (FIN_PaymentScheduleDetail paymentDetails : invoicePaymentsSchedule.get(0)
-          .getFINPaymentScheduleDetailInvoicePaymentScheduleList()) {
-        if (paymentDetails.getAPRMPaymentMethod() != null
-            && paymentDetails.getAPRMFinancialAccount() != null) {
-          SynchronizableBusinessObject sbo = getPaymentMethodLines(paymentDetails);
-          processPaymentDetail(sbo, paymentDetails);
-          sbos.add(sbo);
-        }
-      }
+    OBCriteria<FIN_PaymentScheduleDetail> paidSchedDetails = OBDal.getInstance().createCriteria(
+        FIN_PaymentScheduleDetail.class);
+    paidSchedDetails.createAlias(FIN_PaymentScheduleDetail.PROPERTY_INVOICEPAYMENTSCHEDULE, "ips");
+    paidSchedDetails.add(Restrictions.eq("ips." + FIN_PaymentSchedule.PROPERTY_INVOICE, invoice));
+    paidSchedDetails.add(Restrictions.isNotNull(FIN_PaymentScheduleDetail.PROPERTY_PAYMENTDETAILS));
+
+    for (FIN_PaymentScheduleDetail paymentSchedDetail : paidSchedDetails.list()) {
+      SynchronizableBusinessObject sbo = getPaymentMethodLines(paymentSchedDetail);
+      processPaymentDetail(sbo, paymentSchedDetail);
+      sbos.add(sbo);
     }
     return sbos;
   }
 
   private SynchronizableBusinessObject getPaymentMethodLines(
-      FIN_PaymentScheduleDetail paymentDetails) {
+      FIN_PaymentScheduleDetail paymentSchedDetail) {
     SynchronizableBusinessObject sbo = new SynchronizableBusinessObject();
-    sbo.addProperty(
-        MappingConstants.SAP_INVOICE_PAYMENT_METHOD_SAP_CODE_FIELD,
-        paymentDetails.getAPRMPaymentMethod() != null ? MappingUtils.getSAPCode(paymentDetails
-            .getAPRMPaymentMethod()) : null);
-    sbo.addProperty(MappingConstants.SAP_INVOICE_TOTAL_PAID, paymentDetails.getAmount().abs());
-    sbo.addProperty(MappingConstants.SAP_INVOICE_PAYMENT_METHOD_CURRENCY,
-        paymentDetails.getAPRMFinancialAccount() != null ? paymentDetails.getAPRMFinancialAccount()
-            .getCurrency().getISOCode() : null);
+    FIN_Payment payment = paymentSchedDetail.getPaymentDetails().getFinPayment();
+    sbo.addProperty(MappingConstants.SAP_INVOICE_PAYMENT_METHOD_SAP_CODE_FIELD,
+        MappingUtils.getSAPCode(payment.getPaymentMethod()));
+    sbo.addProperty(MappingConstants.SAP_INVOICE_TOTAL_PAID, paymentSchedDetail.getAmount().abs());
+    sbo.addProperty(MappingConstants.SAP_INVOICE_PAYMENT_METHOD_CURRENCY, payment.getAccount()
+        .getCurrency().getISOCode());
 
-    sbo.addProperty(MappingConstants.SAP_INVOICE_TOTAL_PAID_SIGN, paymentDetails.getAmount()
+    sbo.addProperty(MappingConstants.SAP_INVOICE_TOTAL_PAID_SIGN, paymentSchedDetail.getAmount()
         .signum() < 0 ? "-" : "+");
     return sbo;
   }
