In my opinion the handling of invoice numbers is the main feature of this module. This have to be stable but it isn't yet as we have some issues in mass generating invoices.
And I had some discussion on IRC and user group meeting about stability and interfaces for the invoice number.
Personally I'd like to have more flexibility with a token based number . The invoice number should more an ID possibly with strings inside if somebody need this. So maybe we call this external ID because there is still an internal ID which is an integer number used as entity ID. Currently it is very difficult to switch the invoice generation schema. When you change the setting there is some manual changing in database needed. And somebody wants a counter preset:
The interface idea is about using invoice numbers/external IDs from outside this module. This is useful if other business software or very special customized invoice number generation which is more complex then just tokenized generation. For this I will implement a hook or the call of an external function (defined in admin setting) which can be used in other modules to realize this. Maybe somebody want's to call a webservice to get the number. Then this can be done in a custom module. Or someone makes a module to manage invoice numbers on a central place for using in commerce invoice, manual invoice generation on a desktop and possibly providing a webservice where other business software and webshops can receive the invoice number togerther with commerce invoice.
There is an old ToDo-Comment there is probably a better way to do this in commerce_invoice_contrioller.inc (protected function generate_invoice_id()). Let's start working on this.