This is the conversation most contractors avoid. Not the pricing math, the actual talking to the customer part. So they either eat the cost quietly or say nothing until it shows up on the invoice, and both of those go worse than just having the conversation.
Why the conversation feels harder than it is
Most contractors assume bringing up a cost will upset the customer or make them feel nickel and dimed. In practice, the opposite is usually true. What actually upsets customers is a surprise on the final bill they don't remember agreeing to. A clear conversation up front, even about money, reads as honest. A surprise later reads as being taken advantage of.
How to actually have it
Keep it short. You don't need to over-explain or apologize for the cost existing. State what changed, what it costs, and ask for a yes.
Say it before you do the work, not after. This isn't just about protecting yourself. It respects the customer's ability to say no or ask questions before they're committed.
Put a number on it, not a vague "it'll cost a bit more." Vague costs make people nervous. A specific number, even if it's not tiny, is easier for someone to say yes to than an unknown.
A simple script you can actually use
"Hey, so making that change means [what's different]. It'll add about $[X] to the total, mostly for [materials/extra labor]. Want me to go ahead?"
That's it. No over-explaining, no apologizing for having a cost. Just clear, and respectful of the fact that it's their decision.
If they push back
Most pushback isn't really about the price, it's about not expecting it. Restating the reason briefly ("it's the extra material plus the time to redo that section") usually resolves it. If they still say no, that's a completely fine outcome too, you avoided doing free work and they got an honest answer.