You would have to configure a proxy. The users, even though they access the internet using the WiFi, would be filtered through a local proxy between the router and the modem. This proxy would direct all traffic to a local website on the proxy or another location. It would restrict any communications on port 80 as well as any other port to the outside world until the user account has been through the proper authentication. Once authenticated, it will switch this user to a subscribed status and then pass through any traffic. All traffic will still be routed through the proxy server which will capture only the amount of traffic by that subscribed user. Once a threshold is reached, the user will either be banned, cooldown period, and/or must reload their account.
wow. totally did not read your question.. 
You should be able to track the information required for billing. The feature that you would be looking into is Accounting.
Accounting refers to the tracking of the consumption of NAS resources by users. This information may be used for management, planning, billing, or other purposes. Real-time accounting refers to accounting information that is delivered concurrently with the consumption of the resources. Batch accounting refers to accounting information that is saved until it is delivered at a later time. Typical information that is gathered in accounting is the identity of the user, the nature of the service delivered, when the service began, and when it ended.
FreeRADIUS is a modular, high performance and feature-rich RADIUS
suite including server, radius client, development libraries and
numerous additional RADIUS related utilities.
As the premiere open source RADIUS suite it is included as a standard package with numerous Operating Systems, has binary packages
for many others and has source available which is known to build on
almost anything. Production deployments include large scale
installations comprising multiple AAA servers with over ten million
users and millions of requests per day. It supports request proxying,
with fail-over and load balancing, as well as the ability to access
many types of back-end databases. Different classes of Authentication
requests can trigger access of different Authentication and
Authorization databases (with cascaded fall back), and Accounting
records can be simultaneously recorded in multiple different storage
databases and directories.