Hi,
(for 1.38a).
I filter the payment methods so only COD is available when COD is selected as a shipping option.
In

catalog\includes\templates\CUSTOM\templates\tpl_checkout_payment_default.php

I get a validation error when only one payment option is available:
Code:
Info: reference to non-existent ID "pmt-cod"
This is the browser html for one payment method (with the id missing):
HTML Code:
<input type="hidden" name="payment" value="cod" /><label for="pmt-cod" class="PaymentTypeRadio">
This is the browser html (with the id in place) when there is more than one payment method (illustrated here with another method as COD is not available if not selected as a shipping method):
HTML Code:
<input type="radio" name="payment" value="ceca" id="pmt-ceca" /><label for="pmt-ceca" class="PaymentTypeRadio">
This is the code:
PHP Code:
<?php echo zen_draw_radio_field('payment'$selection[$i]['id'], ($selection[$i]['id'] == $_SESSION['payment'] ? true false), 'id="pmt-'.$selection[$i]['id'].'"'); ?>
<?php   
?>
<?php
    
} else {
        
?>
<?php 
echo zen_draw_hidden_field('payment'$selection[$i]['id']); ?>
<?php
    
}
?>
When there is more than one payment method the id parameter is passed ok as the fourth value of function zen_draw_radio_field.
When there is only one payment method the id parameter is not passed as the (omitted) third value of function zen_draw_hidden_field.

So I think the last line should be
PHP Code:
<?php echo zen_draw_hidden_field('payment'$selection[$i]['id'], 'id="pmt-'.$selection[$i]['id'].'"'); ?>
which validates,

regards
Steve