Вам нужен Cron для такого чего-то.
что если крон выполнится несколько раз
- это говорит о том, что вы не до конца понимаете, как работает крон, вам нужно почитать доки. Крон - это серверный демон, он выполняется сугубо по определенным датам/времени, вернее он вызываает команду, которая должна исполняться. нет возможности, чтобы крон выполнился 2 раза за день, если сконфигугрирован выполняться 1 раз в день.
а что если сервер упадет
- если у вас упадет сервер, то не важно, что вы будете использовать, крон или не крон, у вас просто все перестанет работать.
Кроме того, можно в таблицу где у вас хранятся данные о списании, добавить дату списания, и сверяться по ней, что даст гарантию того, что если дата списания сегодняшняя, то не списывать и тд. Вообще, такс на самом деле очень простой, заключается в конфигурации крона и написании достаточно простой команды для него с не очень сложной логикой и логгированием каждого списания.