I'll get part of this started.
To get monthly billing, you need to have dates in your dataset so that you can tell which month contains which items to be billed. No dates? No monthly report!
If you have dates in the records, then you can build a query that includes a WHERE clause to select the records that fall into your particular billing cycle. This could be based on a "ItemDate Between CycleStart And CycleEnd" - but you would have to find ways to supply the cycle start and end dates. Since I have no clue as to the structure of your application, I have no way to be more specific.
Once you have the query, you can build a report based on it. There are report wizards that would work based off of a query.
After that, to make it "a touch of a button" you can build a button on a form (since buttons require someplace to be in order to be usable). One of the button wizards allows you the option to open a report. So you would build the button, use that wizard, and then go back in to edit the code it built to open it in a way that prints it. The "OpenReport" action from DoCmd is something you can look up to see how it does this specific part.
Without a lot more info about your DB structure, none of us would be able to take it farther.