Alan,
DotNetInvoice uses ASP.NET Membership to control sign-on into the application. If your application is using it too, it should be a clean integration for you. You would need to add some custom logic that either looks for paid invoices from your code into DotNetInvoice or assigns a role, sets a flag, or sets a date in your database from DotNetInvoice when an invoice is paid.
You could use the DotNetInvoice recurring invoicing to generate yearly invoices for your customers. When they have an unpaid invoice, one of the methods above would be used to prevent them from logging in.
The DotNetInvoice license allows you to run one copy on one production server. If all of your sites talked to the same instance of DotNetInvoice, one license would be all that you need. If not, you would need one license for each copy that you are running. If you'd like to discuss your licensing needs with us, we may be able to work something out depending on your implementation plans. Email us at support@dotnetinvoice.com if you would like to go further into the licensing details.
Please let us know if you have any other questions.
---
Jeremy
DotNetInvoice Support