With Drupal Commerce and Commerce Payment, when no payment method is available on the checkout, it displays this message: Payment is not required to complete your order.
and the customer is still able to finish the checkout.
It's probably trivial, but I can't find a solution that doesn't involve calling a hook in a custom module.
The best solution would to actually display a webform when no payment method is available.