ИМХО - для начала поставить какой-то бесплатный/дешевый биллинг, который вас бы максимально устраивал по всем критериям (к примеру, уже упомянутый абиллс), далее - уже в работе определиться, что конкретно вам нужно от биллинга и чего не хватает в действующем, и на основании этого - уже решать, заказывать ли доработку действующего (автору/сторонним разработчикам/пилить самостоятельно), либо - писать новый, надергав частично код из действующего.
По поводу абиллса - да, код местами страшненький, кое-где явные костылики торчат, а кое-где - есть вещи, неподвластные человеческой логике (как пример - упорно тянущееся технологическое ограничение в 2гб на ппп сессию для Session-Octets-Limit даже при условии отсутствия лимитов траффика на ТП, решаемое добавлением в радиус-аттрибуты тарифного плана Session-Octets-Limit=0), но в целом - оно у нас функционирует уже 4-й год, периодически переживая апдейты с последующей накаткой изменений.