This may be the shortest post I’ve ever written. I know that for many people this is a complex issue, worthy of hand-wringing and teeth-gnashing. For me, it’s absolutely not. To me, the answer to who pays for something to be redone when things go sideways is so very simple:
The person who makes the problem “pays” to fix the problem.
If you make an error, or if your tech fails, causing work to be lost or generally hosed up in any way, you “pay” to fix it by redoing the work and not charging a dime for it. And if the client’s tech fails (including services and apps the client pays for), or the client fails to give you all the info you needed, or the client’s P&P was wrong for any reason leading to an error, “paying” you to redo the work falls to the client.
Both contributing to what happened? Split it down the middle. Easy peasy.
There is no other fair way to deal with this, and I’m all about fairness.