Two functions move by whole months:
=EDATE(start_date, months) returns the same day a number of months later (or earlier, with a negative number). From January 31 it lands on the last day of February, since February has no 31st.
=EOMONTH(start_date, months) returns the last day of the month, that many months away. EOMONTH(B2,0) is the end of B2's own month.
Add 1 to an EOMONTH to get the first day of the next month: =EOMONTH(B2,0)+1. "Due at the end of next month" is =EOMONTH(B2,1).
Both return a date number, so give the cell a date format if it shows something like 46112.