How to Set up Repeating Event in Google Calendar on Last Day of the Month

I ditched Microsoft a couple years back and went 100% Google. If you can’t beat em, join em. 😄 I left Microsoft Office 365 and went to Gmail. I moved from Verizon and a Windows Phone to Google Pixel and Project Fi. I don’t regret the decision as it’s made my life a whole lot easier. I don’t even have Microsoft Office installed anymore and just live on the web. However, once in a while there are things that pop up, and trying to set up a repeating event in Google Calendar on the last day of the month is one of them.

How to Set up a Repeating Event in Google Calendar (Last Day of Month)

I love Google calendar for its simplicity. And 99% of the time it does everything I need it to do just fine. However, the other day I had a new repeating event I needed to configure which would trigger on the last day of each month. After a little playing around and some quick research, I discovered there was actually no way to do this in Google Calendar. Sure you can go through each year and do it manually, but I like to set up repeating events with no end date (less work!).

By default, Google Calendar lets you set up the following repeating events:

  • Daily
  • Weekly on  Sunday
  • Monthly on the first Sunday
  • Annually on 1st of the month
  • Every weekday
  • Custom (repeat every day, week, month, year) and certain day with options for end date rules
Default options for repeating events in Google Calendar
Default options for repeating events in Google Calendar

As you can see, with all of the rules they have there is no way you can easily set up a repeating event on the last day of the month. Thankfully, there is a way to easily do this by creating a simple .ics file and importing it. Note: The following code and variations of it are floating around the web, but it was thanks to Dark Launch’s version that I got this working.

Step 1

First, open up your text editor (I use Sublime). Then paste in the following code:

SUMMARY:Pay Affiliates
DESCRIPTION:Send payment to affiliates.

I have filled out the above with examples, but the values you’ll want to update are:

  • SUMMARY: this is the name of your event
  • DTSTART;VALUE=DATE: yearmonthday (just choose whatever the next end of the month date is from your current month)
  • DESCRIPTION: The description of the event.
Create .ics event in Sublime
Create .ics event in Sublime

Basically how it works is the recurrence rule (RRULE) field with BYSETPOS=-1 causes the event to be the first day of the month minus 1 day. Note: You can’t edit the event later on. You can delete it and re-create it, but you can’t edit it.

Step 2

Save the above file as a .ics file. I simply saved mine as myevent.ics.

Step 3

Go to Google Calendar, click on the little + symbol next to “Add a friend’s calendar” and then on “Import.”

Import Google Calendar
Import Google Calendar

Step 4

Select your .ics file you saved earlier and ensure the calendar you want to import it on is selected below (only pertains to those of you with multiple calendars). Then click on “Import.”

Import .ics file to Google Calendar
Import .ics file to Google Calendar

Step 5

If everything worked correctly you should see a message “Imported 1 out of 1 event.” If you don’t, double check that you didn’t typo something in the code above. Then click “OK.”

Imported Google Calendar
Imported Google Calendar

Click on your calendar and you can verify that your repeating event now occurs on the last day of each month. You can see below it created it on April 30, May 31st, and so on. It repeats forever.

Google Calendar repeating event on last day of month
Google Calendar repeating event on last day of month

Alternative Option

As Dan commented below, there is also another way you could approach this.

Create the appointment in Outlook or another calendar that has better recurring appointment options and then invite yourself, accept it into your Google Calendar, then duplicate the appointment and delete the original invitation.


I realize many of you might not ever need this, but it definitely came in handy for me. I have and always will enjoy sharing little tricks and things I learn with you all. Anything that helps us be more productive right? 😃

Do you use Google Calendar at all? Between Trello and Google Calendar, my life is pretty much all laid out haha. If this was helpful, please let me know below in the comments!

Get More Stuff Like This

Marketing, WordPress, Blogging Tips, SEO and Reviews, once a week.

Thank you for subscribing.

Something went wrong.

20 thoughts on “How to Set up Repeating Event in Google Calendar on Last Day of the Month”

  1. I use Google calendar but have never thought of it as a tool to get reminded of important events.

    Thanks for sharing it and kudos on your decision to go all Google.

  2. That solved my problem, thanks! My first .ics file. There was one small glitch, but I’m OK with that. I changed BYSETPOS to -2, to start on the next-to-last day of the month. Worked fine for all future months, but started on the last day of the current month. I find it unacceptable that Google doesn’t support last-day-of-month, but with this technique I can even have next-to-last day!

  3. Without testing the above version verbatim, I first removed SU and SA from BYDAY in the ics file as I am only interested in the last weekday of the month. When I check the calendar after the import, it appears to have worked for me.

  4. Thanks for this tip, you extinguished my frustration with Google!

    Also note: while you can’t edit the recurrence schedule, you can edit other aspects of the appointment (time, notifications, invites etc.)

  5. Terrific! Thanks for this. I had the same experience as Fred changed BYSETPOS=-2 for 2nd last business day and the first month was on the last date, and then the rest were perfect. Probably if you select the correct DTSTART;VALUE=DATE (ie second last), then it would work seamlessly. I also deleted SU and SA, as i wanted workdays, and it worked great. Thanks again.

  6. This is marvelous! It’s working perfectly for the last weekday of the month. How could I edit it to be on the 15th, or Friday if the 15th falls on a Saturday or Sunday? I’m trying to enter my payday on the 15th of the month.

  7. This was fantastic! I tweaked it slightly so that it would show on my calendar at a specific time:
    SUMMARY:Mvelopes – Sweep Accounts
    DESCRIPTION:Mvelopes – Sweep Accounts.

  8. Hi

    This was so helpful, thank you! Any idea how one could set a recurring event up for a specific week day of the second last week of the month? For instance I want a recurring event for the second last Thursday of every month.

  9. Fantastic, works like a charm. I have to put in a reminder to pay my rent every month and this technique solved my problem.


  10. Good stuff, thanks.
    An even easier work around could be to use the ‘first day of the month’ entry but set the reminder to 1day before :)


  11. BYSETPOS doesn’t work how you describe. I couldn’t use it to choose the Saturday before the first Sunday for example (RRULE:FREQ=MONTHLY;BYSETPOS=-1;BYDAY=1SU). In your example, it actually works by making a set of all the days of the month and then choosing the last one from the set. That’s also why it works if you specify only business days. It chooses all the business days in a month and then chooses the last one.

    • Hey Allen, it works for me for the entire year. For example, on June 30, 2019, it set an event, which is a Sunday, but the last day of the month. And in August 2019 it falls on a Saturday, the 31st, last day of the month. So it works fine across weekdays. Unless I’m misunderstanding what you are trying to do?

  12. You can also create the appointment in Outlook or another calendar that has better recurring appointment options and then invite yourself, accept it into your Google Calendar, then duplicate the appointment and delete the original invitation.

  13. If Google is as good as they think they are, why don’t they have this basic recurring pattern (last, first, etc business day of the month) as a standard option? Workarounds are a sign of bad coding.

Leave a Comment