I mark up materials 40% to 60% above what I pay. Let's look at what's involved in getting paint.
A typical purchase for us is 5 gallons. The supervisor must leave the job. He usually has a drive of 15 minutes or so each way. If it's a standard color, by the time he places the order, has the paint mixed, and is out the door, he could have another 30 minutes tied up. So that 5 gallons cost him an hour. It it's a custom match, he could have more time. But we'll say on average a gallon takes 12 minutes of time.
If my cost is $20 and I charge the customer $32, that leaves me $12 gross profit, or $60 per hour. That puts me right in the ballpark of what I charge the customer for our labor. Picking up paint thus becomes a part of our labor charge, though I charge for it in a different manner.
But we have other costs associated with this. First, the crew tends to be a little less productive when the supervisor is gone. Second, we must record the transaction in our books, and ultimately pay the bill. This takes administration time.
If I have a job calculated at X hours, I also have to allow time to obtain product. The markup takes care of this.
I do have exceptions. We have a regular job each summer that requires 100+ gallons. I have this delivered, and reduce my markup accordingly.