Proper Spreadsheets

Templates › Money

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.

Of the 23 columns, you fill in 14 and the other 9 work themselves out, and all 19 figures on the summary do too. There is room for 640 rows of your own.

£4.99one 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.

Already have a spreadsheet of your own? Check it for mistakes, free.

The workbook's summary and the table behind it
A row typed into the real file. Every figure that changes is the spreadsheet's own arithmetic. What the film shows, in order:
  1. A new row is typed into the Debts tab, one cell at a time, in the white cells a person fills in.
  2. The shaded cells in that row fill themselves in.
  3. The figures on the Summary tab change to include the new row.
  4. The chart, Opening Balance By Debt Type, redraws with it.
The chart, drawn from the totals in the table beside it. See it full size
Where you type, and the shaded columns that work themselves out. See it full size

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. Open any tab to see its columns.

Debts

15 columns

One row for each debt you are clearing. Fill in the opening balance, the rate and the minimum payment, and the rest keeps itself up to date from the Payments tab. Ready for 40 rows, every one with its formulas in place.

ColumnWhat goes in itWorked out as
Debt NameA short name you will recognise. This is the name you pick when you record a payment.Type any text.
LenderType any text.
Debt TypePick one: Credit Card, Store Card, Overdraft, Personal Loan, Car Finance, Student Loan, Family Loan or Other.
Opening BalanceType an amount in £.
Interest RateType a percentage, like 20%.
Minimum PaymentType an amount in £.
Paid To DateFills itself in.

The total of Amount Paid on Payments where Debt matches this row's Debt Name.

The formulaIF(ISBLANK([debt_name]), "", SUMIF([Payments!debt], [debt_name], [Payments!amount]))
Interest PaidFills itself in.

The total of Interest Part on Payments where Debt matches this row's Debt Name.

The formulaIF(ISBLANK([debt_name]), "", SUMIF([Payments!debt], [debt_name], [Payments!interest_portion]))
Balance NowFills itself in.

Worked out from this row's Debt Name, Opening Balance, Paid To Date and Interest Paid.

The formulaIF(ISBLANK([debt_name]), "", ROUND(MAX([opening_balance] - ([paid_to_date] - [interest_paid]), 0), 2))
Interest Per MonthFills itself in.

Worked out from this row's Debt Name, Balance Now and Interest Rate.

The formulaIF(ISBLANK([debt_name]), "", ROUND([current_balance] * [interest_rate] / 12, 2))
Percent ClearedFills itself in.

Worked out from this row's Debt Name, Opening Balance and Balance Now.

The formulaIF(ISBLANK([debt_name]), "", IFERROR(([opening_balance] - [current_balance]) / [opening_balance], 0))
Months To ClearFills itself in.

Worked out from this row's Debt Name, Balance Now, Minimum Payment and Interest Per Month.

The formulaIF(ISBLANK([debt_name]), "", IF([current_balance] <= 0, 0, IFERROR(ROUNDUP([current_balance] / MAX([min_payment] - [monthly_interest], 0), 0), "")))
Rate While OpenShows the rate only while a balance remains. The summary uses it to pick the most expensive debt.Fills itself in.

Worked out from this row's Debt Name, Balance Now and Interest Rate.

The formulaIF(ISBLANK([debt_name]), "", IF([current_balance] > 0, [interest_rate], ""))
Balance While OpenShows the balance only while a debt is still open. The summary uses it to find your quickest win.Fills itself in.

Worked out from this row's Debt Name and Balance Now.

The formulaIF(ISBLANK([debt_name]), "", IF([current_balance] > 0, [current_balance], ""))
NotesType any text.

Payments

8 columns

One row for every payment you make. Pick the debt from the list, and put in the interest part from your statement when you have it. Ready for 600 rows, every one with its formulas in place.

ColumnWhat goes in itWorked out as
Date PaidType a date.
DebtPick one of the Debt Name entries on Debts.
Amount PaidType an amount in £.
Interest PartThe interest charged on that statement. Leave it blank if you do not know it.Type an amount in £.
Off The BalanceFills itself in.

Worked out from this row's Amount Paid and Interest Part.

The formulaIF(ISBLANK([amount]), "", ROUND([amount] - IF(ISBLANK([interest_portion]), 0, [interest_portion]), 2))
Payment TypePick one: Minimum, Extra, Lump Sum or Final Payment.
MethodPick one: Direct Debit, Standing Order, Bank Transfer, Card or Cash.
NoteType any text.

Summary

19 figures

Where you stand today: what is left, what the interest is costing you, and the debt to put every spare pound against.

FigureWorked out as
Total Still Owed

The total of Balance Now on Debts.

The formulaSUM([Debts!current_balance])
Total You Started With

The total of Opening Balance on Debts.

The formulaSUM([Debts!opening_balance])
Knocked Off The BalancesThe opening balances less what is left, so the part of your payments that actually reduced the debt.

Worked out from Opening Balance and Balance Now on Debts.

The formulaSUM([Debts!opening_balance]) - SUM([Debts!current_balance])
Percent Of The Debt Cleared

Worked out from Opening Balance and Balance Now on Debts.

The formulaIFERROR((SUM([Debts!opening_balance]) - SUM([Debts!current_balance])) / SUM([Debts!opening_balance]), 0)
Total Paid In So Far

The total of Amount Paid on Payments.

The formulaSUM([Payments!amount])
Interest Paid So Far

The total of Interest Part on Payments.

The formulaSUM([Payments!interest_portion])
Interest Building Up Each MonthWhat today's balances cost you in interest over one month if you paid nothing.

The total of Interest Per Month on Debts.

The formulaSUM([Debts!monthly_interest])
Interest As Part Of Everything Paid

Worked out from Interest Part and Amount Paid on Payments.

The formulaIFERROR(SUM([Payments!interest_portion]) / SUM([Payments!amount]), 0)
Minimum Payments Due Each Month

The total of Minimum Payment on Debts.

The formulaSUM([Debts!min_payment])
Paid This Month

Worked out from Amount Paid and Date Paid on Payments.

The formulaIFERROR(SUMIFS([Payments!amount], [Payments!payment_date], ">=" & (EOMONTH(TODAY(), -1) + 1), [Payments!payment_date], "<=" & EOMONTH(TODAY(), 0)), 0)
Paid This Year

Worked out from Amount Paid and Date Paid on Payments.

The formulaIFERROR(SUMIFS([Payments!amount], [Payments!payment_date], ">=" & DATE(YEAR(TODAY()), 1, 1), [Payments!payment_date], "<=" & TODAY()), 0)
Debts Still Open

The number of rows on Debts where Balance Now is above 0.

The formulaCOUNTIF([Debts!current_balance], ">0")
Debts Cleared

Worked out from Debt Name and Balance Now on Debts.

The formulaCOUNTA([Debts!debt_name]) - COUNTIF([Debts!current_balance], ">0")
Attack This Debt FirstThe open debt with the highest rate. Every spare pound does the most good here.

Worked out from Rate While Open and Debt Name on Debts.

The formulaIFERROR(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

The largest Rate While Open on Debts.

The formulaIFERROR(MAX([Debts!active_rate]), 0)
Quickest Win To CloseThe smallest balance left, if you would rather clear a whole debt for the morale.

Worked out from Balance While Open and Debt Name on Debts.

The formulaIFERROR(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

The smallest Balance While Open on Debts.

The formulaIFERROR(MIN([Debts!active_balance]), 0)
Months Left At Minimum PaymentsThe longest of your debts, paying only the minimum. Paying extra shortens it.

The largest Months To Clear on Debts.

The formulaIFERROR(MAX([Debts!months_to_clear]), 0)
Debt Free Around

Worked out from Months To Clear on Debts.

The formulaIFERROR(EDATE(TODAY(), MAX([Debts!months_to_clear])), TODAY())