Yes - Forced Account Coding.
Here is how to do it using 4 digit 'PIN'
ADD-PERSI:TYPE=SYS,CDRACLEN=4,PIN10LEN=4;
CHANGE-PERSI:COPIN,10,PCODE,"ACCOUNT CODE",NO,,NO,TABLE,*0,UNICD,ONE,COS,NO,TIMEDISP,NO,YES,YES,YES,YES,1,NO,NO,NO,NO,NO;
add 2 sample account codes 0000 and 1234 for COPIN 10
ADD-PERSI

CODE,"0000"&"1234",10;
to remove an account code e.g. 1234
DEL-PERSI

IN,1234;
add in zero for a line for all dialplans except dialplan 10.
in dialplan 10 zero is for to activate pin 10
ADD-WABE:0,0&&9,,TIE,N;
ADD-WABE:0,11&&15,,TIE,N;
ADD-WABE:0,10,,APIN10,N;
for the dialplan 10 phones to dial out add as follows:
ADD-WABE:*0,10,,TIE,N;
copy all the LDPLN's that have 0-w-x etc. but change them to *0-w-x etc. so as
phones in dialplan 10 can dial out.
To make a phone have to put in a pincode to dial out change it into dial plan 10
example
CHA-SBCSU:STNO=8096,DPLN=10;
to change back to normal dialling out
CHA-SBCSU:STNO=8096,DPLN=0;
CDR:
to add *0 as 0 in CDR texts
ADD-RCUT:*0,0;
amend CDR mask in CDR Program to take account of PINS