Check with Inter-Tel. We ran into this a while back. I seem to recall that we used something called Account Code Enforcer. Here is what the white paper from Inter-Tel states:

The System Account Code Enforcer, by Inter-Tel's CTI Solutions Group, enhances Inter-Tel's telephone system account code capabilities by creating an unlimited number of "enforced" optional account codes. The list of allowed account codes is maintained in a database that resides on the PC that is running this application. Phones on the switch are monitored for outgoing activity. When an outgoing call is detected, the associated account code is checked for validity. If the account number is not found in the local database, then the call is automatically disconnected and the call information is logged to a file.

The caller places a call by seizing a trunk, entering an optional account code feature code, entering an account code, and then dialing the number. If the caller fails to follow this procedure or enters an invalid account code, then the call will be disconnected.

The list of stations to monitor is programmable. Also, options are provided to select account code enforcement for local and/or long distance calls. The PC account code database can be updated on a daily basis.
The program is designed to work on a PC dedicated to perform "Call Routing" functions. The System Account Code Enforcer monitors selected stations and terminates invalid outgoing calls.