For my startup, I'm designing a recurring option that allows users to recur a payment method, one of which happens to be monthly (another is tri-monthly).

Weekly should be fairly simple, since it's always defined by a number of days, which are pretty unambiguous (timezones aside).

I see a few options here:

  • Use the "day of the month" (if 29+, treat cases for leap years passing through February, handle months with 30/31 days by adding an extra day on the beginning of the month?)

  • Add X calendar days to the sub_start_date ... except, now I've got the problem of determining if I should use 30 or 31?

I can think of a couple, less reasonable alternatives but I have a feeling it's one of these two, but I'm not sure what's standard.

  • What's wrong with 'start your subscription with us for so and so on the first day of every month'?
    – insidesin
    Aug 11, 2015 at 10:35
  • You mean for the edge cases? Like just as a help-message of sorts?
    – jdero
    Aug 11, 2015 at 10:37
  • Huh? I don't really understand what you're asking I think.
    – insidesin
    Aug 11, 2015 at 10:52
  • Maybe I interpreted your comment incorrectly - do you mean that I should charge a person at a time other than their signup time? The whole purpose is to charge them on a "monthly" recurrence based on when they signed up. My question mostly pertains to the diversity of month size and how that is normally dealt with in the dev world.
    – jdero
    Aug 11, 2015 at 11:02
  • @insidesin Edge cases being those signups occurring on the 29th-31st, given that I do a "same day every month" setup (option 1), as opposed to an X-days setup (option 2).
    – jdero
    Aug 11, 2015 at 11:03

1 Answer 1


You are overcomplicating things. You define a monthly subscription fee/service not by when it occurs, but by how often.

I would suggest, rather than looking for a specific day within each month, i.e. 17th, 29th, 31st of the month; instead we use an offset from the start of the month.

We know that there are 12 months in a year, and each month starts on the 1st, so essentially we could offer something 'at the start of each month' i.e. 1st-3rd. We could also offer 'in the month', which would simply be an offset of say 14 days from the beginning of every month.

Edit: If a user purchases a subscription on the 15th, provide services until the next 15th, regardless. Do not charge a monthly fee more than 4 instalments of weekly subscription though as (4x7 = 28 days), where most months have significantly more.

  • @jdero, insidesin is right. The subscription can be on a montlhy basis. You can choose to charge for each month. If you find that unfair as not all months have the same amount of days, you can also choose to charge per day (but still only have subscriptions and billing for a full month). A related question to that issue can be found here: "How to apply a Changed a monthly plan?"
    – jazZRo
    Aug 11, 2015 at 12:08
  • Thanks @jazZRo - yes his solution is perfect for what I was thinking.
    – jdero
    Aug 11, 2015 at 12:17
  • 1
    For comparisons between maybe 4xWeekly purchases versus 1 monthly purchase, you could always offer the length of the Month as 'extra', as more often (always) there are more than (4x7) days in the month.
    – insidesin
    Aug 11, 2015 at 13:30

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.