Это не вопрос SQL Server или даже вопрос программирования - это бизнес-вопрос, на который может ответить только ваш бизнес-аналитик / заинтересованная сторона.
Чтобы развернуть, у вас есть дата ввода yyyy-mm-dd (давайте назовем это dt_entry, datetime) и день месяца, к которому причитается счет, давайте назовем это d (целое число).
Вы бы изготовили дату в том же месяце, что и дата ввода (обратите внимание, что для дат ближе к концу месяца вам необходимо получить некоторые разъяснения от бизнеса относительно того, каковы правила - возможно, используя какое-то раздвижного окна).
Таким образом, срок выполнения в форме даты будет dt_entry - DAY (dt_entry) + d (дата-время SQL Server может использовать простое целочисленное сложение для дней, нет необходимости в DATEADD).
Вы можете увидеть, где это вызовет проблему ближе к концу месяца, потому что d будет маленьким (скажем, 1), а дата входа будет большой (скажем, 31), а затем гипотетическая дата истечения действительно следующий месяц. Но что, если человек платит очень рано (например, 5-го за дату платежа 25-го)?
Кроме того, вам может понадобиться рассмотреть короткие месяцы, поскольку в феврале не может быть 31 февраля.
Все это проблемы программирования, на которые есть только бизнес-ответы.