I know this is many years after the fact but I figured out a solution to this and figured I would post it in case someone else came across this thread...
Adding T00:00:00 to the end of the string doesn't solve it because what's happening is that when the formula adds one "+ 1" to the month string, it turns it into a single digit if your month is one of the first 9 months of the year. You need to create a field that will force a value with 2 digits and then incorporate that into your formula. So I ended up with three separate fields - possibly overkill but it works so here how it is set up:
1. Month_After_Received
Text field; its value is set by Date_Received.
2. Month_After_Recd_TwoDigits
Text field, its default value is:
concat(substring('00', 1, 2 - string-length(Month_After_Received)), Month_After_Received)
3. Date_Received:
// extract the month from this field and add 1 to it
a. Condition: When field changes
Action: Month_After_Received to: number(substring(., 6, 2)) + 1
// this is for all months other than December
b. Condition: substring(., 6, 2) != 12
Action: Date_Due = concat(substring(., 1, 4), "-", Month_After_Recd_TwoDigits, "-01T00:00:00")
// this is for December
c. Condition: substring(., 6, 2) = 12
Action: Date_Due = concat(substring(., 1, 4) + 1, "-01-01T00:00:00")