Debt Payoff Tracker
Made for people clearing cards and loans.
A workbook for clearing debts: what you owe on each one, every payment you make, and a summary showing the total left, the interest it is costing you and which debt to attack first. The summary carries a chart that redraws itself as you type.
- Tabs
- 3
- Columns
- 23
- Fill themselves in
- 28
£7one payment, yours to keep
- Opens in Excel, Google Sheets and Numbers
- Delivered straight away
- No macros, nothing to install
- Change it free before you buy
Payment is handled by Stripe. Your card details go to them and never to us. Sales are final, which is why every tab, column and calculation is shown on this page first.
Everything inside, before you pay
This is the whole design: every tab, every column and how each calculated one is worked out. White cells are yours to fill in; the shaded ones work themselves out and are locked so a formula cannot be overwritten by accident. There is room for 640 rows.
Debts
| Column | Type | Worked out as |
|---|---|---|
| Debt Name | text | |
| Lender | text | |
| Debt Type | choice (list) | |
| Opening Balance | currency | |
| Interest Rate | percent | |
| Minimum Payment | currency | |
| Paid To Date | currency | IF(ISBLANK([debt_name]), "", SUMIF([Payments!debt], [debt_name], [Payments!amount])) |
| Interest Paid | currency | IF(ISBLANK([debt_name]), "", SUMIF([Payments!debt], [debt_name], [Payments!interest_portion])) |
| Balance Now | currency | IF(ISBLANK([debt_name]), "", ROUND(MAX([opening_balance] - ([paid_to_date] - [interest_paid]), 0), 2)) |
| Interest Per Month | currency | IF(ISBLANK([debt_name]), "", ROUND([current_balance] * [interest_rate] / 12, 2)) |
| Percent Cleared | percent | IF(ISBLANK([debt_name]), "", IFERROR(([opening_balance] - [current_balance]) / [opening_balance], 0)) |
| Months To Clear | number | IF(ISBLANK([debt_name]), "", IF([current_balance] <= 0, 0, IFERROR(ROUNDUP([current_balance] / MAX([min_payment] - [monthly_interest], 0), 0), ""))) |
| Rate While Open | percent | IF(ISBLANK([debt_name]), "", IF([current_balance] > 0, [interest_rate], "")) |
| Balance While Open | currency | IF(ISBLANK([debt_name]), "", IF([current_balance] > 0, [current_balance], "")) |
| Notes | text |
Payments
| Column | Type | Worked out as |
|---|---|---|
| Date Paid | date | |
| Debt | choice (from Debts › debt_name) | |
| Amount Paid | currency | |
| Interest Part | currency | |
| Off The Balance | currency | IF(ISBLANK([amount]), "", ROUND([amount] - IF(ISBLANK([interest_portion]), 0, [interest_portion]), 2)) |
| Payment Type | choice (list) | |
| Method | choice (list) | |
| Note | text |
Summary
| Measure | Worked out as |
|---|---|
| Total Still Owed | SUM([Debts!current_balance]) |
| Total You Started With | SUM([Debts!opening_balance]) |
| Knocked Off The Balances | SUM([Debts!opening_balance]) - SUM([Debts!current_balance]) |
| Percent Of The Debt Cleared | IFERROR((SUM([Debts!opening_balance]) - SUM([Debts!current_balance])) / SUM([Debts!opening_balance]), 0) |
| Total Paid In So Far | SUM([Payments!amount]) |
| Interest Paid So Far | SUM([Payments!interest_portion]) |
| Interest Building Up Each Month | SUM([Debts!monthly_interest]) |
| Interest As Part Of Everything Paid | IFERROR(SUM([Payments!interest_portion]) / SUM([Payments!amount]), 0) |
| Minimum Payments Due Each Month | SUM([Debts!min_payment]) |
| Paid This Month | IFERROR(SUMIFS([Payments!amount], [Payments!payment_date], ">=" & (EOMONTH(TODAY(), -1) + 1), [Payments!payment_date], "<=" & EOMONTH(TODAY(), 0)), 0) |
| Paid This Year | IFERROR(SUMIFS([Payments!amount], [Payments!payment_date], ">=" & DATE(YEAR(TODAY()), 1, 1), [Payments!payment_date], "<=" & TODAY()), 0) |
| Debts Still Open | COUNTIF([Debts!current_balance], ">0") |
| Debts Cleared | COUNTA([Debts!debt_name]) - COUNTIF([Debts!current_balance], ">0") |
| Attack This Debt First | IFERROR(IF(MAX([Debts!active_rate]) <= 0, "Nothing outstanding", INDEX([Debts!debt_name], MATCH(MAX([Debts!active_rate]), [Debts!active_rate], 0))), "Add your debts to begin") |
| Its Interest Rate | IFERROR(MAX([Debts!active_rate]), 0) |
| Quickest Win To Close | IFERROR(IF(COUNT([Debts!active_balance]) = 0, "Nothing outstanding", INDEX([Debts!debt_name], MATCH(MIN([Debts!active_balance]), [Debts!active_balance], 0))), "Add your debts to begin") |
| Balance On That One | IFERROR(MIN([Debts!active_balance]), 0) |
| Months Left At Minimum Payments | IFERROR(MAX([Debts!months_to_clear]), 0) |
| Debt Free Around | IFERROR(EDATE(TODAY(), MAX([Debts!months_to_clear])), TODAY()) |






