Calculate loan in js (browser/node.js) for equal installments, installments decreasing, the sum of interest, etc.
npm install loanjs

!core gzip size

Super small (~500B) and fast module to calculate loan in js (browser/node.js) for equal/decreasing/annuity/annuityDue installments, the sum of interest, etc, with TypeScript support
Install with:
```
npm install loanjs
#### Calculating Loan:
`js
import { Loan } from 'loanjs';
// or
const { Loan } = require('loanjs');
const loan = new Loan(
1000, // amount
12, // installments number
5, // interest rate
'annuity' // loanType: 'annuity' | 'annuityDue' | 'diminishing' | GetNextInstalmentPartFunction
);
/** returns
{
installments : [
{
capital : number,
interest : number,
installment : number,
remain : number
},
//...
],
amount : number,
interestSum : number,
capitalSum : number,
sum : number
}
*/
`
`ts
interface InstallmentPart {
capital: number;
interest: number;
installment: number;
}
type GetNextInstalmentPartFunction = (
amount: number,
installmentsNumber: number,
interestRateMonth: number,
capitalSum: number
) => InstallmentPart;
`
js
{
installments : [
{
capital : number,
interest : number,
installment : number,
remain : number
}
],
amount : number,
interestSum : number,
capitalSum : number,
sum : number
}
`Examples
$3
`ts
import { Loan } from 'loanjs';const annuityLoan = new Loan(1000, 12, 5, 'annuity');
const annuityDueLoan = new Loan(1000, 12, 5, 'annuityDue');
const diminishingLoan = new Loan(1000, 12, 5, 'diminishing');
const customInstalmentLoan = new Loan(1000, 12, 5, getNext10Instalment);
function getNext10Instalment (amount: number, installmentsNumber: number, capitalSum: number, interestRateMonth: number) {
const capital = rnd(amount / installmentsNumber);
const interest = 10;
const installment = capital + interest;
return { capital, interest, installment };
}
`$3
`js
import { Loan } from 'loanjs';
// or
const { Loan } = require('loanjs');const loan_1 = new Loan(1000, 12, 5, 'diminishing');
// loan on 1 000($) in 12 loanType installments (ex. months) with 5% interest rate
const loan_2 = new Loan(500000, 360, 3.5, 'annuity');
// loan on 500 000($) in 360 equal installments (30 years) with 3.5% interest rate
`$3
> You can also render loan as html table`html
`more examples here
Similar projects
* InterestJS - counting regular savingsContributing
Im open for contributors :).
Release History
#### 2023-07-25 v1.1.0
* add
annuityDue interest rate loan type
* changing the fourth argument diminishing to loanType (annuity | diminishing | annuityDue`), with backward compatibility (false == 'annuity', true == 'diminishing')#### 2023-06-23 v1.0.11
* add TypeScript types
* code cleanup
* packages update
#### 2017-08-06 v1.0.0
* go to es6
* make dist files
* make 100% covered tests
#### 2016-02-29 v0.1.4
* update dependencies
#### 2015-10-12 v0.1.3
* fixing typo intrest -> interest #3
* update dependencies
#### 2014-11-10 v0.0.4
* update dependencies
#### 2014-11-10 v0.0.2
* now you can use it in node/browserify and browser
Copyright (c) 2023 Grzegorz Klimek
Licensed under the MIT license.