Is it possible to change the Zero SubTotal Checkout function to allow anything less than or equal to zero?
So a negative grand total would not require a payment.
Magento have an option for Zero checkout.
Admin > System > Configuration > Payment Methods > Zero Subtotal Checkout
Select as per you need.
Ref link : http://docs.magento.com/m1/ce/user_guide/payment/zero-subtotal-checkout.html