Accounting for pre-billed hours of service?

I’m trying to come up with the best way to sell a customer a “bundle” of hours, and then when service is rendered, I subtract from the available hours under the contract.

For example, customer buys 100 hours, and they have 12 months to use them. I need to find a way to submit a timesheet, and have it subtract from their currently un-used hours, and also find a way to give them a statement that shows their currently-available hours.

Anybody have a good method of doing this?