byoweb,
First of all, since you receive all of the source code with DotNetInvoice, it's definitely possible for you or your developers to make all of these changes exactly as you need. It's also an option for us to do custom development for you. Our standard rate is $125 / hour.
1. In our next release, our recurring invoices will handle positive and negative valued line items and have the option to roll the previous balance into the next generated invoice. This balance is only per recurring invoice, not for all of the invoices that a client might have.
2. As noted above, balances will be carried forward to each recurring invoice that is generated. This would not include creating one off invoices and if you had 2 recurring invoices for a customer, each would carry their own balance.
3. If I understand correctly, you would like to have a list of items that may be billed to a customer each month and you would like to check whether each is included before the next month's bill is created. Currently, you could do this by removing items after one invoice is generated and then adding items as they apply during the month so that the correct invoice would be generated for the next month. If all of this information is stored in another system of yours, it would be possible to export invoices monthly from your system and import them into DotNetInvoice. You could also customize DotNetInvoice to look into your tables to create invoices or have your system add the items directly into DotNetInvoice.
4. DotNetInvoice currently allows you to select the date that invoices recur and how often you would like them to generate. You can set an invoice to generate 7/1 and then every one month after that. The next invoices would go out 8/1, 9/1, 10/1, etc.
For 1 and 2, if you need the credits to work over a client rather than just a recurring invoice, it is a more major change that we've had a few requests for in the past. The database will need some changes in order to allow payments to apply to a customer rather than an invoice. It is in our tracking system and will be considered when we look into features for the version after next.
For 3, we haven't had a request for something quite like this in the past. We would need a few more details about how you would want to work with it before we look into it for our next version or develop a quote for us to do it as a custom add-on for you.
Please let us know if you have any other questions.
---
Jeremy
DotNetInvoice Support