Finance

AmortizationTable

A loan's payment schedule worked out from its amount, rate and term: each month's principal, interest and balance, grouped by year with the year's totals.

#finance#loans#table#data#no-js

Demo

Preview
Monthly payment
$1,580.17
Total interest
$318,861.58
Total paid
$568,861.58
Paid off
Nov 2056
20261 paymentPrincipal$226.00Interest$1,354.17Balance$249,774.00
Amortization schedule, 2026
DateAmountPrincipalInterestBalance
$1,580.17$226.00$1,354.17$249,774.00
2026 total$1,580.17$226.00$1,354.17$249,774.00
202712 paymentsPrincipal$2,809.45Interest$16,152.59Balance$246,964.55
Amortization schedule, 2027
DateAmountPrincipalInterestBalance
$1,580.17$227.23$1,352.94$249,546.77
$1,580.17$228.46$1,351.71$249,318.31
$1,580.17$229.70$1,350.47$249,088.61
$1,580.17$230.94$1,349.23$248,857.67
$1,580.17$232.19$1,347.98$248,625.48
$1,580.17$233.45$1,346.72$248,392.03
$1,580.17$234.71$1,345.46$248,157.32
$1,580.17$235.98$1,344.19$247,921.34
$1,580.17$237.26$1,342.91$247,684.08
$1,580.17$238.55$1,341.62$247,445.53
$1,580.17$239.84$1,340.33$247,205.69
$1,580.17$241.14$1,339.03$246,964.55
2027 total$18,962.04$2,809.45$16,152.59$246,964.55
202812 paymentsPrincipal$2,997.60Interest$15,964.44Balance$243,966.95
Amortization schedule, 2028
DateAmountPrincipalInterestBalance
$1,580.17$242.45$1,337.72$246,722.10
$1,580.17$243.76$1,336.41$246,478.34
$1,580.17$245.08$1,335.09$246,233.26
$1,580.17$246.41$1,333.76$245,986.85
$1,580.17$247.74$1,332.43$245,739.11
$1,580.17$249.08$1,331.09$245,490.03
$1,580.17$250.43$1,329.74$245,239.60
$1,580.17$251.79$1,328.38$244,987.81
$1,580.17$253.15$1,327.02$244,734.66
$1,580.17$254.52$1,325.65$244,480.14
$1,580.17$255.90$1,324.27$244,224.24
$1,580.17$257.29$1,322.88$243,966.95
2028 total$18,962.04$2,997.60$15,964.44$243,966.95
202912 paymentsPrincipal$3,198.34Interest$15,763.70Balance$240,768.61
Amortization schedule, 2029
DateAmountPrincipalInterestBalance
$1,580.17$258.68$1,321.49$243,708.27
$1,580.17$260.08$1,320.09$243,448.19
$1,580.17$261.49$1,318.68$243,186.70
$1,580.17$262.91$1,317.26$242,923.79
$1,580.17$264.33$1,315.84$242,659.46
$1,580.17$265.76$1,314.41$242,393.70
$1,580.17$267.20$1,312.97$242,126.50
$1,580.17$268.65$1,311.52$241,857.85
$1,580.17$270.11$1,310.06$241,587.74
$1,580.17$271.57$1,308.60$241,316.17
$1,580.17$273.04$1,307.13$241,043.13
$1,580.17$274.52$1,305.65$240,768.61
2029 total$18,962.04$3,198.34$15,763.70$240,768.61
203012 paymentsPrincipal$3,412.56Interest$15,549.48Balance$237,356.05
Amortization schedule, 2030
DateAmountPrincipalInterestBalance
$1,580.17$276.01$1,304.16$240,492.60
$1,580.17$277.50$1,302.67$240,215.10
$1,580.17$279.00$1,301.17$239,936.10
$1,580.17$280.52$1,299.65$239,655.58
$1,580.17$282.04$1,298.13$239,373.54
$1,580.17$283.56$1,296.61$239,089.98
$1,580.17$285.10$1,295.07$238,804.88
$1,580.17$286.64$1,293.53$238,518.24
$1,580.17$288.20$1,291.97$238,230.04
$1,580.17$289.76$1,290.41$237,940.28
$1,580.17$291.33$1,288.84$237,648.95
$1,580.17$292.90$1,287.27$237,356.05
2030 total$18,962.04$3,412.56$15,549.48$237,356.05
203112 paymentsPrincipal$3,641.09Interest$15,320.95Balance$233,714.96
Amortization schedule, 2031
DateAmountPrincipalInterestBalance
$1,580.17$294.49$1,285.68$237,061.56
$1,580.17$296.09$1,284.08$236,765.47
$1,580.17$297.69$1,282.48$236,467.78
$1,580.17$299.30$1,280.87$236,168.48
$1,580.17$300.92$1,279.25$235,867.56
$1,580.17$302.55$1,277.62$235,565.01
$1,580.17$304.19$1,275.98$235,260.82
$1,580.17$305.84$1,274.33$234,954.98
$1,580.17$307.50$1,272.67$234,647.48
$1,580.17$309.16$1,271.01$234,338.32
$1,580.17$310.84$1,269.33$234,027.48
$1,580.17$312.52$1,267.65$233,714.96
2031 total$18,962.04$3,641.09$15,320.95$233,714.96
203212 paymentsPrincipal$3,884.96Interest$15,077.08Balance$229,830.00
Amortization schedule, 2032
DateAmountPrincipalInterestBalance
$1,580.17$314.21$1,265.96$233,400.75
$1,580.17$315.92$1,264.25$233,084.83
$1,580.17$317.63$1,262.54$232,767.20
$1,580.17$319.35$1,260.82$232,447.85
$1,580.17$321.08$1,259.09$232,126.77
$1,580.17$322.82$1,257.35$231,803.95
$1,580.17$324.57$1,255.60$231,479.38
$1,580.17$326.32$1,253.85$231,153.06
$1,580.17$328.09$1,252.08$230,824.97
$1,580.17$329.87$1,250.30$230,495.10
$1,580.17$331.65$1,248.52$230,163.45
$1,580.17$333.45$1,246.72$229,830.00
2032 total$18,962.04$3,884.96$15,077.08$229,830.00
203312 paymentsPrincipal$4,145.13Interest$14,816.91Balance$225,684.87
Amortization schedule, 2033
DateAmountPrincipalInterestBalance
$1,580.17$335.26$1,244.91$229,494.74
$1,580.17$337.07$1,243.10$229,157.67
$1,580.17$338.90$1,241.27$228,818.77
$1,580.17$340.73$1,239.44$228,478.04
$1,580.17$342.58$1,237.59$228,135.46
$1,580.17$344.44$1,235.73$227,791.02
$1,580.17$346.30$1,233.87$227,444.72
$1,580.17$348.18$1,231.99$227,096.54
$1,580.17$350.06$1,230.11$226,746.48
$1,580.17$351.96$1,228.21$226,394.52
$1,580.17$353.87$1,226.30$226,040.65
$1,580.17$355.78$1,224.39$225,684.87
2033 total$18,962.04$4,145.13$14,816.91$225,684.87
203412 paymentsPrincipal$4,422.74Interest$14,539.30Balance$221,262.13
Amortization schedule, 2034
DateAmountPrincipalInterestBalance
$1,580.17$357.71$1,222.46$225,327.16
$1,580.17$359.65$1,220.52$224,967.51
$1,580.17$361.60$1,218.57$224,605.91
$1,580.17$363.55$1,216.62$224,242.36
$1,580.17$365.52$1,214.65$223,876.84
$1,580.17$367.50$1,212.67$223,509.34
$1,580.17$369.49$1,210.68$223,139.85
$1,580.17$371.50$1,208.67$222,768.35
$1,580.17$373.51$1,206.66$222,394.84
$1,580.17$375.53$1,204.64$222,019.31
$1,580.17$377.57$1,202.60$221,641.74
$1,580.17$379.61$1,200.56$221,262.13
2034 total$18,962.04$4,422.74$14,539.30$221,262.13
203512 paymentsPrincipal$4,718.93Interest$14,243.11Balance$216,543.20
Amortization schedule, 2035
DateAmountPrincipalInterestBalance
$1,580.17$381.67$1,198.50$220,880.46
$1,580.17$383.73$1,196.44$220,496.73
$1,580.17$385.81$1,194.36$220,110.92
$1,580.17$387.90$1,192.27$219,723.02
$1,580.17$390.00$1,190.17$219,333.02
$1,580.17$392.12$1,188.05$218,940.90
$1,580.17$394.24$1,185.93$218,546.66
$1,580.17$396.38$1,183.79$218,150.28
$1,580.17$398.52$1,181.65$217,751.76
$1,580.17$400.68$1,179.49$217,351.08
$1,580.17$402.85$1,177.32$216,948.23
$1,580.17$405.03$1,175.14$216,543.20
2035 total$18,962.04$4,718.93$14,243.11$216,543.20
203612 paymentsPrincipal$5,034.97Interest$13,927.07Balance$211,508.23
Amortization schedule, 2036
DateAmountPrincipalInterestBalance
$1,580.17$407.23$1,172.94$216,135.97
$1,580.17$409.43$1,170.74$215,726.54
$1,580.17$411.65$1,168.52$215,314.89
$1,580.17$413.88$1,166.29$214,901.01
$1,580.17$416.12$1,164.05$214,484.89
$1,580.17$418.38$1,161.79$214,066.51
$1,580.17$420.64$1,159.53$213,645.87
$1,580.17$422.92$1,157.25$213,222.95
$1,580.17$425.21$1,154.96$212,797.74
$1,580.17$427.52$1,152.65$212,370.22
$1,580.17$429.83$1,150.34$211,940.39
$1,580.17$432.16$1,148.01$211,508.23
2036 total$18,962.04$5,034.97$13,927.07$211,508.23
203712 paymentsPrincipal$5,372.18Interest$13,589.86Balance$206,136.05
Amortization schedule, 2037
DateAmountPrincipalInterestBalance
$1,580.17$434.50$1,145.67$211,073.73
$1,580.17$436.85$1,143.32$210,636.88
$1,580.17$439.22$1,140.95$210,197.66
$1,580.17$441.60$1,138.57$209,756.06
$1,580.17$443.99$1,136.18$209,312.07
$1,580.17$446.40$1,133.77$208,865.67
$1,580.17$448.81$1,131.36$208,416.86
$1,580.17$451.25$1,128.92$207,965.61
$1,580.17$453.69$1,126.48$207,511.92
$1,580.17$456.15$1,124.02$207,055.77
$1,580.17$458.62$1,121.55$206,597.15
$1,580.17$461.10$1,119.07$206,136.05
2037 total$18,962.04$5,372.18$13,589.86$206,136.05
203812 paymentsPrincipal$5,731.96Interest$13,230.08Balance$200,404.09
Amortization schedule, 2038
DateAmountPrincipalInterestBalance
$1,580.17$463.60$1,116.57$205,672.45
$1,580.17$466.11$1,114.06$205,206.34
$1,580.17$468.64$1,111.53$204,737.70
$1,580.17$471.17$1,109.00$204,266.53
$1,580.17$473.73$1,106.44$203,792.80
$1,580.17$476.29$1,103.88$203,316.51
$1,580.17$478.87$1,101.30$202,837.64
$1,580.17$481.47$1,098.70$202,356.17
$1,580.17$484.07$1,096.10$201,872.10
$1,580.17$486.70$1,093.47$201,385.40
$1,580.17$489.33$1,090.84$200,896.07
$1,580.17$491.98$1,088.19$200,404.09
2038 total$18,962.04$5,731.96$13,230.08$200,404.09
203912 paymentsPrincipal$6,115.83Interest$12,846.21Balance$194,288.26
Amortization schedule, 2039
DateAmountPrincipalInterestBalance
$1,580.17$494.65$1,085.52$199,909.44
$1,580.17$497.33$1,082.84$199,412.11
$1,580.17$500.02$1,080.15$198,912.09
$1,580.17$502.73$1,077.44$198,409.36
$1,580.17$505.45$1,074.72$197,903.91
$1,580.17$508.19$1,071.98$197,395.72
$1,580.17$510.94$1,069.23$196,884.78
$1,580.17$513.71$1,066.46$196,371.07
$1,580.17$516.49$1,063.68$195,854.58
$1,580.17$519.29$1,060.88$195,335.29
$1,580.17$522.10$1,058.07$194,813.19
$1,580.17$524.93$1,055.24$194,288.26
2039 total$18,962.04$6,115.83$12,846.21$194,288.26
204012 paymentsPrincipal$6,525.42Interest$12,436.62Balance$187,762.84
Amortization schedule, 2040
DateAmountPrincipalInterestBalance
$1,580.17$527.78$1,052.39$193,760.48
$1,580.17$530.63$1,049.54$193,229.85
$1,580.17$533.51$1,046.66$192,696.34
$1,580.17$536.40$1,043.77$192,159.94
$1,580.17$539.30$1,040.87$191,620.64
$1,580.17$542.22$1,037.95$191,078.42
$1,580.17$545.16$1,035.01$190,533.26
$1,580.17$548.11$1,032.06$189,985.15
$1,580.17$551.08$1,029.09$189,434.07
$1,580.17$554.07$1,026.10$188,880.00
$1,580.17$557.07$1,023.10$188,322.93
$1,580.17$560.09$1,020.08$187,762.84
2040 total$18,962.04$6,525.42$12,436.62$187,762.84
204112 paymentsPrincipal$6,962.45Interest$11,999.59Balance$180,800.39
Amortization schedule, 2041
DateAmountPrincipalInterestBalance
$1,580.17$563.12$1,017.05$187,199.72
$1,580.17$566.17$1,014.00$186,633.55
$1,580.17$569.24$1,010.93$186,064.31
$1,580.17$572.32$1,007.85$185,491.99
$1,580.17$575.42$1,004.75$184,916.57
$1,580.17$578.54$1,001.63$184,338.03
$1,580.17$581.67$998.50$183,756.36
$1,580.17$584.82$995.35$183,171.54
$1,580.17$587.99$992.18$182,583.55
$1,580.17$591.18$988.99$181,992.37
$1,580.17$594.38$985.79$181,397.99
$1,580.17$597.60$982.57$180,800.39
2041 total$18,962.04$6,962.45$11,999.59$180,800.39
204212 paymentsPrincipal$7,428.73Interest$11,533.31Balance$173,371.66
Amortization schedule, 2042
DateAmountPrincipalInterestBalance
$1,580.17$600.83$979.34$180,199.56
$1,580.17$604.09$976.08$179,595.47
$1,580.17$607.36$972.81$178,988.11
$1,580.17$610.65$969.52$178,377.46
$1,580.17$613.96$966.21$177,763.50
$1,580.17$617.28$962.89$177,146.22
$1,580.17$620.63$959.54$176,525.59
$1,580.17$623.99$956.18$175,901.60
$1,580.17$627.37$952.80$175,274.23
$1,580.17$630.77$949.40$174,643.46
$1,580.17$634.18$945.99$174,009.28
$1,580.17$637.62$942.55$173,371.66
2042 total$18,962.04$7,428.73$11,533.31$173,371.66
204312 paymentsPrincipal$7,926.27Interest$11,035.77Balance$165,445.39
Amortization schedule, 2043
DateAmountPrincipalInterestBalance
$1,580.17$641.07$939.10$172,730.59
$1,580.17$644.55$935.62$172,086.04
$1,580.17$648.04$932.13$171,438.00
$1,580.17$651.55$928.62$170,786.45
$1,580.17$655.08$925.09$170,131.37
$1,580.17$658.63$921.54$169,472.74
$1,580.17$662.19$917.98$168,810.55
$1,580.17$665.78$914.39$168,144.77
$1,580.17$669.39$910.78$167,475.38
$1,580.17$673.01$907.16$166,802.37
$1,580.17$676.66$903.51$166,125.71
$1,580.17$680.32$899.85$165,445.39
2043 total$18,962.04$7,926.27$11,035.77$165,445.39
204412 paymentsPrincipal$8,457.08Interest$10,504.96Balance$156,988.31
Amortization schedule, 2044
DateAmountPrincipalInterestBalance
$1,580.17$684.01$896.16$164,761.38
$1,580.17$687.71$892.46$164,073.67
$1,580.17$691.44$888.73$163,382.23
$1,580.17$695.18$884.99$162,687.05
$1,580.17$698.95$881.22$161,988.10
$1,580.17$702.73$877.44$161,285.37
$1,580.17$706.54$873.63$160,578.83
$1,580.17$710.37$869.80$159,868.46
$1,580.17$714.22$865.95$159,154.24
$1,580.17$718.08$862.09$158,436.16
$1,580.17$721.97$858.20$157,714.19
$1,580.17$725.88$854.29$156,988.31
2044 total$18,962.04$8,457.08$10,504.96$156,988.31
204512 paymentsPrincipal$9,023.49Interest$9,938.55Balance$147,964.82
Amortization schedule, 2045
DateAmountPrincipalInterestBalance
$1,580.17$729.82$850.35$156,258.49
$1,580.17$733.77$846.40$155,524.72
$1,580.17$737.74$842.43$154,786.98
$1,580.17$741.74$838.43$154,045.24
$1,580.17$745.76$834.41$153,299.48
$1,580.17$749.80$830.37$152,549.68
$1,580.17$753.86$826.31$151,795.82
$1,580.17$757.94$822.23$151,037.88
$1,580.17$762.05$818.12$150,275.83
$1,580.17$766.18$813.99$149,509.65
$1,580.17$770.33$809.84$148,739.32
$1,580.17$774.50$805.67$147,964.82
2045 total$18,962.04$9,023.49$9,938.55$147,964.82
204612 paymentsPrincipal$9,627.79Interest$9,334.25Balance$138,337.03
Amortization schedule, 2046
DateAmountPrincipalInterestBalance
$1,580.17$778.69$801.48$147,186.13
$1,580.17$782.91$797.26$146,403.22
$1,580.17$787.15$793.02$145,616.07
$1,580.17$791.42$788.75$144,824.65
$1,580.17$795.70$784.47$144,028.95
$1,580.17$800.01$780.16$143,228.94
$1,580.17$804.35$775.82$142,424.59
$1,580.17$808.70$771.47$141,615.89
$1,580.17$813.08$767.09$140,802.81
$1,580.17$817.49$762.68$139,985.32
$1,580.17$821.92$758.25$139,163.40
$1,580.17$826.37$753.80$138,337.03
2046 total$18,962.04$9,627.79$9,334.25$138,337.03
204712 paymentsPrincipal$10,272.58Interest$8,689.46Balance$128,064.45
Amortization schedule, 2047
DateAmountPrincipalInterestBalance
$1,580.17$830.84$749.33$137,506.19
$1,580.17$835.34$744.83$136,670.85
$1,580.17$839.87$740.30$135,830.98
$1,580.17$844.42$735.75$134,986.56
$1,580.17$848.99$731.18$134,137.57
$1,580.17$853.59$726.58$133,283.98
$1,580.17$858.22$721.95$132,425.76
$1,580.17$862.86$717.31$131,562.90
$1,580.17$867.54$712.63$130,695.36
$1,580.17$872.24$707.93$129,823.12
$1,580.17$876.96$703.21$128,946.16
$1,580.17$881.71$698.46$128,064.45
2047 total$18,962.04$10,272.58$8,689.46$128,064.45
204812 paymentsPrincipal$10,960.56Interest$8,001.48Balance$117,103.89
Amortization schedule, 2048
DateAmountPrincipalInterestBalance
$1,580.17$886.49$693.68$127,177.96
$1,580.17$891.29$688.88$126,286.67
$1,580.17$896.12$684.05$125,390.55
$1,580.17$900.97$679.20$124,489.58
$1,580.17$905.85$674.32$123,583.73
$1,580.17$910.76$669.41$122,672.97
$1,580.17$915.69$664.48$121,757.28
$1,580.17$920.65$659.52$120,836.63
$1,580.17$925.64$654.53$119,910.99
$1,580.17$930.65$649.52$118,980.34
$1,580.17$935.69$644.48$118,044.65
$1,580.17$940.76$639.41$117,103.89
2048 total$18,962.04$10,960.56$8,001.48$117,103.89
204912 paymentsPrincipal$11,694.62Interest$7,267.42Balance$105,409.27
Amortization schedule, 2049
DateAmountPrincipalInterestBalance
$1,580.17$945.86$634.31$116,158.03
$1,580.17$950.98$629.19$115,207.05
$1,580.17$956.13$624.04$114,250.92
$1,580.17$961.31$618.86$113,289.61
$1,580.17$966.52$613.65$112,323.09
$1,580.17$971.75$608.42$111,351.34
$1,580.17$977.02$603.15$110,374.32
$1,580.17$982.31$597.86$109,392.01
$1,580.17$987.63$592.54$108,404.38
$1,580.17$992.98$587.19$107,411.40
$1,580.17$998.36$581.81$106,413.04
$1,580.17$1,003.77$576.40$105,409.27
2049 total$18,962.04$11,694.62$7,267.42$105,409.27
205012 paymentsPrincipal$12,477.82Interest$6,484.22Balance$92,931.45
Amortization schedule, 2050
DateAmountPrincipalInterestBalance
$1,580.17$1,009.20$570.97$104,400.07
$1,580.17$1,014.67$565.50$103,385.40
$1,580.17$1,020.17$560.00$102,365.23
$1,580.17$1,025.69$554.48$101,339.54
$1,580.17$1,031.25$548.92$100,308.29
$1,580.17$1,036.83$543.34$99,271.46
$1,580.17$1,042.45$537.72$98,229.01
$1,580.17$1,048.10$532.07$97,180.91
$1,580.17$1,053.77$526.40$96,127.14
$1,580.17$1,059.48$520.69$95,067.66
$1,580.17$1,065.22$514.95$94,002.44
$1,580.17$1,070.99$509.18$92,931.45
2050 total$18,962.04$12,477.82$6,484.22$92,931.45
205112 paymentsPrincipal$13,313.48Interest$5,648.56Balance$79,617.97
Amortization schedule, 2051
DateAmountPrincipalInterestBalance
$1,580.17$1,076.79$503.38$91,854.66
$1,580.17$1,082.62$497.55$90,772.04
$1,580.17$1,088.49$491.68$89,683.55
$1,580.17$1,094.38$485.79$88,589.17
$1,580.17$1,100.31$479.86$87,488.86
$1,580.17$1,106.27$473.90$86,382.59
$1,580.17$1,112.26$467.91$85,270.33
$1,580.17$1,118.29$461.88$84,152.04
$1,580.17$1,124.35$455.82$83,027.69
$1,580.17$1,130.44$449.73$81,897.25
$1,580.17$1,136.56$443.61$80,760.69
$1,580.17$1,142.72$437.45$79,617.97
2051 total$18,962.04$13,313.48$5,648.56$79,617.97
205212 paymentsPrincipal$14,205.12Interest$4,756.92Balance$65,412.85
Amortization schedule, 2052
DateAmountPrincipalInterestBalance
$1,580.17$1,148.91$431.26$78,469.06
$1,580.17$1,155.13$425.04$77,313.93
$1,580.17$1,161.39$418.78$76,152.54
$1,580.17$1,167.68$412.49$74,984.86
$1,580.17$1,174.00$406.17$73,810.86
$1,580.17$1,180.36$399.81$72,630.50
$1,580.17$1,186.75$393.42$71,443.75
$1,580.17$1,193.18$386.99$70,250.57
$1,580.17$1,199.65$380.52$69,050.92
$1,580.17$1,206.14$374.03$67,844.78
$1,580.17$1,212.68$367.49$66,632.10
$1,580.17$1,219.25$360.92$65,412.85
2052 total$18,962.04$14,205.12$4,756.92$65,412.85
205312 paymentsPrincipal$15,156.45Interest$3,805.59Balance$50,256.40
Amortization schedule, 2053
DateAmountPrincipalInterestBalance
$1,580.17$1,225.85$354.32$64,187.00
$1,580.17$1,232.49$347.68$62,954.51
$1,580.17$1,239.17$341.00$61,715.34
$1,580.17$1,245.88$334.29$60,469.46
$1,580.17$1,252.63$327.54$59,216.83
$1,580.17$1,259.41$320.76$57,957.42
$1,580.17$1,266.23$313.94$56,691.19
$1,580.17$1,273.09$307.08$55,418.10
$1,580.17$1,279.99$300.18$54,138.11
$1,580.17$1,286.92$293.25$52,851.19
$1,580.17$1,293.89$286.28$51,557.30
$1,580.17$1,300.90$279.27$50,256.40
2053 total$18,962.04$15,156.45$3,805.59$50,256.40
205412 paymentsPrincipal$16,171.53Interest$2,790.51Balance$34,084.87
Amortization schedule, 2054
DateAmountPrincipalInterestBalance
$1,580.17$1,307.95$272.22$48,948.45
$1,580.17$1,315.03$265.14$47,633.42
$1,580.17$1,322.16$258.01$46,311.26
$1,580.17$1,329.32$250.85$44,981.94
$1,580.17$1,336.52$243.65$43,645.42
$1,580.17$1,343.76$236.41$42,301.66
$1,580.17$1,351.04$229.13$40,950.62
$1,580.17$1,358.35$221.82$39,592.27
$1,580.17$1,365.71$214.46$38,226.56
$1,580.17$1,373.11$207.06$36,853.45
$1,580.17$1,380.55$199.62$35,472.90
$1,580.17$1,388.03$192.14$34,084.87
2054 total$18,962.04$16,171.53$2,790.51$34,084.87
205512 paymentsPrincipal$17,254.54Interest$1,707.50Balance$16,830.33
Amortization schedule, 2055
DateAmountPrincipalInterestBalance
$1,580.17$1,395.54$184.63$32,689.33
$1,580.17$1,403.10$177.07$31,286.23
$1,580.17$1,410.70$169.47$29,875.53
$1,580.17$1,418.34$161.83$28,457.19
$1,580.17$1,426.03$154.14$27,031.16
$1,580.17$1,433.75$146.42$25,597.41
$1,580.17$1,441.52$138.65$24,155.89
$1,580.17$1,449.33$130.84$22,706.56
$1,580.17$1,457.18$122.99$21,249.38
$1,580.17$1,465.07$115.10$19,784.31
$1,580.17$1,473.00$107.17$18,311.31
$1,580.17$1,480.98$99.19$16,830.33
2055 total$18,962.04$17,254.54$1,707.50$16,830.33
205611 paymentsPrincipal$16,830.33Interest$551.92Balance$0.00
Amortization schedule, 2056
DateAmountPrincipalInterestBalance
$1,580.17$1,489.01$91.16$15,341.32
$1,580.17$1,497.07$83.10$13,844.25
$1,580.17$1,505.18$74.99$12,339.07
$1,580.17$1,513.33$66.84$10,825.74
$1,580.17$1,521.53$58.64$9,304.21
$1,580.17$1,529.77$50.40$7,774.44
$1,580.17$1,538.06$42.11$6,236.38
$1,580.17$1,546.39$33.78$4,689.99
$1,580.17$1,554.77$25.40$3,135.22
$1,580.17$1,563.19$16.98$1,572.03
$1,580.55$1,572.03$8.52$0.00
2056 total$17,382.25$16,830.33$551.92$0.00

360 payments in allPrincipal $250,000.00 + interest $318,861.58 = $568,861.58

Monthly payment
438,59 €
Total interest
3.052,24 €
Total paid
21.052,24 €
Paid off
after 48 payments
Year 112 paymentsPrincipal3.983,26 €Interest1.279,82 €Balance14.016,74 €
Car loan schedule, Year 1
PaymentAmountPrincipalInterestBalance
#1438,59 €320,09 €118,50 €17.679,91 €
#2438,59 €322,20 €116,39 €17.357,71 €
#3438,59 €324,32 €114,27 €17.033,39 €
#4438,59 €326,45 €112,14 €16.706,94 €
#5438,59 €328,60 €109,99 €16.378,34 €
#6438,59 €330,77 €107,82 €16.047,57 €
#7438,59 €332,94 €105,65 €15.714,63 €
#8438,59 €335,14 €103,45 €15.379,49 €
#9438,59 €337,34 €101,25 €15.042,15 €
#10438,59 €339,56 €99,03 €14.702,59 €
#11438,59 €341,80 €96,79 €14.360,79 €
#12438,59 €344,05 €94,54 €14.016,74 €
Year 1 total5.263,08 €3.983,26 €1.279,82 €14.016,74 €
Year 212 paymentsPrincipal4.309,57 €Interest953,51 €Balance9.707,17 €
Car loan schedule, Year 2
PaymentAmountPrincipalInterestBalance
#13438,59 €346,31 €92,28 €13.670,43 €
#14438,59 €348,59 €90,00 €13.321,84 €
#15438,59 €350,89 €87,70 €12.970,95 €
#16438,59 €353,20 €85,39 €12.617,75 €
#17438,59 €355,52 €83,07 €12.262,23 €
#18438,59 €357,86 €80,73 €11.904,37 €
#19438,59 €360,22 €78,37 €11.544,15 €
#20438,59 €362,59 €76,00 €11.181,56 €
#21438,59 €364,98 €73,61 €10.816,58 €
#22438,59 €367,38 €71,21 €10.449,20 €
#23438,59 €369,80 €68,79 €10.079,40 €
#24438,59 €372,23 €66,36 €9.707,17 €
Year 2 total5.263,08 €4.309,57 €953,51 €9.707,17 €
Year 312 paymentsPrincipal4.662,63 €Interest600,45 €Balance5.044,54 €
Car loan schedule, Year 3
PaymentAmountPrincipalInterestBalance
#25438,59 €374,68 €63,91 €9.332,49 €
#26438,59 €377,15 €61,44 €8.955,34 €
#27438,59 €379,63 €58,96 €8.575,71 €
#28438,59 €382,13 €56,46 €8.193,58 €
#29438,59 €384,65 €53,94 €7.808,93 €
#30438,59 €387,18 €51,41 €7.421,75 €
#31438,59 €389,73 €48,86 €7.032,02 €
#32438,59 €392,30 €46,29 €6.639,72 €
#33438,59 €394,88 €43,71 €6.244,84 €
#34438,59 €397,48 €41,11 €5.847,36 €
#35438,59 €400,09 €38,50 €5.447,27 €
#36438,59 €402,73 €35,86 €5.044,54 €
Year 3 total5.263,08 €4.662,63 €600,45 €5.044,54 €
Year 412 paymentsPrincipal5.044,54 €Interest218,46 €Balance0,00 €
Car loan schedule, Year 4
PaymentAmountPrincipalInterestBalance
#37438,59 €405,38 €33,21 €4.639,16 €
#38438,59 €408,05 €30,54 €4.231,11 €
#39438,59 €410,74 €27,85 €3.820,37 €
#40438,59 €413,44 €25,15 €3.406,93 €
#41438,59 €416,16 €22,43 €2.990,77 €
#42438,59 €418,90 €19,69 €2.571,87 €
#43438,59 €421,66 €16,93 €2.150,21 €
#44438,59 €424,43 €14,16 €1.725,78 €
#45438,59 €427,23 €11,36 €1.298,55 €
#46438,59 €430,04 €8,55 €868,51 €
#47438,59 €432,87 €5,72 €435,64 €
#48438,51 €435,64 €2,87 €0,00 €
Year 4 total5.263,00 €5.044,54 €218,46 €0,00 €

48 payments in allPrincipal 18.000,00 € + interest 3.052,24 € = 21.052,24 €

Get it

It needs theme.qwe, as every component does; or take the whole kit, quillo-ui.qwe. Each component brings its own styles to the pages that show it.

$ curl -O https://quillolang.org/components/ui/theme.qwe$ curl -O https://quillolang.org/components/ui/amortization_table.qwe
main.qwe
import ui/theme.qwe use theme_cssuse ui/amortization_table.qweroute GET / = <html><head><style>{theme_css}</style></head><body class="ui-root">...</body></html>

Example

The code of the preview above.

demos/amortization_table.qwe
view AmortizationTableDemo() {    <div.demo-stack>        <AmortizationTable id="amortization-table-demo-home" amount={250000} rate={6.5} term={30} start="2026-12-01" open={2}/>        <AmortizationTable id="amortization-table-demo-car" amount={18000} rate={7.9} term={48} term_unit="months" currency="EUR" locale="de-DE"                           open={0} label="Car loan schedule"/>    </div>}

Source

ui/amortization_table.qwe
// AmortizationTable: a loan's payment schedule, worked out from its amount, rate// and term: each month's payment, how much of it is principal and how much// interest, and what is still owed after it, grouped by year, each year a// <details> whose summary has the year's totals. A line above gives the monthly// payment, the total interest, the total paid and when it is paid off. In// decimals: each month's interest is rounded half up to the cent on what is still// owed, and the last payment is what is left, so the balance ends at zero.////   <AmortizationTable amount={250000} rate={6.5} term={30} start="2026-12-01"/>//   <AmortizationTable amount={18000} rate={7.9} term={48} term_unit="months" currency="EUR" locale="de-DE" open={4}/>//// amount: what is borrowed (a number or a decimal). rate: the yearly interest rate,// in percent (6.5). term: how long, in term_unit: "years" (default) or "months".// start: the first payment's date (ISO): rows get dates and years are calendar// years; without it they are "Year 1", "Year 2", ... counted from the first payment.// open: how many years are open to start with (1; 0 for none). currency: ISO code// ("USD"); locale: how amounts and dates are written (the program's; en-US).// summary: false leaves out the line of totals above. label: what screen readers// call it ("Amortization schedule"). id, class.//// amortization_table_rows(amount, rate, months) gives the schedule as a list of// { n, payment, principal, interest, balance } (decimals), for your own use.import ui/theme.qwe use ui_clslet amortization_table_css = css`.ui-amortization { display: grid; gap: 14px; min-width: 0; color: var(--ui-fg); font: 14px/1.45 var(--ui-font); }.ui-amortization-facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 1px; margin: 0; overflow: hidden;  border: 1px solid var(--ui-border); border-radius: var(--ui-radius); background: var(--ui-border); }.ui-amortization-facts div { padding: 12px 14px; background: var(--ui-surface); }.ui-amortization-facts dt { color: var(--ui-muted); font-size: 12px; font-weight: 500; }.ui-amortization-facts dd { margin: 2px 0 0; font-size: 18px; font-weight: 650; font-variant-numeric: tabular-nums; }.ui-amortization-years { display: grid; overflow: hidden; border: 1px solid var(--ui-border); border-radius: var(--ui-radius); background: var(--ui-surface); }.ui-amortization-year + .ui-amortization-year { border-top: 1px solid var(--ui-border); }.ui-amortization-year > summary { display: grid; grid-template-columns: 18px minmax(90px, 1.2fr) repeat(3, minmax(0, 1fr)); align-items: baseline; gap: 4px 12px;  padding: 10px 14px; cursor: pointer; list-style: none; font-variant-numeric: tabular-nums; }.ui-amortization-year > summary::-webkit-details-marker { display: none; }.ui-amortization-year > summary::before { content: ""; width: 7px; height: 7px; margin-left: 2px; border-right: 2px solid var(--ui-muted); border-bottom: 2px solid var(--ui-muted);  transform: translateY(-2px) rotate(-45deg); transition: transform .15s; }.ui-amortization-year[open] > summary::before { transform: translateY(-4px) rotate(45deg); }.ui-amortization-year > summary:hover { background: var(--ui-subtle); }.ui-amortization-year > summary:focus-visible { outline: none; box-shadow: inset var(--ui-focus); }.ui-amortization-label b { display: block; font-weight: 650; }.ui-amortization-label small, .ui-amortization-sum small { display: block; color: var(--ui-muted); font-size: 12px; }.ui-amortization-sum { text-align: right; font-weight: 600; }.ui-amortization-scroll { overflow-x: auto; border-top: 1px solid var(--ui-border); }.ui-amortization table { width: 100%; border-collapse: collapse; font-size: 13px; font-variant-numeric: tabular-nums; }.ui-amortization th, .ui-amortization td { padding: 6px 14px; text-align: right; white-space: nowrap; }.ui-amortization thead th { color: var(--ui-muted); font-size: 11px; font-weight: 600; letter-spacing: .05em; text-transform: uppercase; background: var(--ui-subtle); }.ui-amortization th:first-child, .ui-amortization td:first-child { text-align: left; }.ui-amortization tbody tr:nth-child(even) { background: color-mix(in srgb, var(--ui-subtle) 55%, transparent); }.ui-amortization tbody th { font-weight: 500; }.ui-amortization tfoot td, .ui-amortization tfoot th { border-top: 1px solid var(--ui-border); font-weight: 650; }.ui-amortization-total { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 6px 18px; margin: 0; padding: 0 4px; color: var(--ui-muted); font-size: 13px; }.ui-amortization-total b { color: var(--ui-fg); font-variant-numeric: tabular-nums; }@media (max-width: 560px) {  .ui-amortization-year > summary { grid-template-columns: 18px 1fr 1fr; }  .ui-amortization-year > summary .ui-amortization-hide { display: none; }}@media (prefers-reduced-motion: reduce) { .ui-amortization-year > summary::before { transition: none; } }`// x to the power n, for a whole n, exactly (pow takes no decimals).fn amortization_table_pow(x: dec, n: int) -> dec {    let out = 1m    let i = 0    while i < n {        out = out * x        i += 1    }    out}// The monthly payment, rounded half up to the cent (the annuity formula).fn amortization_table_payment(amount: dec, rate: dec, months: int) -> dec {    if months <= 0 { return amount }    if rate <= 0 { return round(amount / months, 2, "ceiling") }    let r = rate / 1200    let f = amortization_table_pow(1m + r, months)    round(amount * r * f / (f - 1m), 2, "half_up")}// The schedule: a row per month, { n, payment, principal, interest, balance }.fn amortization_table_rows(amount: dec, rate: dec, months: int) -> list {    let pay = amortization_table_payment(amount, rate, months)    let r = rate / 1200    let owed = amount    let rows = []    let i = 1    while i <= months && owed > 0 {        let interest = round(owed * r, 2, "half_up")        let principal = i == months || pay - interest > owed ? owed : pay - interest        owed = owed - principal        rows = rows | push({ n: i, payment: principal + interest, principal, interest, balance: owed })        i += 1    }    rows}fn amortization_table_money(x: dec, currency: str, locale: str?) -> str {    let m = money.of(x, currency, "half_up")    if is_err(m) { return str(x) }    locale != null ? money.format(m, locale) : money.format(m)}fn amortization_table_date(d: str, locale: str?, short: bool) -> str =    short ? date.format(d, { locale: locale ?? "en-US", pattern: "MMM YYYY" }) : date.format(d, { locale: locale ?? "en-US", style: "medium" })view AmortizationTable(amount, rate, term: int = 30, term_unit: str = "years", start: str? = null, open: int = 1,                       currency: str = "USD", locale: str? = null, summary: bool = true, label: str = "Amortization schedule",                       id: str? = null, class: str? = null) {    style global amortization_table_css    let months = term_unit == "months" ? term : term * 12    let rows = amortization_table_rows(dec(amount), dec(rate), months)    let fmt = (x: dec) => amortization_table_money(x, currency, locale)    // Each row's year: the calendar year of its date, or its year of the loan.    let dated = for row in rows {        let d = start != null ? date.add_months(start, row.n - 1) : null        merge(row, { date: d, year: d != null ? slice(d, 0, 4) : `Year ${floor((row.n - 1) / 12) + 1}` })    }    let years = unique(for row in dated => row.year)    let total_interest = dec(sum(for row in rows => row.interest))    let total_paid = dec(sum(for row in rows => row.payment))    let last = len(dated) > 0 ? dated[len(dated) - 1] : null    <section class={ui_cls(["ui-amortization", class])} id={id} aria-label={label}>        {summary && <dl.ui-amortization-facts>            <div><dt>Monthly payment</dt><dd data-key="payment">{len(rows) > 0 ? fmt(rows[0].payment) : fmt(0m)}</dd></div>            <div><dt>Total interest</dt><dd data-key="interest">{fmt(total_interest)}</dd></div>            <div><dt>Total paid</dt><dd data-key="total">{fmt(total_paid)}</dd></div>            <div><dt>Paid off</dt><dd data-key="payoff">{last == null ? "–" : (last.date != null ? amortization_table_date(last.date, locale, true) : `after ${last.n} payments`)}</dd></div>        </dl>}        <div.ui-amortization-years>            {for [i, y] in enumerate(years) {                let these = filter(dated, (row) => row.year == y)                let principal = sum(for row in these => row.principal)                let interest = sum(for row in these => row.interest)                let end = these[len(these) - 1].balance                <details.ui-amortization-year key={y} open={i < open} data-year={y}>                    <summary>                        <span.ui-amortization-label><b>{y}</b><small>{len(these)} {len(these) == 1 ? "payment" : "payments"}</small></span>                        <span.ui-amortization-sum data-key="principal"><small>Principal</small>{fmt(principal)}</span>                        <span class="ui-amortization-sum ui-amortization-hide" data-key="interest"><small>Interest</small>{fmt(interest)}</span>                        <span.ui-amortization-sum data-key="balance"><small>Balance</small>{fmt(end)}</span>                    </summary>                    <div.ui-amortization-scroll>                        <table>                            <caption class="ui-sr">{label}, {y}</caption>                            <thead><tr>                                <th scope="col">{start != null ? "Date" : "Payment"}</th>                                <th scope="col">Amount</th>                                <th scope="col">Principal</th>                                <th scope="col">Interest</th>                                <th scope="col">Balance</th>                            </tr></thead>                            <tbody>                                {for row in these => <tr key={row.n} data-n={row.n}>                                    <th scope="row">{row.date != null ? <time datetime={row.date}>{amortization_table_date(row.date, locale, false)}</time> : `#${row.n}`}</th>                                    <td>{fmt(row.payment)}</td>                                    <td>{fmt(row.principal)}</td>                                    <td>{fmt(row.interest)}</td>                                    <td>{fmt(row.balance)}</td>                                </tr>}                            </tbody>                            <tfoot><tr>                                <th scope="row">{y} total</th>                                <td>{fmt(principal + interest)}</td>                                <td>{fmt(principal)}</td>                                <td>{fmt(interest)}</td>                                <td>{fmt(end)}</td>                            </tr></tfoot>                        </table>                    </div>                </details>            }}        </div>        <p.ui-amortization-total>            <span>{len(rows)} payments in all</span>            <span>Principal <b>{fmt(dec(amount))}</b> + interest <b>{fmt(total_interest)}</b> = <b>{fmt(total_paid)}</b></span>        </p>    </section>}
Thread
77Useful? Like it, or add to its thread below.

Thread 0 posts

On AmortizationTable: questions, tips, corrections, and code that uses it.

No posts yet. The first one opens the thread.