My mortgage comes out on the 1st of every month, cant believe how many 1st this year have been on a Bank Holiday or Sundays. So they take it out on the Friday night! 
Checked mine Barclays on line yesterday, monies gone out Friday 30th, but is datted 2nd Nov.
In the red again!
They cannot take it earlier than the date stated on the bill they can take it out after though If they are doing this I suggest words are had with them as the money is yours until they withdraw it on the specified date and should not affect your available balance until then 
But they are making the rules up to suit themselves again.
I have had a few chats with the TSB regards this and all you get is "you should have made sure the money was there then".
Sadly my income cant be advanced to suit the fact they take the payment early, I actually think they do it on purpose knowing they will make money from unauthorised overdrafts, plus the other thing is now there is twice the ammount of money in the account as goes out monthly they have not taken an early payment since.