At submit time, you can have rules fire so that it does a check against your list to see if there is an existing invoice number. You'll need a secondary data connection to the list and then do a query on the invoice number to see if it returns any results.
Another option is that you could also create the invoice number on submit to ensure that it will always succeed.