It's just to send you a reminder on the last weekday before your statement gets calculated. This is different than setting up autopay/paying off a statement manually. I still suggest using autopay for paying bills on time, but the goal is to reduce the balance in your monthly credit card statements by paying off the card ahead of time. This repository is for reminding you to do so on the last business day before your monthyl credit card cycle is up.
To maximize the utilization section of your credit score, it is best to practice the $2/$3 rule (TL;DR: Have a little usage as possible while still being registered as having some usage. $2 is the sweet spot for most credit cards, but some like Discover will count $2 as having no overall usage in the billing cycle, so we use $3 for such cards).
To best accomplish this, you should pay off all your cards before your credit card calculates the monthly statement except for 1 card. So when your FICO Credit score gets calculated, it sees you've used some of your credit line to count as having "usage", but your utilization is super low. This is key to maximizing your FICO score.
Your billing cycles might look like this:
Days 1-28: Use card(s) normally
Day 29: Pay off entire balance for all cards except one (for this one, pay off (balance - $3))
Day 30: End of statement, statement balance will be $3 for that card and $0 for all others
Day 31: Pay off $3 statement balance, go back to Day 1 and start over.
Franholio via Reddit
You should only use this if your billing cycles across all your cards ends on the last day of the month. This calendar file, once imported into your calendar, will set up a reminder that falls on the last weekday of each month.
If the .ical
isn't useful for you, this option is for you. I personally use this because my credit cards end their cycles on different dates.
Note that before using the script, please set up your billing cycles and cards in the BILLING_CYCLES
dictionary in reminder.py
. In addition, fill in your email details, as the default values will not work.
I scheduled my Python (3.8) script to run as a cron job using Google Cloud Platform. You can set this up on a local machine without GCP, but your machine will need to be running when the cron job is scheduled (unless you use anacron).
The frequency fo the cron job should be 0 9 * * *
, which will run the script daily at 9AM of whichever time zone you select in the GCP configuration. Alternatively, you can use 0 9 * * 1-5
to run this only on weekdays, which is what I have selected. Then, you'll only receive emails on weekdays.
Follow the documentation and create a free tier GCP account. Then, create a GCP project. Any name will do. I just named mine "credit card reminder" or something along those lines.
Go into the GCP Console and make sure you're using the project you just created by looking on the top left banner next to the Google Cloud Platform logo/text. Next, create a Cloud Function.
Basics
- Choose the first gen environment
- You can give the function any name
- For the region just select whichever region is closest to your location (or not, it won't make a noticeable difference for this project).
Trigger
- Use
Cloud Pub/Sub
for the trigger type - Create a generic topic to use. I left all 3 options unchecked (schema,message retention duration, customer managed encryption key). Whether or not you select the retry on failure option is up to you. I personally selected it.
Adding environment variables
- Activate a plan on GCP marketplace ( I use free plan, 12K mails/month)
- Create an api key in sendgrid
- Validate your sendgrid account email (use the email that you received)
- Expand the "Runtime, build, connection and security" section and click "Add Variable". Name should be "SENDGRID_API_KEY" and Value should be your SendGrid API Key.
Code Source
- Use
Python 3.8
and have the entry point besend_email
. - Update
BILLING_CYCLES
and the sender/recipient email addresses (theto_emails
andfrom_email
fields. - Paste the
reminder.py
file into themain.py
section. - In the
requirements.txt
, addsendgrid
into it.
Define The Schedule
- Go to the Cloud Scheduler console and select "Create Job" and give the job any name, description, and timezone.
- The region should be what region your function is in, and set the frequency to
0 9 * * *
, which will run the script daily at 9AM of whichever time zone you select in the GCP configuration. Alternatively, you can use0 9 * * 1-5
to run this only on weekdays, which is what I have selected. Then, you'll only receive emails on weekdays.
Configure the Execution Use a Pub/Sub type and use whichever topic you created earlier. The message can be anything arbitrary as long as it's not empty. We won't be using this field.
Configure optional settings
Set retries to 1
, and use the defaults for everything else.
Note that this script currently sends an email each day as a sanity check that it runs properly. However, you can disable this simply by indenting the code block after if days_until_next_action == 0:
so that it is a part of the if
statement. Then, it will only send when action is required (AKA when it is the last weekday day before your credit card provider calculates your statement).