A cascading filter is suggested to prevent illegal robocalls. First, a simple table is used to filter calls based on source number and Caller Line Identification (CLID). Calls can either be allowed to reach the user, rejected and disconnected, or forwarded to the next stage of filtration, which includes a challenge to determine whether the caller is human. The challenge generally consists of the filter providing some simple instructions that the caller must follow. The instructions may either be provided in such a way that only a human could understand them, or they may be designed such that only a human could follow them. If human status is confirmed, the call is forwarded to the user; otherwise, the call may be rejected and disconnected or forwarded to an optional final filter to determine whether the robocall is legal or not. This final filter requires that, in order to be forwarded to the user, legal robocalls must meet certain conditions that cannot be met by illegal robocallers, such as possession of a unique digital license key. Once a call has been forwarded to the user, the user may have the option to report the call as an illegal robocall.