I think that's what FreeRADIUS does. The log indicates ... Error: Received conflicting packet from client ... Giving up on old request. And in the source code of FreeRADIUS (process.c: 1765) we have request_done (request, FR_ACTION_CANCELLED); which cancels the old conflicting accounting and then retains only the new It would be interesting to have at least more information about the canceled accounting because in the log we just have the Radius client, its port and the Radius packet ID. See line 1776 in process.c ERROR ("Received conflicting packet from" "client% s port% d - ID:% u due to" "unfinished request in module% s. Giving up on old request.", client-> shortname, packet-> src_port, packet-> id, old_module); In addition I do not know if the canceled accounting is in the accounting logs. There is too little information to possibly make a corrective post-processing of this cancellation