PHPackages                             phelix/loan-amortization - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. phelix/loan-amortization

ActivePackage[Utility &amp; Helpers](/categories/utility)

phelix/loan-amortization
========================

Comprehensive Loan amortization computation package for amortization schedules and interest rates

v1.0.18(3y ago)85.4k↓76.7%1Apache-2.0PHP

Since Mar 10Pushed 3y ago1 watchersCompare

[ Source](https://github.com/phelixjuma/loan-amortization)[ Packagist](https://packagist.org/packages/phelix/loan-amortization)[ RSS](/packages/phelix-loan-amortization/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (19)Used By (0)

Loan Amortization SDK by Phelix Juma
====================================

[](#loan-amortization-sdk-by-phelix-juma)

This is a PHP SDK for calculating loan amortization Calculates the total interest, repayment amount as well as the repayment schedule

Types of Interests Included
===========================

[](#types-of-interests-included)

- Flat Rate Interest
    - This is interest type where the interest rate for each period is computed as a percentage of the loan principal amount
    - The loan interest is constant over the entire repayment period
- Interest on Reducing Balance
    - In this case, instead of computing interest on the principal amount, the interest for each period is calculated as a percentage of the balance on principal repayments at at that time
    - The user thus pays less interest in later periods when their loan balance reduces as compared in the amount they'd pay at the start of the loan repayment schedle

Types of Amortization Included
==============================

[](#types-of-amortization-included)

- Loan amortization basically describes the repayment schedule spread over a given duration
- The following types are supported:
    - **Even Principal Repayment**: This is a repayment plan where the principal repayment remains constant over the entire repayment duration
    - **Even Installment Repayment**: This is a repayment plan where the total repayment remains constant over the entire repayment duration
- Loan amortization types depend on the interest type:
    - **Flat Rate Interest**: Amortization type doesn't really matter. The repayments will have both equal installment and principal and interest repayments for the entire repayment duration
    - **Interest on Reducing Balance**: Supports both types. Either of them can be used at a time

Grace on Repayments
===================

[](#grace-on-repayments)

The package supports three types of grace on repayments

- **Grace on Principal Repayments**: When applied, the principal repayments for the set period are deferred to a later period. For instance, if grace on principal repayments is set to 2, then the first two installments will have principal repayments of 0 and the principal amounts recouped through the remaining installments
- **Grace on Interest Repayments**: When applied, the interest repayments for the set period are deferred to a later period. For instance, if grace on interest repayments is set to 2, then *the first two installments* will have the interest repayments of 0 and the interests will be collected in the *last two installments*.
- **Grace on Interest**: This is a conditional grace applied to interest collected. If set, the interest for the specified period is zero-rated ie no interest is paid for that period. For instance, one can set if a loan is repaid within a year, then the first two months interests will be zero-rated hence the user only pays the principal amounts for those first two months.

Installation
============

[](#installation)

```
composer require phelix/loan-amortization

```

How To test
===========

[](#how-to-test)

The test is more of a visualization tool than an actual test.

```
vendor/bin/phpunit test

```

Documentation
=============

[](#documentation)

As you go through the sample code samples, please note that anywhere with periods, the period types can take any of the values: **days**, **weeks**, **months** and **years** . Everything in lower case and plural.

1. Flat Interest Rate
---------------------

[](#1-flat-interest-rate)

Loan Details:

- Loan Principal = 50,000.00
- Interest Rate = 12% per year
- Loan duration = 1 week
- Repayment Schedule = 1 repayment every 2 days

```
