A system for determining bandwidth usage from a plurality of subscribers in a cable network, the system comprising an engine component comprising a computer processor configured to receive Internet Protocol Detail Record, IPDR, data from an IPDR collection module and from a subscriber module; the engine component configured to receive requests from an API module to retrieve or manipulate data and to return a reporting result; the IPDR collection module configured to collect the IPDR data from a plurality of cable modems; and wherein the IPDR data collected by the IPDR collection module from the plurality of cable modems is normalized by the IPDR collection module executing a normalization algorithm prior to the engine component returning the reporting result, wherein the IPDR collection module executing the normalization algorithm calculates delta values representing the number of bytes of data uploaded and downloaded by each cable modem between a time T 1 and T 2, and pairs upstream and downstream service flows based on: upon a condition in which a given service flow has a service class name, then pair the given service flow with another service flow that goes in the opposite direction and has a similar name; upon a condition in which a service flow does not have a service class name then the service flow is paired with other service flows that do not have service class names and that go in either direction; the upstream and downstream service flows are only paired if the upstream and downstream service flows' begin times are no more than five seconds apart; and, the upstream and downstream service are only paired if the upstream and downstream service flows' end times are no more than five seconds apart. an engine component comprising a computer processor configured to receive Internet Protocol Detail Record, IPDR, data from an IPDR collection module and from a subscriber module; the engine component configured to receive requests from an API module to retrieve or manipulate data and to return a reporting result; the IPDR collection module configured to collect the IPDR data from a plurality of cable modems; and wherein the IPDR data collected by the IPDR collection module from the plurality of cable modems is normalized by the IPDR collection module executing a normalization algorithm prior to the engine component returning the reporting result, wherein the IPDR collection module executing the normalization algorithm calculates delta values representing the number of bytes of data uploaded and downloaded by each cable modem between a time T 1 and T 2, and pairs upstream and downstream service flows based on: upon a condition in which a given service flow has a service class name, then pair the given service flow with another service flow that goes in the opposite direction and has a similar name; upon a condition in which a service flow does not have a service class name then the service flow is paired with other service flows that do not have service class names and that go in either direction; the upstream and downstream service flows are only paired if the upstream and downstream service flows' begin times are no more than five seconds apart; and, the upstream and downstream service are only paired if the upstream and downstream service flows' end times are no more than five seconds apart. upon a condition in which a given service flow has a service class name, then pair the given service flow with another service flow that goes in the opposite direction and has a similar name; upon a condition in which a service flow does not have a service class name then the service flow is paired with other service flows that do not have service class names and that go in either direction; the upstream and downstream service flows are only paired if the upstream and downstream service flows' begin times are no more than five seconds apart; and, the upstream and downstream service are only paired if the upstream and downstream service flows' end times are no more than five seconds apart.