Add settings to allow clients to choose which products and services use auto card capture as well as which card on file is used.
I think forcing the card on file to be used for ALL invoices set to that payment method is a real problem and both the admin and the client should be able to limit it to certain products and services (like recurring hosting and domains) while still allowing the admin manual charge card ability from the invoice actions.
Use Case: Web Development and Hosting Business
I don't know a single client for any web hosting and development business that would want a web development invoice of $5000 to be auto charged while they would want a recurring hosting service to be auto charged.
Another issue is when they go to the invoice and start to pay with that payment method that has a card on file but don't end up paying and leave the page...then the card will be auto charged because the payment method is set via that action by the client on mistake even though the admin user did not set that payment method for the invoice.
Also when the default payment method is set to that method admins may mistakenly leave that set when creating an invoice then the card is auto charged.
I imagine a new part of the client area that allows the user to set a payment method, choose a card on file and enable/disable auto payment for each service/domain/hosting currently signed up for plus a default setting for invoices that do not fall under a service. Then the admin will have this same ui for setting it in the back end. The admin can choose to allow the client to have access to these settings or not. If not then the only way to set it up for something is during the payment process as it is done now.
Note: This can be done by each gateway instead of WHMCS building it into the core if this were to happen https://requests.whmcs.com/responses/developer-gateway-capture-function-should-support-pending-response