Marty C's answer sounds like a good approach - create child objects under the subscription for each month (with the monthly subscription Dollar amount) and then report on them. You could create a button on the subscription that populates the child objects with the appropriate information (but you'll need to do some custom Apex coding to make it work).
A difficulty could arise if your subscriptions can change during the course of the term, then you would have to re-do your child objects. This would be fine, but you might lose your historical accuracy if you don't account for that.
If that isn't solving the problem, you may want to look at the Encore app. Encore is a renewals & subscriptions management app that’s built entirely on Salesforce.
Encore automatically creates and emails invoices based on your subscription billing requirements and gives you customizable reporting options. In addition, Encore can automatically process recurring payments. For example, it can automatically charge a customer’s credit card every month. And Encore can also provide a website/portal where customers can view their accounts on the web and make online payments. All entirely within Salesforce.
Here's the Encore AppExchange listing:
This answer is by Kinetic Growth. We made Encore to support sales of subscription products in Salesforce. Please contact us for more info at www.kineticgrowth.com/contact/