Logo

SQL Server ConstantPaymentAmount Function

Updated 2024-02-16 15:00:52.257000

Description

Use the table-valued function ConstantPaymentAmount to return the cash flow schedule for a loan with a fixed payment amount but no fixed maturity date. ConstantPaymentAmount computes the periodic interest and principal amounts until the loan balance has been brought to zero.

The payment period is entered in ConstantPaymentAmount as the number of months between payments. For example, a loan with monthly payments would have a frequency of 1. A loan with quarterly payments would have frequency of 3. A loan with annual payments would have a frequency of 12.

ConstantPaymentAmount supports both an initial grace period and an additional grace period during the life of the loan. All payments and their associated dates are calculated with respect to the reference date supplied to the function (which should not be confused with the start date). If an initial grace period is entered in ConstantPaymentAmount and it is greater than the reference rate, then it becomes the first interest payment date and subsequent interest payments are calculated from that date forward.

If any payments would otherwise occur in the specified grace period, then that payment is moved to the end of the grace period and all remaining payments are calculated from the end of the grace period.

If no initial grace period is specified then the first payment date is calculated using the interest payment frequency. If the start date has been entered and the number of months between the start date and the reference date is less than the frequency, then the first payment date is calculated by adding the frequency (as a number of months) to the start date.

If no start date has been entered but a previous payment date has been entered and the number of months between the previous payment date and the reference date is less than the frequency, then the first payment date is calculated by adding the frequency (as a number of months) to the previous payment date.

If there is no start date and previous payment dates or the number of months between those dates and the reference date is greater than the frequency, then the first payment date is calculated by adding the frequency (as a number of months) to the reference date.

All payments in the resultant table are moved to the end of the month and interest is calculated using these end-of-month dates.

The interest payment is calculated as:

I=P\times\left[\left(\left(1+\frac{R\times{F}}{12}\right)^{12\slash{F}}\right)^T\right]-1

Where:

column 1column 2column 3
I=InterestPayment
P=@OutstandingAmount
R=@InterestRate
F=@Frequency
T=Time, in years, from PaymentDate ( Period -1) to PaymentDate

If the irregular period is longer than the regular period then the interest amount is broken out into the regular interest amount and a 'grace' interest amount.

Syntax

SELECT * FROM [westclintech].[wct].[ConstantPaymentAmount](
  <@OutstandingAmount, float,>
 ,<@InterestBasis, nvarchar(4000),>
 ,<@InterestRate, float,>
 ,<@PaymentFrequency, int,>
 ,<@PaymentAmount, float,>
 ,<@ReferenceDate, datetime,>
 ,<@PrevPayDate, datetime,>
 ,<@StartDate, datetime,>
 ,<@FirstPayDate, datetime,>
 ,<@GracePeriodStartDate, datetime,>
 ,<@GracePeriodEndDate, datetime,>)

Arguments

@OutstandingAmount

the principal amount of the loan. @OutstandingAmount is an expression of type float or of a type that can be implicitly converted to float.

@InterestBasis

the day count convention used to calculate the interest amount. @InterestBasis can be 30/360, Actual/360, Actual/365, or Actual/Actual. @InterestBasis is an expression of the character string data type category.

@InterestRate

the annual rate of interest for the loan. @InterestRate is an expression of type float or of a type that can be implicitly converted to float.

@PaymentFrequency

the number of months in a regular interest payment. @PaymentFrequency is an expression of type int or of a type that can be implicitly converted to int.

@PaymentAmount

the amount of the periodic payment. @PaymentAmount is an expression that returns a float or float value, or a character string in date format.

@ReferenceDate

the starting date for the number of months with respect to all other dates. @ReferenceDate is an expression that returns a datetime or smalldatetime value, or a character string in date format.

@PrevPayDate

the last interest payment date prior to the reference date. @PrevPayDate is an expression that returns a datetime or smalldatetime value, or a character string in date format.

@StartDate

the start date of the loan. @StartDate is an expression that returns a datetime or smalldatetime value, or a character string in date format.

@FirstPayDate

the first payment date of the loan if other than a regular periodic payment. @FirstPayDate is an expression that returns a datetime or smalldatetime value, or a character string in date format.

@GracePeriodStartDate

the date on which the (interim) grace period commences. @GracePeriodStartDate is an expression that returns a datetime or smalldatetime value, or a character string in date format.

@GracePeriodEndDate

the date on which the (interim) grace period concludes. @GracePeriodEndDate is an expression that returns a datetime or smalldatetime value, or a character string in date format.

Return Type

table

colNamecolDatatypecolDesc
PeriodintA reference number uniquely identifying a row in the resultant table.
PrincipalPaymentfloatw in the resultant table. PrincipalPayment
InterestPaymentfloatThe amount of the regular interest payment.
CashFlowfloatPrincipalPayment + InterestPayment + GraceInterest.
OutstandingExposurefloatWhen Period = 0 then @OutstandingAmount. For Period > 0 then OutstandingExposure(Period-1) + InterestPayment.
CapitalAmountInDebtfloatWhen Period = 0, @OutstandingAmount. For Period > 0 then CapitalAmountInDebt(Period-1) – PrincipalPayment
TotalExposurefloatWhen Period = 0, @OutstandingAmount. For Period > 0 then CapitalAmountInDebt(Period-1) + InterestPayment
NumberOfMonthintThe number of months between the @ReferenceDate and the PaymentDate.
PaymentDatedatetimeThe end-of-month date of the payment.
GraceInterestfloatThe amount of the grace interest
InterestRatefloatThe interest amount from PaymentDate(Period-1) to PaymentDate assuming a principal amount of 1

Remarks

The PaymentDate for all rows is generated as the last day of the month.

For Period = 0, PrincipalPayment, InterestPayment, CashFlow, NumberOfMonth, GraceInterest, and InterestRate are set to 0.

If @Frequency is NULL then @Frequency = 1.

If @InterestRate is NULL then @InterestRate = 0.

If @ReferenceDate is NULL then @ReferenceDate = GETDATE().

GraceInterest is only calculated on @FirstPayDate and @GracePeriodEndDate.

GraceInterest is only calculated if NumberOfMonth – NumberOfMonth(Period-1) > @PaymentFrequency.

GraceInterest is the difference between the interest for the period from the previous row to the current row minus interest that would have been calculated for a period with length equal to @PaymentFrequency.

CashFlow may not equal PaymentAmount on @FirstPayDate or @GracePeriodEndDate due to GraceInterest.

The final payment is adjusted for CapitalAmountInDebt(Period-1) and the length of the period if it is less than @PaymentFrequency.

The last row returned will always be for the maturity date and may be shorter than a regular period depending on the combination of dates and @PaymentFrequency.

Examples

This is a simple 300,000 loan with quarterly payments of 17,500 and an interest rate of 5%.

SELECT *
FROM wct.ConstantPaymentAmount(   300000,       --@OutstandingAmount
                                  'Actual/360', --@InterestBasis
                                  .05,          --@InterestRate
                                  3,            --@PaymentFrequency
                                  17500,        --@PaymentAmount
                                  '2014-12-15', --@ReferenceDate
                                  NULL,         --@PrevPayDate
                                  NULL,         --@StartDate
                                  NULL,         --@FirstPayDate
                                  NULL,         --@GracePeriodStartDate
                                  NULL          --@InterestGracePeriodEndDate
                              );

This produces the following result.

PeriodPrincipalPaymentInterestPaymentCashFlowOutstandingExposureCapitalAmountInDebtTotalExposureNumberOfMonthPaymentDateGraceInterestInterestRate
000030000030000030000002014-12-31 00:00:00.00000
1137503749.999999999991750030375028625030375032015-03-31 00:00:00.00000.0125
213881.86784257673618.1321574232817500307368.132157423272368.132157423289868.13215742362015-06-30 00:00:00.00000.0126397629953652
314019.25912137493480.7408786250917500310848.873036048258348.873036048275848.87303604892015-09-30 00:00:00.00000.0127795452832686
414198.41887815443301.581121845617500314150.454157894244150.454157894261650.454157894122015-12-31 00:00:00.00000.0127795452832686
514413.99612423353086.0038757665517500317236.45803366229736.458033661247236.458033661152016-03-31 00:00:00.00000.0126397629953652
614596.18561905992903.8143809401317500320140.272414601215140.272414601232640.272414601182016-06-30 00:00:00.00000.0126397629953652
714750.60514642292749.3948535771417500322889.667268178200389.667268178217889.667268178212016-09-30 00:00:00.00000.0127795452832686
814939.11117284722560.8888271528117500325450.556095331185450.556095331202950.556095331242016-12-31 00:00:00.00000.0127795452832686
915181.86804880842318.1319511916217500327768.688046522170268.688046522187768.688046522272017-03-31 00:00:00.00000.0125
1015347.84413756022152.1558624398117500329920.843908962154920.843908962172420.843908962302017-06-30 00:00:00.00000.0126397629953652
1115520.18205994321979.8179400567717500331900.661849019139400.661849019156900.661849019332017-09-30 00:00:00.00000.0127795452832686
1215718.52292938281781.4770706171517500333682.138919636123682.138919636141182.138919636362017-12-31 00:00:00.00000.0127795452832686
1315953.97326350461546.0267364954417500335228.165656131107728.165656131125228.165656131392018-03-31 00:00:00.00000.0125
1416138.34151818111361.6584818189417500336589.8241379591589.8241379504109089.82413795422018-06-30 00:00:00.00000.0126397629953652
1516329.52369494251170.4763050575517500337760.30044300875260.300443007992760.3004430079452018-09-30 00:00:00.00000.0127795452832686
1616538.2075824562961.79241754382217500338722.09286055258722.092860551776222.0928605517482018-12-31 00:00:00.00000.0127795452832686
1716765.9738392431734.02616075689417500339456.11902130941956.119021308659456.1190213086512019-03-31 00:00:00.00000.0125
1816969.6845993653530.31540063467417500339986.43442194324986.434421943342486.4344219433542019-06-30 00:00:00.00000.0126397629953652
1917180.6847298374319.31527016264717500340305.7496921067805.7496921059625305.749692106572019-09-30 00:00:00.00000.0127795452832686
207805.7496921059699.75393166012837905.50362376609340405.50362376607905.50362376609602019-12-31 00:00:00.00000.0127795452832686

In this example, using the same basic SQL, we add a first payment date so that the first payment will not be paid until 30-June-2015.

SELECT *
FROM wct.ConstantPaymentAmount(   300000,       --@OutstandingAmount
                                  'Actual/360', --@InterestBasis
                                  .05,          --@InterestRate
                                  3,            --@PaymentFrequency
                                  17500,        --@PaymentAmount
                                  '2014-12-15', --@ReferenceDate
                                  NULL,         --@PrevPayDate
                                  NULL,         --@StartDate
                                  '2015-06-30', --@FirstPayDate
                                  NULL,         --@GracePeriodStartDate
                                  NULL          --@InterestGracePeriodEndDate
                              );

This produces the following result.

PeriodPrincipalPaymentInterestPaymentCashFlowOutstandingExposureCapitalAmountInDebtTotalExposureNumberOfMonthPaymentDateGraceInterestInterestRate
000030000030000030000002014-12-31 00:00:00.00000
113708.07110139043791.9288986095521297.3991112326303791.92889861286291.92889861303791.9288986162015-06-30 00:00:00.0003797.399111232620.0252977600328073
213841.31933040593658.680669594117500307450.609568204272450.609568204289950.60956820492015-09-30 00:00:00.00000.0127795452832686
314018.2050975693481.79490243117500310932.404470635258432.404470635275932.404470635122015-12-31 00:00:00.00000.0127795452832686
414233.47565716883266.5243428311717500314198.928813466244198.928813466261698.928813466152016-03-31 00:00:00.00000.0126397629953652
514413.38341607573086.6165839242617500317285.54539739229785.54539739247285.54539739182016-06-30 00:00:00.00000.0126397629953652
614563.44521715352936.5547828465317500320222.100180237215222.100180237232722.100180237212016-09-30 00:00:00.00000.0127795452832686
714749.55942478652750.4405752135117500322972.54075545200472.54075545217972.54075545242016-12-31 00:00:00.00000.0127795452832686
814994.09324055692505.9067594431217500325478.447514893185478.447514893202978.447514893272017-03-31 00:00:00.00000.0125
915155.59638266352344.4036173365317500327822.85113223170322.85113223187822.85113223302017-06-30 00:00:00.00000.0126397629953652
1015323.35141118022176.6485888197517500329999.49972105154999.499721049172499.499721049332017-09-30 00:00:00.00000.0127795452832686
1115519.17687443091980.8231255691417500331980.322846619139480.322846619156980.322846619362017-12-31 00:00:00.00000.0127795452832686
1215756.49596441731743.5040355827317500333723.826882201123723.826882201141223.826882201392018-03-31 00:00:00.00000.0125
1315936.16015132941563.8398486706217500335287.666730872107787.666730872125287.666730872422018-06-30 00:00:00.00000.0126397629953652
1416122.5226320351377.4773679650517500336665.14409883791665.144098837109165.144098837452018-09-30 00:00:00.00000.0127795452832686
1516328.56114009161171.4388599084317500337836.58295874675336.582958745492836.5829587454482018-12-31 00:00:00.00000.0127795452832686
1616558.2927130157941.70728698431417500338778.2902457358778.290245729776278.2902457297512019-03-31 00:00:00.00000.0125
1716757.0563420212742.94365797880917500339521.23390370942021.233903708559521.2339037085542019-06-30 00:00:00.00000.0126397629953652
1816962.9877384687537.01226153126717500340058.2461652425058.246165239842558.2461652398572019-09-30 00:00:00.00000.0127795452832686
1917179.767008412320.23299158797517500340378.4791568287878.4791568277825378.4791568278602019-12-31 00:00:00.00000.0127795452832686
207878.4791568277899.58210930622767978.06126613401340478.06126613407978.06126613401632020-03-31 00:00:00.00000.0126397629953652

We modify the SQL so that there are no payments in 2018.

SELECT *
FROM wct.ConstantPaymentAmount(   300000,       --@OutstandingAmount
                                  'Actual/360', --@InterestBasis
                                  .05,          --@InterestRate
                                  3,            --@PaymentFrequency
                                  17500,        --@PaymentAmount
                                  '2014-12-15', --@ReferenceDate
                                  NULL,         --@PrevPayDate
                                  NULL,         --@StartDate
                                  '2015-06-30', --@FirstPayDate
                                  '2018-01-01', --@GracePeriodStartDate
                                  '2019-01-01'  --@GracePeriodEndDate
                              );

This produces the following result.

PeriodPrincipalPaymentInterestPaymentCashFlowOutstandingExposureCapitalAmountInDebtTotalExposureNumberOfMonthPaymentDateGraceInterestInterestRate
000030000030000030000002014-12-31 00:00:00.00000
113708.07110139043791.9288986095521297.3991112326303791.92889861286291.92889861303791.9288986162015-06-30 00:00:00.0003797.399111232620.0252977600328073
213841.31933040593658.680669594117500307450.609568204272450.609568204289950.60956820492015-09-30 00:00:00.00000.0127795452832686
314018.2050975693481.79490243117500310932.404470635258432.404470635275932.404470635122015-12-31 00:00:00.00000.0127795452832686
414233.47565716883266.5243428311717500314198.928813466244198.928813466261698.928813466152016-03-31 00:00:00.00000.0126397629953652
514413.38341607573086.6165839242617500317285.54539739229785.54539739247285.54539739182016-06-30 00:00:00.00000.0126397629953652
614563.44521715352936.5547828465317500320222.100180237215222.100180237232722.100180237212016-09-30 00:00:00.00000.0127795452832686
714749.55942478652750.4405752135117500322972.54075545200472.54075545217972.54075545242016-12-31 00:00:00.00000.0127795452832686
814994.09324055692505.9067594431217500325478.447514893185478.447514893202978.447514893272017-03-31 00:00:00.00000.0125
915155.59638266352344.4036173365317500327822.85113223170322.85113223187822.85113223302017-06-30 00:00:00.00000.0126397629953652
1015323.35141118022176.6485888197517500329999.49972105154999.499721049172499.499721049332017-09-30 00:00:00.00000.0127795452832686
1115519.17687443091980.8231255691417500331980.322846619139480.322846619156980.322846619362017-12-31 00:00:00.00000.0127795452832686
1215717.50489805671782.4951019432923553.5775973653333762.817948562123762.817948562141262.817948562492019-01-31 00:00:00.0006053.577597365270.0561804886838813
1315970.2598504251529.7401495750317500335292.558098137107792.558098137125292.558098137522019-04-30 00:00:00.00000.0123602562945102
1416122.46012258551377.5398774145117500336670.09797555291670.0979755514109170.097975551552019-07-31 00:00:00.00000.0127795452832686
1516328.49783179981171.5021682002317500337841.60014375275341.600143751792841.6001437517582019-10-31 00:00:00.00000.0127795452832686
1616537.168609249962.83139075099317500338804.43153450358804.431534502776304.4315345027612020-01-31 00:00:00.00000.0127795452832686
1716764.9446058187735.05539418128117500339539.48692868442039.486928683959539.4869286839642020-04-30 00:00:00.00000.0125
1816962.7544731095537.24552689049617500340076.73245557525076.732455574442576.7324555744672020-07-31 00:00:00.00000.0127795452832686
1917179.5307620276320.46923797242617500340397.2016935477897.2016935468625397.2016935469702020-10-31 00:00:00.00000.0127795452832686
207897.20169354686100.9226466537887998.12434020065340498.12434020107998.12434020065732021-01-31 00:00:00.00000.0127795452832686

Using the same basic SQL, we get rid of the first payment date and calculate the first interest payment using the previous payment date.

SELECT *
FROM wct.ConstantPaymentAmount(   300000,       --@OutstandingAmount
                                  'Actual/360', --@InterestBasis
                                  .05,          --@InterestRate
                                  3,            --@PaymentFrequency
                                  17500,        --@PaymentAmount
                                  '2014-12-15', --@ReferenceDate
                                  '2014-11-15', --@PrevPayDate
                                  NULL,         --@StartDate
                                  NULL,         --@FirstPayDate
                                  '2018-01-01', --@GracePeriodStartDate
                                  '2019-01-01'  --@GracePeriodEndDate
                              );

This produces the following result.

PeriodPrincipalPaymentInterestPaymentCashFlowOutstandingExposureCapitalAmountInDebtTotalExposureNumberOfMonthPaymentDateGraceInterestInterestRate
000030000030000030000002014-12-31 00:00:00.00000
115046.92948106362453.0705189363717500302453.070518936284953.070518936302453.07051893622015-02-28 00:00:00.00000.00817690172978791
213858.42933169683641.5706683031917500306094.64118724271094.64118724288594.6411872452015-05-31 00:00:00.00000.0127795452832686
314035.53375689623464.4662431037917500309559.107430343257059.107430343274559.10743034382015-08-31 00:00:00.00000.0127795452832686
414250.83380628033249.1661937196617500312808.273624063242808.273624063260308.273624063112015-11-30 00:00:00.00000.0126397629953652
514430.96096807813069.0390319219317500315877.312655985228377.312655985245877.312655985142016-02-29 00:00:00.00000.0126397629953652
614581.44179124162918.5582087583617500318795.870864743213795.870864743231295.870864743172016-05-31 00:00:00.00000.0127795452832686
714767.78598690822732.2140130918417500321528.084877835199028.084877835216528.084877835202016-08-31 00:00:00.00000.0127795452832686
814984.33217772272515.6678222772617500324043.752700112184043.752700112201543.752700112232016-11-30 00:00:00.00000.0126397629953652
915199.45309124862300.546908751417500326344.299608864168844.299608864186344.299608864262017-02-28 00:00:00.00000.0125
1015342.24662732672157.7533726732517500328502.052981537153502.052981537171002.052981537292017-05-31 00:00:00.00000.0127795452832686
1115538.31356284771961.6864371522517500330463.739418689137963.739418689155463.739418689322017-08-31 00:00:00.00000.0127795452832686
1215756.17103179341743.8289682065517500332207.568386896122207.568386896139707.568386896352017-11-30 00:00:00.00000.0126397629953652
1315938.24284584151561.7571541584823357.3944242221333769.325541054106269.325541054123769.325541054492019-01-31 00:00:00.0005857.394424222130.0607094280355238
1416186.48390006781313.5160999321717500335082.84164098790082.8416409865107582.841640987522019-04-30 00:00:00.00000.0123602562945102
1516348.78224600351151.217753996517500336234.05939498373734.05939498391234.059394983552019-07-31 00:00:00.00000.0127795452832686
1616557.7122490426942.28775095740517500337176.3471459457176.347145940474676.3471459404582019-10-31 00:00:00.00000.0127795452832686
1716769.3122825166730.68771748343317500337907.03486342440407.034863423957907.0348634239612020-01-31 00:00:00.00000.0127795452832686
1816994.9120642072505.08793579279717500338412.12279921723412.122799216740912.1227992167642020-04-30 00:00:00.00000.0125
1917200.80371651299.19628349003517500338711.3190827076211.3190827067123711.3190827067672020-07-31 00:00:00.00000.0127795452832686
206211.3190827067179.3778334862816290.69691619299338790.69691619306290.69691619299702020-10-31 00:00:00.00000.0127795452832686

I n this example, we eliminate the grace period and the previous payment date and add a start date.

SELECT *
FROM wct.ConstantPaymentAmount(   300000,       --@OutstandingAmount
                                  'Actual/360', --@InterestBasis
                                  .05,          --@InterestRate
                                  3,            --@PaymentFrequency
                                  17500,        --@PaymentAmount
                                  '2014-12-15', --@ReferenceDate
                                  NULL,         --@PrevPayDate
                                  '2014-10-15', --@StartDate
                                  NULL,         --@FirstPayDate
                                  NULL,         --@GracePeriodStartDate
                                  NULL          --@GracePeriodEndDate
                              );

This produces the following result.

PeriodPrincipalPaymentInterestPaymentCashFlowOutstandingExposureCapitalAmountInDebtTotalExposureNumberOfMonthPaymentDateGraceInterestInterestRate
000030000030000030000002014-12-31 00:00:00.00000
116213.58937222391286.4106277761517500301286.410627776283786.410627776301286.41062777612015-01-31 00:00:00.00000.00428803542592049
213992.32723174163507.6727682584317500304794.083396035269794.083396035287294.08339603542015-04-30 00:00:00.00000.0123602562945102
314052.15429408243447.8457059175817500308241.929101952255741.929101952273241.92910195272015-07-31 00:00:00.00000.0127795452832686
414231.73443621113268.2655637888717500311510.194665741241510.194665741259010.194665741102015-10-31 00:00:00.00000.0127795452832686
514413.60953089813086.3904691018617500314596.585134843227096.585134843244596.585134843132016-01-31 00:00:00.00000.0127795452832686
614661.29268581452838.7073141855317500317435.292449028212435.292449028229935.292449028162016-04-30 00:00:00.00000.0125
714785.17356038322714.8264396167717500320150.118888645197650.118888645215150.118888645192016-07-31 00:00:00.00000.0127795452832686
814974.12135541912525.8786445808717500322675.997533226182675.997533226200175.997533226222016-10-31 00:00:00.00000.0127795452832686
915165.48381735792334.5161826421317500325010.513715868167510.513715868185010.513715868252017-01-31 00:00:00.00000.0127795452832686
1015429.52711844682070.472881553217500327080.986597421152080.986597421169580.986597421282017-04-30 00:00:00.00000.0123602562945102
1115556.47414505411943.5258549459217500329024.512452367136524.512452367154024.512452367312017-07-31 00:00:00.00000.0127795452832686
1215755.27881083881744.721189161217500330769.233641529120769.233641529138269.233641529342017-10-31 00:00:00.00000.0127795452832686
1315956.62410985241543.3758901475617500332312.609531676104812.609531676122312.609531676372018-01-31 00:00:00.00000.0127795452832686
1416204.48928329211295.5107167079417500333608.12024838488608.120248384106108.120248384402018-04-30 00:00:00.00000.0123602562945102
1516367.62851482051132.3714851795417500334740.49173356472240.491733563689740.4917335636432018-07-31 00:00:00.00000.0127795452832686
1616576.7993646053923.20063539466917500335663.69236895855663.692368958373163.6923689582462018-10-31 00:00:00.00000.0127795452832686
1716788.643322737711.35667726303717500336375.04904622138875.049046221356375.0490462213492019-01-31 00:00:00.00000.0127795452832686
1817019.494430327480.5055696729517500336855.55461589421855.554615894239355.5546158942522019-04-30 00:00:00.00000.0123602562945102
1917220.6959500952279.30404990477117500337134.8586657994634.8586657990122134.858665799552019-07-31 00:00:00.00000.0127795452832686
204634.8586657990159.23138620112854694.09005200014337194.09005204694.09005200014582019-10-31 00:00:00.00000.0127795452832686

See Also

BALLOON - Schedule with periodic interest payments and principal repaid at maturity

BULLET - Schedule with single interest and principal payment at maturity

CONSTANTCASHFLOW - Schedule with equal periodic cash flows

CONSTANTPRINCIPAL - Schedule with fixed maturity date where the periodic principal payment is calculated on a straight-line basis

CONSTANTPRINCIPALAMOUNT - Schedule with no fixed maturity with a fixed periodic principal payment

CONSTANTPRINCIPALRATE - Schedule with no fixed maturity where a fixed percentage principal payment

PAYMENTPERIODS - Number of months until first payment date, start of grace period, end of grace period, and total number payments for a loan