Как рассчитывать дату ежемесячного биллинга?
Делайте как у других сервисов. Например: если сегодня 03.11.2021 21:33, подписка на 1 месяц будет к 03.12.2021 21:33, на 3 месяца — 03.02.2022, на пол года (6 месяцев) — 03.05.2022 и т.д. Я считаю это за стандарт и, честно говоря, даже не знаю сервисов, которые работают по-другому.
В том языке программирования, на котором делается проект, найдите функцию изменяющую дату/время на указанный промежуток: ИЗМЕНДАТА(месяц, +1, ДатаНачалаПериода), например.