Equal installments strategy

The Equal Installments strategy, also known as the French Amortization System, is a calculation method used to calculate loans, financing agreements, or installment purchases where the customer pays a fixed installment amount throughout the contract. This calculation method is often used with simulations.

Although the installment amount remains the same, its composition changes over time.

  • In the earlier installments, a larger portion of the amount corresponds to interest.
  • In the later installments, a larger portion corresponds to principal amortization.

Each installment can be calculated as:

Installment amount = Amortization + Interest + Fees

This strategy is commonly used for credit card installments, personal loans, financing, BNPL offers, and other credit products that require predictable installment amounts.

The main configuration points are:

  • Interest rate type
  • Fee configuration
  • Fee strategies
    • Fee precedence
    • Fee calculation basis
    • Day count method
    • Rounding method
  • Calculation flow

Key concepts

Key concepts of an equal installments strategy include:

  • Principal amount—The original amount being financed. Example: 1,000.00
  • Interest rate—The monthly interest rate applied to the outstanding balance. Example: 5.99% per month
  • Number of installments—The number of payments into which the contract will be divided. Example: 12
  • PMT (payment)—The fixed installment amount calculated by the equal installments strategy. The installment amount remains fixed, while the amortization and interest amounts vary over time.
    • Example:
      • Installment 1: 531.00
      • Installment 2: 531.00
      • Installment 3: 531.00

Required parameters

The Equal Installments strategy requires the following Rates parameters.

  • strategy—Defines the calculation strategy. Example: EQUAL_INSTALLMENTS
  • dayCountMethod—Defines how days are counted between installments. Example: MONTH_30_YEAR_360
  • interestRate—Defines the interest rate configuration. Example: Fixed or Dynamic rate
{ 
  "strategy": "EQUAL_INSTALLMENTS", 
  "dayCountMethod": "MONTH_30_YEAR_360", 
  "interestRate": { 
    "type": "FIXED", 
    "value": 5.99, 
    "precedence": 3 
  } 
} 
 

Interest rate configuration

You can configure either a fixed interest rate or a dynamic interest rate.

Fixed interest rate

A fixed interest rate applies the same monthly rate to the contract, regardless of the number of installments. Example:

{ 
  "type": "FIXED", 
  "value": 5.99, 
  "precedence": 3 
}

Fields:

  • type—Interest rate type, which is the configurable rate classification that is related to the ID defined for the operation
  • value—Monthly interest rate percentage
  • precedence—When interest is calculated in relation to fees

Dynamic interest rate

A dynamic interest rate allows different rates to be configured according to the number of installments. For example:

{ 
  "type": "DYNAMIC", 
  "precedence": 3, 
  "rules": [ 
    { 
      "minimum": 2, 
      "maximum": 6, 
      "calculation": { 
        "value": 3.99, 
        "strategy": "PERCENTAGE" 
      } 
    }, 
    { 
      "minimum": 7, 
      "maximum": 12, 
      "calculation": { 
        "value": 5.99, 
        "strategy": "PERCENTAGE" 
      } 
    } 
  ] 
} 

In this example, 2 to 6 installments would be calculated based on a monthly interest rate of 3.99% and 7 to 12 installments would be calculated based on a monthly interest rate of 5.99%.

Fee configuration

Fees are optional charges that can be added to the contract calculation. A fee can be:

  • A percentage on the principal amount or on the contract amount
  • A fixed amount
  • A daily percentage

For example:

{ 
  "identifier": "servicefee", 
  "strategy": "DAILY_PERCENTAGE", 
  "value": 0.0015, 
  "precedence": 0, 
  "applyInto": "PRINCIPAL_AMOUNT" 
} 

Fields:

  • Identifier—Unique fee identifier. Example: servicefee
  • strategy—Defines how the fee is calculated. Example: DAILY_PERCENTAGE
  • value—Fee amount or percentage. Example: 0.0015
  • precedence—Defines when the fee is applied. Example: 0
  • applyInto—Defines the fee calculation basis. Example: PRINCIPAL_AMOUNT

Fee strategies

There are three types of fee strategies: percentage fee, fixed fee, and daily percentage fee.

Percentage fee

A percentage fee is calculated based on a percentage applied to the configured calculation basis.
For example:

{ 
  "identifier": "servicefee", 
  "strategy": "PERCENTAGE", 
  "value": 0.40, 
  "precedence": 1, 
  "applyInto": "PRINCIPAL_AMOUNT" 
}

Principal amount: 1,000.00
Fee: 0.40%
Fee amount: 1,000.00 × 0.40% = 4.00

Fixed fee

A fixed fee applies a specific monetary amount.
Example:

{ 
  "identifier": "adminFee", 
  "strategy": "FIXED", 
  "value": 100.00, 
  "precedence": 0, 
  "applyInto": "PRINCIPAL_AMOUNT" 
} 
 

Fee amount: 100.00

Daily percentage fee

A daily percentage fee is calculated based on the accumulated number of days for each installment.
Example:

{ 
  "identifier": "insurance", 
  "strategy": "DAILY_PERCENTAGE", 
  "value": 0.0020, 
  "precedence": 0, 
  "applyInto": "PRINCIPAL_AMOUNT" 
} 
 

Fee amount: calculation basis × daily rate × number of days

Fee precedence

The precedence field defines the calculation order between fees and interest. It determines whether a fee is included in the financed amount before interest is calculated or added after interest is calculated.

📘

If fee.precedence is less than or equal to interestRate.precedence, the fee is applied before interest and is financed.

If fee.precedence is greater than interestRate.precedence, the fee is applied after interest and is not financed.

Fees applied before interest

Fees with precedence lower than or equal to the interest precedence are included in the financed amount.

Original principal amount + fees applied before interest = financed principal amount

Interest is calculated on the financed principal amount.

Fees applied after interest

Fees with precedence greater than the interest precedence are calculated after interest is calculated. In this case, the fee is not included in the financed principal amount, it is added to the installment amount after the base installment is calculated.

Apply into

The applyInto field defines which amount is used as the fee calculation basis, the principal amount, or the contract amount.

PRINCIPAL_AMOUNT

The fee is calculated on the original principal amount.

Principal amount: 1,000.00
Fee: 0.38%
Fee amount: 1,000.00 × 0.38% = 3.80

CONTRACT_AMOUNT

The fee is calculated on the total contract amount after interest.

Contract amount: 2,098.72
Fee: 2.0%
Fee amount: 2,098.72 × 2.0% = 41.97

This option is normally used when the fee must consider the contract amount, including interest.

Day count methods and installment frequency

The financial calculation considers two distinct configurations:

  • day_count_method—Day count convention used in the interest calculation
  • frequency—Interval between installments in the payment schedule

Example:

 { 
  "day_count_method": "MONTH_ACTUAL_YEAR_365", 
  "frequency": "MONTHLY" 
} 
 

In this example:

  • The calendar used is MONTH_ACTUAL_YEAR_365.
  • Installments are generated with MONTHLY frequency.

Day count method

There are two day count methods: MONTH_30_YEAR_360 and MONTH_ACTUAL_YEAR_365.

MONTH_30_YEAR_360

In this method, every month is considered to have exactly 30 days, regardless of the actual number. Likewise, a year has exactly 360 days.

  • January 15 to February 15: 30 days
  • February 15 to March 15: 30 days

This method is commonly used in Brazilian credit products.

MONTH_ACTUAL_YEAR_365

This method uses the actual number of calendar days between dates. That is:

  • January 15 to February 15: 31 days
  • February 15 to March 15: 28 days in a non-leap year
  • February 15 to March 15: 29 days in a leap year

This method is normally used when the product requires precision based on the real calendar.

Installment frequency

Installment frequency can be monthly, weekly, or bi-weekly.

Monthly

Installments are generated monthly.

When day_count_method = MONTH_30_YEAR_360, each period is considered to have 30 days. So the first installment is due at 30 days, the second at 60, and so on.

When day_count_method = MONTH_ACTUAL_YEAR_365, days are calculated using the actual number of days between due dates. The total used in the calculation is the sum of the actual days between installments

  • Jan 15 - Feb 15 = 31 days
  • Feb 15 - Mar 15 = 28 days
  • Mar 15 - Apr 15 = 31 days

Weekly

Installments are generated weekly. Regardless of the selected day count method, the interval between installments is always be 7 days.

Accumulated days = 7 × number of installments

  • Installment 1 is at 7 days
  • Installment 2 is at 14 days
  • Installment 3 is at 21 days
  • and so on

Bi-weekly

Installments are generated every two weeks. Regardless of the selected day count method, the interval between installments is always be 14 days.

Accumulated days = 14 × number of installments

  • Installment 1 is at 14 days
  • Installment 2 is at 28 days
  • Installment 3 is at 42 days
  • and so on

Rounding

All monetary amounts are rounded to two decimal places using Banker’s Rounding, also known as HALF_EVEN. This rounding method helps reduce accumulated differences across multiple installments.

Examples:

  • $1.225 rounds to $1.22
  • $1.235 rounds to $1.24
  • $1.245 rounds to $1.24
  • $1.255 rounds to $1.26

Total contract amount rule

Total contract amount = Principal + Total interest + Total fees

Installment amount = Amortization + Interest + Fee postings

The sum of all installments must match the total contract amount, considering the rounding rules.

Calculation flow

The calculation flow follows these steps.

Step 1: Separate fees by precedence.

Fees before interest: fee.precedence less than or equal to interestRate.precedence

Fees after interest: fee.precedence greater than interestRate.precedence

Step 2: Calculate days between installments.

Example:

Start date: 2024-01-15
Installment 1: 2024-02-15 = 30 accumulated days
Installment 2: 2024-03-15 = 60 accumulated days
Installment 3: 2024-04-15 = 90 accumulated days

Step 3: Apply fees before interest.

Original principal amount = 1,000.00
Fees before interest = 8.06
Financed principal amount = 1,008.06

Step 4: Calculate the fixed installment amount.

The system calculates the fixed installment amount using the financed principal amount, interest rate, number of installments, due dates, and day count method.

Step 5: Calculate interest and amortization.

Base installment amount = amortization + interest. As the outstanding balance decreases, the installment tends to have a lower interest component and a higher amortization component.

Step 6: Distribute fees.

The system distributes fee postings according to each fee strategy.

Step 7: Apply fees after interest.

**Base Installment Amount **= 524.68
Insurance per installment = 10.49
Final installment amount = 535.17

Step 8: Build the final schedule.

The final result includes calculated fee totals, installment schedule, installment amount, principal amount, amortization, interest, fee postings, and due dates.

Installment amount = amortization + interest + fee postings

Calculation flow examples

Example 1: Brazilian contract with IOF

{ 
  "dayCountMethod": "MONTH_30_YEAR_360", 
  "interestRate": { 
    "type": "FIXED", 
    "value": 5.99, 
    "precedence": 3 
  }, 
  "fees": [ 
    { 
      "calculation": "IOF", 
      "id": "iof", 
      "precedence": 1, 
      "daily_iof_rate": 0.0082, 
      "fixed_iof_rate": 0.38, 
      "calculation_basis": "PRINCIPAL_AMOUNT" 
    } 
  ] 
} 
 

Both IOF fees are applied before interest because their precedence is lower than the interest precedence. Therefore, interest is calculated on the financed principal amount.

Financed principal amount: 1,008.06
Base installment amount: 531.00
Number of installments: 2

Installment

Installment
amount

Amortization

Interest

Daily IOF

Fixed IOF

Principal
amount

1

531.00

507.26

23.74

0.50

3.83

502.93

2

531.00

500.99

30.01

1.73

0.00

499.26

Total interest: 53.75
Total daily IOF: 2.23
Total fixed IOF: 3.83
Total contract amount: 1,062.00

Example 2: Contract with fixed administration fee

{ 
  "principal": 5000.00, 
  "installments": 6, 
  "dayCountMethod": "MONTH_ACTUAL_YEAR_365", 
  "interestRate": { 
    "type": "FIXED", 
    "value": 3.5, 
    "precedence": 2 
  }, 
  "fees": [ 
    { 
      "identifier": "adminFee", 
      "strategy": "FIXED", 
      "value": 100.00, 
      "precedence": 0, 
      "applyInto": "PRINCIPAL_AMOUNT" 
    } 
  ] 
} 
 

The administration fee has precedence 0, while interest has precedence 2. Since 0 less than 2, the administration fee is applied before interest and included in the financed principal amount.

Original principal amount: 5,000.00
Administration fee: 100.00
Financed principal amount: 5,100.00
Base installment amount: 882.45
Total interest: 194.70
Total administration fee: 100.00
Total contract amount: 5,294.70

Example 3: Fee applied after interest

{ 
  "principal": 2000.00, 
  "installments": 4, 
  "dayCountMethod": "MONTH_30_YEAR_360", 
  "interestRate": { 
    "type": "FIXED", 
    "value": 4.5, 
    "precedence": 2 
  }, 
  "fees": [ 
    { 
      "identifier": "insurance", 
      "strategy": "PERCENTAGE", 
      "value": 2.0, 
      "precedence": 5, 
      "applyInto": "CONTRACT_AMOUNT" 
    } 
  ] 
} 
 

The insurance fee has precedence 5, while interest has precedence 2. Since 5 is great than 2, insurance is applied after interest is calculated, is not included in the financed principal amount, and is distributed across installments.

Base installment amount before insurance: 524.68
Contract amount before insurance: 2,098.72
Insurance fee: 41.97
Insurance per installment: 10.49
Final installment amount: 535.17
Total interest: 98.72
Total insurance: 41.97
Final total contract amount: 2,140.69

Example 4: Interest-free installment plan

{ 
  "principal": 1500.00, 
  "installments": 3, 
  "dayCountMethod": "MONTH_30_YEAR_360", 
  "interestRate": { 
    "type": "FIXED", 
    "value": 0.0, 
    "precedence": 0 
  }, 
  "fees": [] 
} 
 

Principal amount: 1,500.00
Number of installments: 3
Installment 1: 500.00
Installment 2: 500.00
Installment 3: 500.00
Total interest: 0.00
Total contract amount: 1,500.00

Common use cases

Brazilian credit card installments

Strategy: EQUAL_INSTALLMENTS

Day count method: MONTH_30_YEAR_360

Interest rate: Fixed or dynamic

Fees: Daily IOF, Fixed IOF

International personal loans

Strategy: EQUAL_INSTALLMENTS

Day count method: MONTH_ACTUAL_YEAR_365

Fees: Optional administration fee, optional insurance

Interest: Fixed or Dynamic

BNPL

Strategy: EQUAL_INSTALLMENTS

Interest rate: Can be 0% or greater than 0%

Fees: Optional service fee, optional insurance

Day count method: According to product configuration

API response structure

The API response includes two main sections: calculatedFees and installments.

calculatedFees section

The calculatedFees section shows the total calculated amount for each fee or charge.
Example:

{ 
  "calculatedFees": [ 
    { 
      "id": "interestAmount", 
      "type": "interestAmount", 
      "calculatedFee": 53.75, 
      "calculation": { 
        "method": "PERCENTAGE", 
        "value": 5.99 
      } 
    }, 
    { 
      "id": "insurance", 
      "type": "feeAmount", 
      "calculatedFee": 2.23, 
      "calculation": { 
        "method": "DAILY_PERCENTAGE", 
        "value": 0.0010 
      } 
    } 
  ] 
} 
 

installments section

The installments section shows the detailed installment schedule.
Example:

{ 
  "installments": [ 
    { 
      "number": 1, 
      "installmentAmount": 531.00, 
      "principalAmount": 502.93, 
      "dueDate": "2018-02-01", 
      "postings": { 
        "amortization": 507.26, 
        "interest_amount": 23.74, 
        "dailyIof": 0.50, 
        "fixedIof": 3.83 
      } 
    } 
  ] 
} 
 

How to interpret installment fields

  • installmentAmount—The final amount charged in the installment. It includes amortization, interest, and fee postings.
  • principalAmount—The portion of the installment that effectively reduces the original principal amount. When there are financed fees, this amount might be different from amortization because part of the amortization might be related to fees included in the financed amount.
  • postings—The postings object provides the detailed composition of the installment, making it possible to understand how each installment amount was built.

Troubleshooting

  • Why is the installment amount different from expected?—Check the day count method, fee precedence, fee calculation basis, and rounding method.
  • Why is the total contract amount higher than expected?—This usually happens when fees are applied before interest. In this case, fees increase the financed principal amount, and interest is calculated on that amount.
  • How should the Brazilian IOF behavior be configured?—Use a daily percentage fee and a fixed percentage fee, both applied on PRINCIPAL_AMOUNT and with precedence lower than the interest precedence.

Example:

{ 
  "dayCountMethod": "MONTH_30_YEAR_360", 
  "interestRate": { 
    "type": "FIXED", 
    "value": 5.99, 
    "precedence": 3 
  }, 
  "fees": [ 
    { 
      "calculation": "IOF", 
      "id": "iof", 
      "precedence": 0, 
      "daily_iof_rate": 0.0082, 
      "fixed_iof_rate": 0.38, 
      "calculation_basis": "PRINCIPAL_AMOUNT" 
    } 
  ] 
} 
 

Best practices

  • Define precedence intentionally.
    • Fees that should be financed have a precedence lower than or equal to the interest precedence.
    • Fees that should not be financed have a precedence greater than the interest precedence.
  • Use PRINCIPAL_AMOUNT for fees based on the original amount.
    • Use PRINCIPAL_AMOUNT when the fee should be calculated on the originally financed amount, such as IOF, administration fee, or service fee based on the purchase amount.
  • Use CONTRACT_AMOUNT for fees based on the final contract amount.
    • Use CONTRACT_AMOUNT when the fee should consider the contract amount after interest, such as insurance or fees calculated on the total financed amount.
  • Choose the day count method according to the product.
    • Use MONTH_30_YEAR_360 when the product requires fixed 30-day monthly periods. Use MONTH_ACTUAL_YEAR_365 when the product requires calculation based on actual calendar days.


Did this page help you?