diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java
index 2902c02..8f13a73 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java
@@ -3253,11 +3253,10 @@
 
         if (this.loanProduct.isMultiDisburseLoan() && adjustedTransaction == null) {
             BigDecimal totalDisbursed = getDisbursedAmount();
-            BigDecimal totalPrincipalAdjusted = this.summary.getTotalPrincipalAdjustments();
-            BigDecimal totalPrincipalCredited = totalDisbursed.add(totalPrincipalAdjusted);
-            if (totalPrincipalCredited.compareTo(this.summary.getTotalPrincipalRepaid()) < 0) {
-                final String errorMessage = "The transaction amount cannot exceed threshold.";
-                throw new InvalidLoanStateTransitionException("transaction", "amount.exceeds.threshold", errorMessage);
+            if (totalDisbursed.compareTo(this.summary.getTotalPrincipalRepaid()) < 0) {
+                final String errorMessage = "The transaction cannot be done before the loan disbursement: "
+                        + getApprovedOnDate().toString();
+                throw new InvalidLoanStateTransitionException("transaction", "cannot.be.done.before.disbursement", errorMessage);
             }
         }
 
@@ -3319,12 +3318,11 @@
 
         if (this.loanProduct.isMultiDisburseLoan()) {
             BigDecimal totalDisbursed = getDisbursedAmount();
-            BigDecimal totalPrincipalAdjusted = this.summary.getTotalPrincipalAdjustments();
-            BigDecimal totalPrincipalCredited = totalDisbursed.add(totalPrincipalAdjusted);
-            if (totalPrincipalCredited.compareTo(this.summary.getTotalPrincipalRepaid()) < 0
+            if (totalDisbursed.compareTo(this.summary.getTotalPrincipalRepaid()) < 0
                     && this.repaymentScheduleDetail().getPrincipal().minus(totalDisbursed).isGreaterThanZero()) {
-                final String errorMessage = "The transaction amount cannot exceed threshold.";
-                throw new InvalidLoanStateTransitionException("transaction", "amount.exceeds.threshold", errorMessage);
+                final String errorMessage = "The transaction cannot be done before the loan disbursement: "
+                        + getApprovedOnDate().toString();
+                throw new InvalidLoanStateTransitionException("transaction", "cannot.be.done.before.disbursement", errorMessage);
             }
         }
 
@@ -6199,11 +6197,10 @@
 
         if (this.loanProduct.isMultiDisburseLoan() && adjustedTransaction == null) {
             BigDecimal totalDisbursed = getDisbursedAmount();
-            BigDecimal totalPrincipalAdjusted = this.summary.getTotalPrincipalAdjustments();
-            BigDecimal totalPrincipalCredited = totalDisbursed.add(totalPrincipalAdjusted);
-            if (totalPrincipalCredited.compareTo(this.summary.getTotalPrincipalRepaid()) < 0) {
-                final String errorMessage = "The transaction amount cannot exceed threshold.";
-                throw new InvalidLoanStateTransitionException("transaction", "amount.exceeds.threshold", errorMessage);
+            if (totalDisbursed.compareTo(this.summary.getTotalPrincipalRepaid()) < 0) {
+                final String errorMessage = "The transaction cannot be done before the loan disbursement: "
+                        + getApprovedOnDate().toString();
+                throw new InvalidLoanStateTransitionException("transaction", "cannot.be.done.before.disbursement", errorMessage);
             }
         }
 
