I never ask for any money upfront. regarding materials, I get a quote for the materials from a builders merchants which has a order code printed on it, this way the customer can arrange payment to the merchants directly, either over the phone or going into the shop to pay.
I have had customers ask if I want money to pay for the materials, but I don't feel comfortable doing it that way. the only money I like to deal with is the money I get paid for the work I have completed
if it is a small job, like a couple hours repair work, I will pay for the materials myself upfront if its less than £100, it is just more convenient for me and the customer if I go and get the materials in question.
regarding labour.
if the job is a long job I will normally ask to get a payment at the end of each week, but each job and customer is different. I once did a 3 week job and didn't get paid till the end of it because I was comfortable and 100% trusting with that customer. the customer did keep asking if I wanted some money, but I kept saying we will sort it later. bit stupid of me really because it only takes a customer to have money issues or maybe to go bankrupt and I would be out of pocket.
Walkden Bricklaying, Huddersfield