The fact that you are finding it difficult to explain indicates that there is an issue with the design, the expectations, or the perceived requirements.
Subscriptions automatically paid for, such as through a credit card? Is that why an
Invoice seems unnecessary? Or some other reason.
Your current state is:
Customers can purchase your products in one of two ways:
Invoices. Perhaps you need to bill them so as to be paid.
Subscriptions have no
Invoices. Perhaps subscriptions are automatically paid through a credit card, PayPal, etc.
Customer decides how to interact with you, that
Customer may have several
Subscriptions and also may place
Orders. And I would think that the customer could cancel the
Subscription whenever he wanted to.
Therefore, both you and your customer have reason to keep a complete trail of orders and fulfillments (whether
Subscription). That means that you do potentially want an
Invoice of some sort even for
Here are two ways to handle this, namely treat them as the same thing or as two different things.
Subscriptions create an
Invoice for the fulfillment of a subscription instance. The subscription
Invoice could have a different scheme (e.g. SUB-Number-Date) for identifying the subscription
Invoice than you would use for an
Invoice for an
Order (e.g INV:InvoiceNumber). [I would guess that the subscription
Invoice would be marked as already paid.]
Subscriptions log with a header for the subscription and a log to track each fulfillment. That allows you to track the details of each time
Customers have their
Subscriptions fulfilled. In the case that a subscription is cancelled early, it could be used to refund the customer the unused sum.
How your organization views your
Customers (person or businesses) will help you determine what is the best approach for your business.
What would I do? I would tend would separate the
Order Invoice from the more complex
Subscription Invoice. When needed a summary of the totality of Orders, Subscriptions, and (returns, reshipments, etc) can be produced for your company and for your customer.