Semi-Monthly payments

Business requirements

The goal is to provide the option of creating payment schedules where payments occur twice a month. Intervals between two consequent installments may slightly vary (around 15 days), depending on how many days the month has. Payments occur on the same days each month (e.g. on the 1-st and on the 15-th).

Functional requirements

This type of schedule is applicable for both Classic and Annuity schemes. Schedule calculation procedure (including principal, interest, fees) is the same as for monthly payments, except for:

  • Payment due dates calculation algorithm (see below);
  • The installment interest rate is determined as half the monthly interest rate:

IR_SemiMonthly = IR_Monthly / 2

Algorithm of due dates calculation

The algorithm’s input is the due date of the first installment (DD1).

The algorithm consists of 2 parts:

  1. Define the 2 payment days to be used in the schedule (payday1 and payday2);
  2. Calculate the due dates using an iterative approach. The next due date is calculated based on the previous due date, payday1 and payday2. In general, all schedule due dates have day = either payday1 or payday2. The only exception is when actual date doesn't exist (e.g. 31-Feb), in such case it's moved to the nearest valid date in the past.

Below is the algorithm's activity diagram.