Достаточно при каждом запросе, который имеет отношение к объявлению (старт\стоп\показ) запускать функцию, которая проверяет текущий баланс и, если он больше нуля, то рассчитывает новый баланс и показывает объявление. Как-то так, вроде ничего сложного.
Или необходимо чтобы сервер постоянно знал текущий баланс?