As a hosting provider selling domains via eNom and other providers, it would be beneficial to me to add functionality to handle TLDs which require auto-renewal in advance of the expiration date. The number of such TLDs includes over 25 ccTLDs such as .EU, .FR, .AT, .DE and many other popular European ccTLDs.
WHMCS tries to renew these domains as if they were 'normal' TLDs and fails with a registrar API error. It invoices customers for the renewal (if WHMCS auto-renew is set, as it is by default), charges customers according to the renewal invoice and then fails to actually renew the domain because the registrar does not accept manual renew requests. This can lead to duplicate payments due to the failed renewal.
This should instead raise invoices earlier to ensure they are paid by the cut off date, and if the renewal is not paid on time cancel the domain/auto renew with the registrar provider or where this is not possible, raise a task for the web host to process this manually.
Part of this functionality could be achieved with a negative grace period to bring the next due date forward prior to the expiry date on a per TLD basis, but additional functionality to handle domain cancellation if not paid on time, and suppressing the renewal command where the TLD requires auto-renew.
As part of these changes, WHMCS should also hide the "renew" button for TLDs which do not support ad-hoc renewal.