It's a good question. We want Bitcoin acceptance to be straightforward for our users, so we deal with a failed confirmation on our side. We do not debit the user.
I suspect this is the reason Bitpay is able to waive fees completely: they do not take responsibility for unconfirmed transactions.
> Note: Regardless of the transaction speed settings, a fully paid invoice is credited to your merchant account after the transaction has accrued six confirmations. [1]