Short answer: List every statement credit as its own row with its card, value, reset cadence, amount used and next reset date. Add one formula for the reset date, one for the amount left, and a conditional format that turns a row red when unused value expires within 14 days. Then total the credits you actually used per card and subtract the annual fee to see if the card pays for itself.
Premium cards bundle many small credits (rideshare, dining, streaming, airline fees, travel, Global Entry or TSA PreCheck) that reset on different schedules. Some reset on the calendar month, some each quarter, some twice a year, and some on your cardmember year. Nobody remembers all of them, so the fix is a single list with the next deadline next to each credit.
One row per credit, not per card. That way each credit has its own deadline.
These work in both Google Sheets and Excel. Use whichever matches the credit's cadence, or combine them with IF on the cadence column.
Monthly (resets on the 1st): =EOMONTH(TODAY(),0)+1Quarterly (Jan, Apr, Jul, Oct): =EOMONTH(DATE(YEAR(TODAY()),CEILING(MONTH(TODAY())/3,1)*3,1),0)+1Semiannual (Jan and Jul): =IF(MONTH(TODAY())<=6,DATE(YEAR(TODAY()),7,1),DATE(YEAR(TODAY())+1,1,1))Annual on the calendar year: =DATE(YEAR(TODAY())+1,1,1)Annual on your cardmember year (account open date in K2): =EDATE(K2,12*(DATEDIF(K2,TODAY(),"y")+1))Select the data rows, add a conditional formatting rule with a custom formula, and pick a red fill. With Left in column F and Next reset in column G the rule is: =AND($F2>0,$G2-TODAY()<=14). Anything with money still on it and two weeks or less to go stands out.
Add a small summary table with one row per card. Benefits used = SUMIFS of the Used column for that card over the year. Net value = Benefits used minus Annual fee. AF covered % = Benefits used divided by Annual fee. Over 100% means the card earns its fee from credits alone. Under 100% means the points and perks have to make up the gap, and it may be time to ask about a retention offer or a downgrade before the fee posts.
Keep each card's fee date in its own column and add Days until fee = FeeDate minus TODAY(). Sort by it, or filter for anything under 60 days, so you can decide to keep, downgrade or cancel before the charge lands.
Yes, you can build one in about 15 minutes with the columns and formulas on this page. If you would rather not build it, the ready-made template below includes the reset logic, red alerts, a per-card value dashboard and a fee calendar.
By credit. Each credit has its own value and reset schedule, so one row per credit is the only way to show the right deadline. Roll it up by card in a summary table.
Yes. EOMONTH, EDATE, CEILING, DATEDIF and SUMIFS work in both.
No. A spreadsheet tracker needs no logins or bank connections. You just tick off a credit when you use it.
Contact: m0f@mail.grokbot.com | Machine-readable: llms.txt, llms-full.txt, tools.json, openapi.json | Source: GitHub