Skip to content

@mbanq/core-sdk-js v0.50.0


@mbanq/core-sdk-js / commands / CalculateLoanSchedule

Function: CalculateLoanSchedule() ​

CalculateLoanSchedule(data): Command<{ data: { allowPartialPeriodInterestCalculation?: boolean; amortizationType?: number; clientId?: number; dateFormat: string; disbursementData?: object[]; expectedDisbursementDate?: string; inArrearsTolerance?: number; interestCalculationPeriodType?: number; interestRatePerPeriod?: number; interestType?: number; isEqualAmortization?: boolean; loanTermFrequency?: number; loanTermFrequencyType?: number; loanType?: string; locale: string; numberOfRepayments: number; principal: number; productId: number; repaymentEvery?: number; repaymentFrequencyDayOfMonth?: number; repaymentFrequencyDayOfWeekType?: number; repaymentFrequencyNthDayType?: number; repaymentFrequencyType?: number; repaymentsStartingFromDate?: string; submittedOnDate?: string; transactionProcessingStrategyId?: number; }; }, { currency: { code: string; decimalPlaces: number; displayLabel?: string; displaySymbol: string; inMultiplesOf?: number; name: string; nameCode: string; }; loanTermInDays: number; periods: object[]; totalFeeChargesCharged: number; totalInterestCharged: number; totalOutstanding: number; totalPaidInAdvance: number; totalPaidLate: number; totalPenaltyChargesCharged: number; totalPrincipalDisbursed: number; totalPrincipalExpected: number; totalPrincipalPaid: number; totalRepayment: number; totalRepaymentExpected: number; totalWaived: number; totalWrittenOff: number; }>

Defined in: src/commands/rest/loan.ts:412

Calculates the loan repayment schedule based on provided loan parameters. This endpoint does not create, approve, or disburse the loan; it only calculates the schedule.

Parameters ​

data ​

allowPartialPeriodInterestCalculation? ​

boolean = ...

amortizationType? ​

number = ...

clientId? ​

number = ...

dateFormat ​

string = ...

disbursementData? ​

object[] = ...

expectedDisbursementDate? ​

string = ...

inArrearsTolerance? ​

number = ...

interestCalculationPeriodType? ​

number = ...

interestRatePerPeriod? ​

number = ...

interestType? ​

number = ...

isEqualAmortization? ​

boolean = ...

loanTermFrequency? ​

number = ...

loanTermFrequencyType? ​

number = ...

loanType? ​

string = ...

locale ​

string = ...

numberOfRepayments ​

number = ...

principal ​

number = ...

productId ​

number = ...

repaymentEvery? ​

number = ...

repaymentFrequencyDayOfMonth? ​

number = ...

repaymentFrequencyDayOfWeekType? ​

number = ...

repaymentFrequencyNthDayType? ​

number = ...

repaymentFrequencyType? ​

number = ...

repaymentsStartingFromDate? ​

string = ...

submittedOnDate? ​

string = ...

transactionProcessingStrategyId? ​

number = ...

Returns ​

Command<{ data: { allowPartialPeriodInterestCalculation?: boolean; amortizationType?: number; clientId?: number; dateFormat: string; disbursementData?: object[]; expectedDisbursementDate?: string; inArrearsTolerance?: number; interestCalculationPeriodType?: number; interestRatePerPeriod?: number; interestType?: number; isEqualAmortization?: boolean; loanTermFrequency?: number; loanTermFrequencyType?: number; loanType?: string; locale: string; numberOfRepayments: number; principal: number; productId: number; repaymentEvery?: number; repaymentFrequencyDayOfMonth?: number; repaymentFrequencyDayOfWeekType?: number; repaymentFrequencyNthDayType?: number; repaymentFrequencyType?: number; repaymentsStartingFromDate?: string; submittedOnDate?: string; transactionProcessingStrategyId?: number; }; }, { currency: { code: string; decimalPlaces: number; displayLabel?: string; displaySymbol: string; inMultiplesOf?: number; name: string; nameCode: string; }; loanTermInDays: number; periods: object[]; totalFeeChargesCharged: number; totalInterestCharged: number; totalOutstanding: number; totalPaidInAdvance: number; totalPaidLate: number; totalPenaltyChargesCharged: number; totalPrincipalDisbursed: number; totalPrincipalExpected: number; totalPrincipalPaid: number; totalRepayment: number; totalRepaymentExpected: number; totalWaived: number; totalWrittenOff: number; }>

A Command that when executed returns the calculated loan schedule with periods and totals

Example ​

typescript
const calculateScheduleCmd = CalculateLoanSchedule({
  productId: 102,
  principal: 1000,
  numberOfRepayments: 36,
  locale: "en",
  dateFormat: "dd MMMM yyyy",
  clientId: 12624,
  loanTermFrequency: 1,
  loanTermFrequencyType: 2,
  repaymentEvery: 1,
  repaymentFrequencyType: 2,
  interestRatePerPeriod: 24,
  amortizationType: 1,
  interestType: 0,
  interestCalculationPeriodType: 1,
  transactionProcessingStrategyId: 1,
  expectedDisbursementDate: "2024-07-31",
  submittedOnDate: "2024-07-31"
});
const result = await calculateScheduleCmd.execute(config);
console.log(result.totalRepaymentExpected); // 15034.88
console.log(result.periods.length); // 2

Released under the MIT License.