Не нужно привязываться к абсолютному времени. У каждого пользователя может быть свое время оплаты и сколько минут он может видеть контент (поесть 2 колонки, время оплаты, время истечения услуги). Далее раз в n минут проверяешь всех пользователей, у кого истек тариф, закрываешь услугу. Если скрипт не может осилить проход всех клиентов раз в минуту, увеличиваешь время и пишешь погрешность в тарифе.
Еще бы посоветовал не использовать одно поле "баланс", рано или поздно ты нарвёшься на дэдлоки, плюс очень вероятны ошибочные начисления. Лучше всего использовать систему дебета-кредита, где пишется вся история начисления или списания, а итоговую сумму в кошелке ты высчитываешь динамически.